用 C 语言编写一个程序,该程序将接受一个自然数 n,并输出大于或等于 n
且所有数字均为偶数的十进制的最小自然数。例如,如果n = 16
,则应输出20
,如果n = 41
,则应输出42
>。
我已经尝试过:
#include <stdio.h>
int main(void) {
int n, i, condition = 0;
scanf("%d", &n);
for (i = n; i >= n; i++) {
if (i % 2 == 0) {
i = i / 10;
while (i > 0) {
if (i % 2 == 0) {
i = i / 10;
condition = 1;
} else {
break;
}
}
} else {
condition = 0;
}
if (condition == 1) {
printf("%d", i);
break;
}
}
return 0;
}
为什么这不起作用?
最佳答案
您在将 i 设为 0 后打印它,即将它除以 10,直到出现第一个数字。因此,它在每种情况下都会打印 0。
相反,您应该尝试将 i 的值分配给另一个变量,这样您就不必更改 i。此外,在第一次迭代变为 0 后,由于 for 循环中的要求 i>=n,它不会进行其他迭代。
#include <stdio.h>
int main(void) {
int n;
scanf("%d", &n);
for (int i = n; i >= n; i++){
int num = i;
int cond = 0;
while(num>0){
int dig = num%10;
if(dig%2 != 0){
cond = 1;
break;
}
num/=10;
}
if (cond ==0){
printf("%d",i);
break;
}
}
return 0;
}
关于c - 用C编写一个程序,输出大于或等于n且所有数字都是偶数的最小自然数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41312289/