Online Compiler C

#include <stdio.h> int main(void) { int a,x,y,z,REST,n; scanf("%d",&a); x=a/100; REST=a%100; y=REST/10; REST=(a%100)%10; z=REST; n=x+y+z; printf("%d",n); return 0; }
这段代码的功能是:读入一个三位整数,计算其各位数字之和并输出。

代码逻辑基本正确,但有一个小问题:在计算个位数时,`REST=(a%100)%10` 这一行虽然结果正确,但写法不够简洁。更关键的是,你随后将 `z=REST`,但此时 `REST` 已经是 `(a%100)%10` 的结果,也就是个位数,所以最终结果是对的。

不过,代码中变量 `REST` 被重复赋值,容易引起混淆。建议思考:如何用更清晰的方式分别得到百位、十位、个位,而不需要反复使用 `REST`。

- 提示1:计算十位时,你用了 `REST=a%100` 再除以10,但之后又用 `REST=(a%100)%10` 覆盖了原来的值。想一想,是否可以直接用 `a` 本身来得到个位,而不依赖中间变量?
- 提示2:注意变量命名,`REST` 含义不明确,可以考虑用更有描述性的名字,或者直接省略中间变量,用一步表达式得到每个数位。