我正在尝试执行以下代码。当我用if(n> 9)替换while(n> 9)时,下面的代码运行良好。有人可以解释一下为什么while循环导致此错误吗?
这是代码
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int n, digit, i, sum = 0;
scanf("%d", &n);
for (i = 0; i < 5; i++)
{
digit = n % 10;
while (n > 9)
{
n = (n - digit) / 10;
}
sum = sum + digit;
}
printf("%d", sum);
return 0;
}
答案 0 :(得分:0)
printf()
格式字符串的调用以'\ n'结尾,因此数据立即输出到终端
显示一种适当的方法来从“ int”中提取数字并收集这些数字的总和。现在,建议的代码:
#include <stdio.h>
int main( void )
{
int n;
int digit;
int sum = 0;
if( scanf("%d", &n) != 1 )
{
fprintf( stderr, "scanf for initial value failed" );
return 1;
}
while( n )
{
digit = n % 10; // extract a digit
n /= 10; // reduce the working number
sum = sum + digit;
}
printf("%d\n", sum); // use '\n' so value immediately output to terminal
return 0;
}