回 帖 发 新 帖 刷新版面

主题:简单小程序帮帮忙啊~

谁能帮我编下啊~谢谢了啊~
int num
计算出所有各位上得数字总和,比如数字是1256,SUM=1+2+5+6=14;
请大家帮帮忙啊~!!!

回复列表 (共16个回复)

11 楼

用ascii再转换成数字,厉害。不过给人感觉绕了个圈子,还是药店的算法精妙。

12 楼

用指针做好象也行吧!还很简单

13 楼

我觉得药店的算法和我的思想一样!!!!我觉得那样很简单了!

14 楼

我写的两个程序
第一个结构简单,连取模运算都没用,初学者也应能看懂
第二个和药店的区别在于
药店的是5+4+3+2+1,而我的是1+2+3+4+5
且,如果题目是只加前两位,则只需将while循环改成s=*p-'0'+*(p+1)-'0';
如果题目是只加个位和十位,则只需将while循环改成s=*(p+strlen(p)-1)-'0'+*(p+strlen(p)-2)-'0';

呵呵!又在绕圈子了,不过想成为高手还是研究研究吧。

另,为什么不给我评分呀!!!

15 楼

TO hoofa, 下面你的这个程序肯定不能通用,要知道,在16位机上或者16位编译器上,int的表示范围是(-32768, 32767),你看看你的int num=123456,都超出这个范围了,你得出的结果肯定不对阿。
/*一般的算法,绝对可用*/
#include<stdio.h>
void main()
{
int num=123456,s=0,t;
while(num>0)
{
t=num;
num=num/10;
s+=t-num*10;
}
printf("%d",s);
}

16 楼

#include"stdio.h"
int main()
{ unsigned int a,s[5];
  while(scanf("%d",&a)!=EOF&&a)
  {for( ;a>=10;)
   {
    s[0]=a%10;
    s[1]=(a%100)/10;
    s[2]=(a%1000)/100;
    s[3]=(a%10000)/1000;
    s[4]=a/10000;
    a=s[0]+s[1]+s[2]+s[3]+s[4];
   }    
   printf("%d\n",a);
  }
return 0;
}

我来回复

您尚未登录,请登录后再回复。点此登录或注册