C语言如何先完成所有scanf输入,再批量执行if-else输出?
先批量输入再统一输出判断结果的C语言实现方案
核心解决思路是用数组存储所有输入的a、b、c值,将输入和输出逻辑完全拆分:先通过循环把所有数据存入数组,再遍历数组执行判断并输出结果。以下提供两种可行实现方式:
方式一:使用结构体数组(推荐,数据组织更清晰)
结构体可以把每组关联的a、b、c打包存储,代码可读性更高:
#include <stdio.h> // 定义结构体,封装每组输入的三个值 typedef struct { int a; int b; int c; } InputGroup; int main() { int groupCount; printf("请输入要处理的组数:"); scanf("%d", &groupCount); // 定义结构体数组,存储所有输入数据 InputGroup groups[groupCount]; // 第一步:批量读取所有输入并存储 for (int i = 0; i < groupCount; i++) { printf("请输入第%d组的a、b、c值:", i + 1); scanf("%d %d %d", &groups[i].a, &groups[i].b, &groups[i].c); } // 第二步:遍历存储的数据,统一执行判断并输出 printf("\n=== 判断结果 ===\n"); for (int i = 0; i < groupCount; i++) { int a = groups[i].a; int b = groups[i].b; int c = groups[i].c; // 替换为你的实际if-else判断逻辑 if (a > b && a > c) { printf("第%d组:a是最大值\n", i + 1); } else if (b > a && b > c) { printf("第%d组:b是最大值\n", i + 1); } else { printf("第%d组:c是最大值\n", i + 1); } } return 0; }
方式二:使用独立数组
如果不想用结构体,也可以用三个独立数组分别存储a、b、c的值:
#include <stdio.h> int main() { int groupCount; printf("请输入要处理的组数:"); scanf("%d", &groupCount); // 定义三个数组,分别存储每组的a、b、c int aArr[100], bArr[100], cArr[100]; // 批量输入数据 for (int i = 0; i < groupCount; i++) { printf("请输入第%d组的a、b、c值:", i + 1); scanf("%d %d %d", &aArr[i], &bArr[i], &cArr[i]); } // 统一输出判断结果 printf("\n=== 判断结果 ===\n"); for (int i = 0; i < groupCount; i++) { // 替换为你的实际判断逻辑 if (aArr[i] + bArr[i] > cArr[i]) { printf("第%d组:a+b > c\n", i + 1); } else if (aArr[i] + bArr[i] == cArr[i]) { printf("第%d组:a+b = c\n", i + 1); } else { printf("第%d组:a+b < c\n", i + 1); } } return 0; }
关键注意事项
- 如果处理的组数较多,建议使用动态内存分配(
malloc)创建数组,避免固定大小数组的容量限制。 - 输入时要保证格式匹配,比如每组输入三个整数,避免因输入格式错误导致程序异常。
内容的提问来源于stack exchange,提问作者Calvin Hendra
相关产品推荐
相关产品推荐

