c - 是否可以创建一个接受 3 个整数并输出奇数/偶数整数而不使用数组的程序?

标签 c

我们的老师给我们做了一个C语言练习。我们必须创建一个程序,接受三个整数并输出它们的奇数或偶数,而不使用数组,只能使用循环和条件语句。 我只允许使用 scanf()、printf()、循环和条件语句。我不能有多个变量,如 odd1、odd2、odd3、even1、even2、even3。而且我不能执行 scanf("%d %d %d",),所以我必须运行 scanf("%d") 三次我想不出任何可以精确打印与预期输出相同格式的想法。我希望有人能帮助我解决这个问题

#include <stdio.h>

int main() {

    int i, num;

    printf("Enter three integers: ");

    for(i=1;i<=3;i++)
    {
        scanf("%d", &num);

          if(!(num%2))
          {
            printf("\nEven: %d", num);    
          }
          if(num%2)
          {
            printf("\nOdd: %d\n", num);    
          }
    }
}

我期望下面这样......

输入:

   1 2 3

输出:

   Odd: 1 3
   Even: 2

输入:

   2 4 6

输出:

   Odd:  
   Even: 2 4 6

...但我唯一能做的就是这个

输入:

   1 2 3

输出:

    Odd: 1
   Even: 2
    Odd: 3

输入:

    1 3 5

输出:

    Odd: 1
    Odd: 3
    Odd: 5

最佳答案

递归(变相循环)以取胜(如果您不介意偶数反转)。

#include <stdio.h>
#include <stdlib.h>

void separate(int m, int n) {
    if (m == n) printf("Odd:");
    if (n == 0) { printf("\nEven:"); return; }
    int i;
    if (scanf("%d", &i) != 1) exit(EXIT_FAILURE);

    // print odd numbers before recursing; even numbers after recursing
    if (i % 2 == 1) printf(" %d", i);
    separate(m, n - 1);
    if (i % 2 == 0) printf(" %d", i);

    if (m == n) printf("\n\n");
}

参见https://ideone.com/GpE7rC其中包括调用和输入

separate(3, 3); // for 3 numbers

关于c - 是否可以创建一个接受 3 个整数并输出奇数/偶数整数而不使用数组的程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57584925/

相关文章:

c - Makefile .o 文件规则问题

text-processing - 替换文本文档中一行的最有效方法?

c - 主机之间的持久 TCP 连接,即使 IP 地址发生变化

c - 我的案例 2 似乎没有在 C 编程中读取我的 .txt 文件

c - C 中的除法返回 0... 有时

c - 在嵌入式 c 中通过 RS232 处理 ASCII 命令

c - C 中的数组快速排序

c - 如何通过 Asterisk 中的 AGI C 程序将传入调用路由到代理队列

C 程序在循环中调用包含字符串的数组

C模式代码: Why this code for printing Star-Pyramid is not working?