int a,temp = 0;
scanf("%d", &a);
while (a != 0 || temp > 9) {
if (a == 0) {
a = temp;
temp = 0;
}
temp += a % 10;
a /= 10;
}
printf("%d", temp);
while的条件 a!= 0 || temp > 9只要有一个为真,就执行循环体,来看几个数,
当输入-1时,a!= 0成立,执行循环体
当输入0时,a!=0 不成立,temp > 9不成立,循环体不执行,直接显示temp的值,结果就是0;
当输入1时,a!=0成立,执行循环体
当输入10时,a!=0成立,执行循环体
从上面可以看出,只有当输入0时,循环体不会被执行,当输入其它值时,循环体执行。
假设输入1,此时a = 1, a!=0成立,执行循环体,if条件a==0不成立,if语句不执行,temp += a%10 = 1,a/=10 = 0; 继续判断whilei循环,此时a!=0和temp>9都不成立,所以结束循环,显示1
以此类推。。。