王鹿其 发表于 2023-9-27 20:53:31

修改以下代码,使打印出的正偶数按升序排列

int main()
{
        int a;
        printf("请输入一个整数:");
        scanf("%d",&a);
       
       
        if(a%2==0){
                while(a>0){
                        printf("%d ",a);
                  a=a-2;
                }
               
        }
        else{
                int b=a-1;
                while(b>0){
                        printf("%d ",b);
                        b=b-2;
                       
               
                       
                       
                }
               
                printf("\n-------------");
        }
       
       
       
        return 0;
}

isdkz 发表于 2023-9-27 20:53:39

修改后的代码如下:

#include <stdio.h>

int main() {
    int a;
    printf("请输入一个整数:");
    scanf("%d", &a);

    int start = (a % 2 == 0) ? a : a - 1; // 根据a的奇偶性确定起始值
    for (int i = start; i > 0; i -= 2) { // 从起始值开始,每次减2
      printf("%d ", i);
    }
    printf("\n");

    return 0;
}


修改思路:

1. 根据输入的整数a的奇偶性确定起始值,如果是奇数,则起始值为a-1,否则起始值为a。
2. 使用for循环从起始值开始,每次减2输出正偶数。
3. 输出完毕后换行。

这样就可以按升序排列打印出正偶数了。

Mike_python小 发表于 2023-9-27 20:54:08

修改后的代码如下:


#include <stdio.h>

int main() {
    int a;
    printf("请输入一个整数:");
    scanf("%d", &a);

    if (a % 2 == 0) {
      // 如果输入的是偶数,则直接输出所有偶数,并按升序排列
      int i = 2;
      while (i <= a) {
            printf("%d ", i);
            i = i + 2;
      }
    } else {
      // 如果输入的是奇数,则先输出最大的偶数,再输出所有偶数,并按升序排列
      int max_even = a - 1;
      printf("%d ", max_even);
      while (max_even > 0) {
            max_even = max_even - 2;
            printf("%d ", max_even);
      }
    }

    printf("\n");
    return 0;
}


在这个修改后的代码中,我们增加了一个变量 i,其初始值为 2。如果输入的是偶数,则使用 while 循环从 2 递增地打印出所有的正偶数,并且保证按升序排列。如果输入的是奇数,则先输出最大的偶数,然后再输出所有偶数,并按升序排列。

输出示例:

输入:7

输出:2 4 6

希望能帮到你。如果还有其他问题,请随时提问。

球一个最佳答案谢谢啦!这对我非常重要!{:10_254:}{:10_254:}{:10_254:}
页: [1]
查看完整版本: 修改以下代码,使打印出的正偶数按升序排列