这题是汕头大学的1021道题:答案是: #include<stdio.h> #include<stdlib.h> int change() { char x; int sum=0; scanf("%c",&x); if(x!='0') { do { sum=sum+x-48; scanf("%c",&x); }while(x>=48); } else return(0); return(sum); } int root(long x) { int sum=0; while(x>9) { sum=sum+x%10; x=x/10; } return(sum+x); } int main() { int x; x=change(); while(x) { do { x=root(x); }while(x>9); printf("%d\n",x); x=change(); } } 分析:1这题的思路很简单,就是把数相加,一般来说第一次加完都是只剩下两位数的了,但是那些试验 的数据有点BT,所以呢?在main语句最后一句时在调用一次change函数。 2change函数的作用就是实现把读进来的数进行相加,为了避免读入的数过大,还是使用了读字符 的方法,然后通过减掉48来变成它相应的整数。 3root函数的作用其实很明显了,应为经过第一次相加以后,剩下的一般来说都是两位数了,应此 root的作用就是实现两位数的十位和个位的相加。 4为了避免读入的数过大,在最后一句添加了,令一个change函数。

评论