C程序打印给定数字的数字平方和?

时间:2015-02-11 15:13:03

标签: c sum digits

我想写一个c程序,打印给定数字的平方和。 例如,如果给定的数字是456,则输出将是4 ^ 2 + 5 ^ 2 + 6 ^ 2 = 16 + 25 + 36 = 77。

所以我写了这段代码,我想知道为什么它不起作用,如果用户给出一个数字,如100,101,102或200,300等。它适用于其他数字。我想这与dowhile循环有关。请帮帮我。

#include<stdio.h>
#include<conio.h>
#include<math.h>
main()
{
 int n,t=0,r,q;
 printf("Enter the number to be tested: ");
 scanf("%d",&n);
 q=n;
 do
 {
      r=q%10;
      t=t+pow(r,2);
      q=q/10;
 }
 while(q%10!=0);
 printf("%d",t);
 getch();


}

2 个答案:

答案 0 :(得分:3)

您的停止条件错误:只要您以十进制表示形式达到第一个零,q%10!=0就会变为“真”。例如,对于数字6540321,您的程序将添加3 2 +2 2 +1 2 ,并停止,因为下一个数字恰好为零。永远不会添加6,5和4的正方形。

使用q != 0条件来解决此问题。另外,考虑更换

t=t+pow(r,2);

更简洁,更像C

t += r*r;

答案 1 :(得分:2)

更改

while(q%10!=0);

while(q);

的缩写
while(q!=0);

这样做是为了防止在q的值为10的倍数后循环结束。