c - 用C编写一个程序,输出大于或等于n且所有数字都是偶数的最小自然数

标签 c math radix

用 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/

相关文章:

c - 如何将所有元音从字符串移动到不同的数组

c# - 给定 Vector3 列表和距离,如何计算分段线上的点?

C# 创建具有自定义属性的基本表单

C++:我可以编写一个从 T 派生的模板类吗?

c - 从 unsigned int 到 char 指针的类型转换中的段错误

将 32 位网络命令转换为 C 中的主机

java - 使用 JNI 使用 Windows 命名管道的 Java 程序的 IPC

c++ - 优化 C++ 中的模块化算术计算

swift - 生成包含其他数组的加权平均值的数组

python - 如何将十进制数转换为具有最小值的基数?