C语言编程。。。。给定一个自然数n,求其各位数字之和,重复上一过程,一直得到1~9之间的数。

例如数字1234的各位数字之和为10,继续计算,得到10的各位数字之和为1。。

编一个复杂的,也是很浪费时间的,走了很多弯路的程序给你。嘿嘿
# include <stdio.h>

int shi(int bb)
{ int b1 = 1, b2;

if (bb == 0) return 1;
else for (b2 = 0; b2 < bb; b2++)
b1 *= 10;
return b1;
}

int geshu(int a)
{ int j = 0;

do{
a /= 10;
j++;
}while(a != 0) ;

return j;
}

int he(int kk, int nn)
{ int sum=0, b, aa;

for(b = 0; b < nn; b++)
{ aa = (kk%(shi(b+1)))/(shi(b));
sum = sum + aa;
}

return sum;
}

main()
{ int i, n;

printf("输入数据:\n");
scanf("%d", &i);
if (i < 10) printf ("%d", i);
else { do{
n = geshu(i);
i = he(i, n);
}while(i > 9);

printf("%d", i) ;
}
}
下面这个是一个简单的。
# include <stdio.h>

main()
{ int i, n, sum = 0;

printf("输入数据:\n");
scanf("%d", &i);

while(i > 9)
{ while(i > 0)
{ sum = i%10;
i /= 10;
}
i = sum;
}

printf ("%d", i);
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-12-08
#include<stdio.h>
void main()
{
int n,sum;
printf("输入要处理的数:\n");
while(scanf("%d",&n)&&n!=0)//输入0就截止。
{
for(sum=0;n!=0;)
{
sum+=n%10;
n=n/10;
}
printf("%d\n",sum);
}
}
第2个回答  推荐于2018-04-13
#include <stdio.h>
void main()
{
int n;
int sum = 0;
scanf("%d", &n);
while (n)
{
sum += n % 10;
n /= 10;
}
while (sum < 1 || sum > 9)
{
n = sum;
sum = 0;
while (n)
{
sum += n % 10;
n /= 10;
}
}
printf("%d\n", sum);
}本回答被提问者和网友采纳
第3个回答  2011-12-08
#include<stdio.h>

void main()
{
int n,sum=0,temp,count;

scanf("%d",&n);
temp=n;

do{
while(temp>9)
{
sum+=temp%10;
temp/=10;
}
sum+=temp;

if(sum<10) break;
else
{
temp=sum;
sum=0;
}
}while(1);

printf("%d\n",sum);
}
相似回答