如:输入12345,1+2+3+4+5=15,1+5=6) 结果为6;
输入123, (1+2+3=6) 结果为6。
我给你说下简明的思路
首先,这题目是一个求各位数的和
那么我们可以利用求模运算求出各个位数上的数(当然用指针偏移也可以达到这个效果)
其次我们要对求出来的和进行再判断,它是否大等于10
如果大等于10,方法同上;如果小于10,输出
下边是代码:
#include<stdio.h>
int main()
{
int i,sum=0,x;
scanf("%d",&i);
if(i>0)//判断你输入的值是否非负,如果非负,这执行下边代码
{
while(i>=1)
{
sum+=(i%10);
i/=10;
}
while(sum>=10)
{
x=sum;
sum=0;
while(x>=1)
{
sum+=(x%10);
x/=10;
}
}
}
else sum=-1;//如果你输入的是负数,那么就给sum赋上-1,这个作用相当于bool型,当然C99标准里是有bool型,只是我给忘记了而已
if(sum!=-1)printf("%d\n",sum);
else printf("error\n");
getch();
return 0;
}
其实,在这个main中,我们两次用到
sum+=(i%10);
i/=10; 这种运算
我们完全可以给它独立写成一个定义函数,让我们调用就可以