所以我有一个关于简化我的 C 代码的问题,这是一个问题:喜力病毒正在克罗地亚和世界各地流行。国家民防总部计划出台保护措施,从周日午夜开始生效,它们是:
如果外面阳光充足且无风,最多可以聚集 5 人,因为在这种情况下病毒很容易传播。如果外面阳光明媚但刮风,最多可以聚集15人,因为病毒更难传播,因为风把它从一群人身上吹走(如果有人碰巧有喜力) . 如果在外面下雨,最多可以聚集 10 人,因为雨会将病毒收集在落到地板上的飞沫中,但也有可能从地板上弹起,一个人吸入它们,然而有感染的可能。如果外面在下雨,风在吹,那是不可能聚集的,因为反正外面天气不好。
编写一个程序,帮助人们知道如何在这种混乱中表现。您的程序接收一个三位数形式的编码输入参数,该参数指示外面的天气情况,并打印出在这种情况下允许聚集的人数。
一个正确编码的数字可能包含 [0, 3] 范围内的值:
0 - 无信息 1 - 晴天 2 - 在下雨 3 - 风在吹
如果数字: 不包含定义范围内的代码数字 多次包含相同的代码数字(可能出现多次的数字 0 除外) 包含非代码数字(除 0、1、2 和3) 包含编码的数字,但未定义这些天气条件下的程序(例如,晴天和下雨)。
我写的尾声如下:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main() {
int y[3];
int a, b, c;
scanf("%1d%1d%1d", y, y + 1, y + 2);
a = y[0];
b = y[1];
c = y[2];
if (a > 3 || b > 3 || c > 3) {
printf("Invalid entry!\n");
}
else if (a == 1 && b == 0 && c == 0) {
printf("Maximum 5!\n");
}
else if (a == 0 && b == 1 && c == 0) {
printf("Maximum 5!\n");
}
else if (a == 0 && b == 0 && c == 1) {
printf("Maximum 5!\n");
}
else if (a == 1 && b == 1 && c == 1) {
printf("Invalid entry!\n");
}
else if (a == 1 && b == 1 && c == 0) {
printf("Invalid entry!\n");
}
else if (a == 1 && b == 0 && c == 1) {
printf("Invalid entry!\n");
}
else if (a == 1 && b == 2 && c == 0) {
printf("Invalid entry!\n");
}
else if (a == 1 && b == 2 && c == 3) {
printf("Invalid entry!\n");
}
else if (a == 2 && b == 1 && c == 0) {
printf("Invalid entry!\n");
}
else if (a == 2 && b == 1 && c == 3) {
printf("Invalid entry!\n");
}
else if (a == 3 && b == 1 && c == 2) {
printf("Invalid entry!\n");
}
else if (a == 3 && b == 0 && c == 1) {
printf("Invalid entry!\n");
}
else if (a == 1 && b == 3 && c == 0) {
printf("Maximum 15!\n");
}
else if (a == 1 && b == 0 && c == 3) {
printf("Maximum 15!\n");
}
else if (a == 0 && b == 1 && c == 3) {
printf("Maximum 15!\n");
}
else if (a == 3 && b == 1 && c == 0) {
printf("Maximum 15!\n");
}
else if (a == 3 && b == 0 && c == 1) {
printf("Maximum 15!\n");
}
else if (a == 0 && b == 2 && c == 3) {
printf("Not possible to gather!\n");
}
else if (a == 0 && b == 3 && c == 2) {
printf("Not possible to gather!\n");
}
else if (a == 2 && b == 0 && c == 3) {
printf("Not possible to gather!\n");
}
else if (a == 2 && b == 3 && c == 0) {
printf("Not possible to gather!\n");
}
else if (a == 3 && b == 0 && c == 2) {
printf("Not possible to gather!\n");
}
else if (a == 3 && b == 2 && c == 0) {
printf("Not possible to gather!\n");
}
else if (a == 0 && b == 0 && c == 0) {
printf("Invalid entry!\n");
}
return 0;
}
那么,是否有更简单的方法来编写代码而不使用 else if 循环的每种可能组合?提前致谢 :)