主题:简单小程序帮帮忙啊~
DragonCat
[专家分:0] 发布于 2003-07-02 21:04:00
谁能帮我编下啊~谢谢了啊~
int num
计算出所有各位上得数字总和,比如数字是1256,SUM=1+2+5+6=14;
请大家帮帮忙啊~!!!
回复列表 (共16个回复)
11 楼
润菜 [专家分:100] 发布于 2003-07-03 22:27:00
用ascii再转换成数字,厉害。不过给人感觉绕了个圈子,还是药店的算法精妙。
12 楼
hanwenjun [专家分:0] 发布于 2003-07-04 21:01:00
用指针做好象也行吧!还很简单
13 楼
那一年 [专家分:0] 发布于 2003-07-07 09:55:00
我觉得药店的算法和我的思想一样!!!!我觉得那样很简单了!
14 楼
hoofa [专家分:550] 发布于 2003-07-08 19:52:00
我写的两个程序
第一个结构简单,连取模运算都没用,初学者也应能看懂
第二个和药店的区别在于
药店的是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 楼
meteor135 [专家分:6060] 发布于 2003-07-30 13:41:00
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 楼
wangrui [专家分:0] 发布于 2005-06-14 23:30:00
#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;
}
我来回复