怎么方便的把这些数字加起来

succulent_lily 2009-04-29 08:56:44
有个数字,总共n位
比如
234,有3位,2是百位,3是十位,4是个位
当然,只是假设而已了,这个n事先是不知道的,但某位上的具体数字和他对应的位数是可知的
比如
a是n位的,b是n-1位的,c是n-2位的,...............,f是个位的
这个数字的总和就是
a*10的n-1方+b*10的n-2次方+......f*10的n-n次方(f*1)
那么,怎么去实现呢

我是这么做的
for(i=0;i<n;i++)
{
//获得相应位数的值,比如a\b\c等等,赋值给K
for(j=0;j<n-i;j++)
{
K=K*10;
}
sum+=K;
}
大家看这样可以吗
...全文
134 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
lovekobexd 2009-04-30
  • 打赏
  • 举报
回复
用数组做
因为C中最长的也就是long long 型,如果你的程序越界了呢?
所以我建议用数组,数组中每一个元素存的是那个数值的每一位的数值
KevinHo 2009-04-29
  • 打赏
  • 举报
回复
说清楚啊
lixun_21 2009-04-29
  • 打赏
  • 举报
回复
sum=0;
for(i=n;i >0;i--)
{
//获得相应位数的值,比如a\b\c等等,赋值给K

sum=sum*10+K;
}
lixun_21 2009-04-29
  • 打赏
  • 举报
回复
sum=0;
for(i=n;i >0;i--)
{
//获得相应位数的值,比如a\b\c等等,赋值给K

sum=sum*10+K;
}
pathuang68 2009-04-29
  • 打赏
  • 举报
回复
思路是正确的,没有问题:)
烈火蜓蜻 2009-04-29
  • 打赏
  • 举报
回复
你最好从个数开始加,这样算法的效率比较高,而且我觉的这样的运行,主要是用在一个数是用数组来表示时的应用,主要应用于超大数据的加减乘除运算
magipan 2009-04-29
  • 打赏
  • 举报
回复
char arr[]="12345678";
long num=0,k,i,j;
for(i=0;i<8;i++)
{
k=arr[i]-'0';//k获得相应位数的值
for(j=1;j<8-i;j++)//乘以一些个10,你的确多乘了一个
{
k*=10;
}
num+=k;
}
printf("\n%ld\n",num);
qitianying 2009-04-29
  • 打赏
  • 举报
回复
for(i=0;i <n;i++)
{
//获得相应位数的值,比如a\b\c等等,赋值给K
for(j=0;j <n-i;j++)
{
K=K*10; 你是怎么取值的?要是从低位开始取值,你这个是不是乘的不对,k值应该是乘的10的倍数越来越多,而要是先从高位取值就是没有问题
}
sum+=K;
}
liangkaiyu 2009-04-29
  • 打赏
  • 举报
回复
	for(i=0;i <n;i++) 
{
//获得相应位数的值,比如a\b\c等等,赋值给K

//for(j=0;j <n-i;j++) //多乘了一个10

for(j=1;j <n-i;j++)
{
K=K*10;
}
sum+=K;
}

  • 打赏
  • 举报
回复
神啊,你语文好差
black_night 2009-04-29
  • 打赏
  • 举报
回复
输入是什么?
输出是什么?
说清楚
nicholasfly 2009-04-29
  • 打赏
  • 举报
回复
lijingjie1985718 2009-04-29
  • 打赏
  • 举报
回复
不懂撒

69,381

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧