网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
07月21日漏签0天
c语言吧 关注:798,843贴子:4,357,535
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 1 2 下一页 尾页
  • 82回复贴,共2页
  • ,跳到 页  
<<返回c语言吧
>0< 加载中...

禁用数组

  • 只看楼主
  • 收藏

  • 回复
  • 心眼观物
  • 彩虹面包
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
,我是不是已如魔道了,对数组深恶痛绝啊,说几个常见的小白题.
1. 求10个数的平均数
假定前n-1个数的平均数是a,第n个数是num,那么前n个数的平均数是((n-1)*a+num)/n=a+(num-a)/n
所以有递推公式a=a+(num-a)/n,写成代码
#include<stdio.h>
int main()
{
int i=1;
double average=0,num;
while(scanf("%lf",&num)) //输入非数字终止循环
{
average+=(num-average)/i++;
}
printf("%.4f",average);
return 0;
}
上面的程序可计算任意个数的平均数
现在问题来了,输入一个int类型的数,将数字单个分开
例如: 输入12345, 输出1 2 3 4 5
要求: 禁用数组,禁用递归,禁用数值转字符,


  • 我是不是师兄
  • 帕秋莉糕
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
int n;
for(int i=0; i<5; ++i)
{
scanf("%1d", &n);
printf("%d ", n);
}


2025-07-21 04:49:11
广告
  • 心眼观物
  • 彩虹面包
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
再来一个小白题
禁用数组
求a+aa+aaa+aaaa+...直到连续n个a


  • wxd356
  • 麻婆豆腐
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
char a;
do{
a=getchar();
if(isdigit(a)) putchar(a);
putchar(' ');
}while(isdigit(a));


  • 嘤嘤嘤荫
  • 彩虹面包
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
哇哦。


  • 谢应宸
  • 超能力者
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼


  • 谢应宸
  • 超能力者
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼


  • a327380135
  • 彩虹面包
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include <stdio.h>
int main ( void )
{
int shit=0,fuck=0;
scanf("%d",&shit);
while ( shit )
{
fuck=fuck*10+shit%10;
shit/=10;
}
while ( fuck )
{
printf("%-2d",fuck%10);
fuck/=10;
}
return 0;
}

http://codepad.org/oKfhrilH


2025-07-21 04:43:11
广告
  • a327380135
  • 彩虹面包
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
a+aa+aaa+aaaa+...=a(1+11+111+1111+....)=a[ (10-1)/9 + (100-1)/9 + (1000-1)/9 + ... + (10^n - -1)/9] = a/9*[10+100+1000+...+10^n-n] = a/9*{ [10^(n+1)-10]/9-n }

#include <stdio.h>
long long pow_I ( int x );
int main ( void )
{
int n,a;
long long sum;
scanf("%d%d",&n,&a);
sum = ( ( pow_I ( n+1 ) - 10 )/9 -n )*a/9;
printf("%lld",sum);
return 0;
}
long long pow_I ( int x )
{
long long test=1;
for ( int i =1 ; i <= x ; i++ )
test*=10;
return test;
}
http://codepad.org/pXjWl3xl


  • a327380135
  • 彩虹面包
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

帖子复活了。。。。窝来水一发其实.....第一个还有其他方法来着。。。。


  • 心眼观物
  • 彩虹面包
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
//12345分开成 1 2 3 4 5
#include<stdio.h>
int main()
{
int num,temp,exp=1;
scanf("%d",&num);
temp=num;
while(temp>=10)
{
exp*=10;
temp/=10;
}
temp=num;
while(exp>0)
{
printf("%d ", temp/exp%10);
exp/=10;
}
return 0;
}


  • 小_埃
  • 彩虹面包
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
@心眼观物 不算作弊吧,就是浪费了点时间,每次从头算一遍……
#include <stdio.h>
int main(void)
{
int a = 9;
int n = 1000;
int sum;
int carry = 0;
int i, j;
for (i=n; i>=0; i--)
{
carry = 0;
for (j=0; j<=i; j++)
{
sum = a * (n - j) + carry;
carry = sum / 10;
}
if (i == n && sum % 10 == 0)
{
continue;
}
printf("%d", sum % 10);
}
return 0;
}


  • 小_埃
  • 彩虹面包
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
其实不管怎么样,除非你的数组是hardcoded在源代码里的,否则都是代码计算出来的,彻底禁用数组也行,所有东西都是每次用的时候现场计算就是了,空间换时间,时间换空间,永恒的话题啊,唉……


  • 谢应宸
  • 超能力者
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
还可以用结构体代替数组 或者用变量位操作来代替数组


2025-07-21 04:37:11
广告
  • 汇蓝鸟
  • 麻婆豆腐
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
void InvPint(int n)
{
n&&printf("%d ",(InvPint(n/10),n-((n/10)*10)));
}
int main()
{
int n;scanf("%d",&n);InvPint(n);
}


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 1 2 下一页 尾页
  • 82回复贴,共2页
  • ,跳到 页  
<<返回c语言吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示