#2606. [GESP202512 二级 C++] 第 13 题
[GESP202512 二级 C++] 第 13 题
漂亮数的定义是:如果N能被M整除,或者某位是M,或者N的每位数之和能被M整除,则说N是M的漂亮数。如果三个条件都满足,则是完整漂亮数。123是3的完整漂亮数,因为123能被3整除,也含有3,其每位数之和为6也能被3整除。下面的代码用于判断N是否为M的完整漂亮数并输出。相关说法正确的是( )。
int N, M, Flag, Sum, num;
cout << "请输入N,不等于0的正整数:";
cin >> N;
cout << "请输入M:M必须大于1小于9:";
cin >> M;
Sum = 0; // 记录各位数之和
Flag = 0; // 假设记录N不含有M
while (N != 0){
num = N % 10;
Sum += num;
if (num == M)
Flag = 1;
N /= 10;
}
if ((N % M == 0) && (Flag == 1) && (Sum % M == 0)) // L1
printf("%d 是 %d 的完整漂亮数", N, M);
else
printf("%d 不是 %d 的完整漂亮数", N, M);
{{ select(1) }}
- 代码能完成题目设定目标。
- 在
while循环中N最终将变成0,因此L1行代码中N % M将总是满足条件,可以在while前增加一行代码int old_num = N;,并将L1开始这4行代码中的N都改为old_num就可以做出正确的判定。 while循环中if判断语句可以增加else子句,其内容为Flag = 0。- 如果先后输入
0和3,则肯定会输出0是3的完整漂亮数。