我们的老师给我们做了一个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/