【发布时间】:2026-01-13 01:15:02
【问题描述】:
这是我目前的代码
#include <stdio.h>
#include <string.h>
int main() {
char size[10];
const char drinks[4][10] = {
"Coffee",
"Tea",
"Chocolate",
"Soda"
};
const char sizes[3][10] = {
"Small",
"Medium",
"Large"
};
char drinksName[10];
do {
printf("\nDrinks name: ");
scanf("%s", drinksName);
if (strcmp(drinksName, drinks[0]) != 0 || strcmp(drinksName, drinks[1]) != 0 || strcmp(drinksName, drinks[2]) != 0 || strcmp(drinksName, drinks[3]) != 0) {
printf("Not available.");
}
} while (strcmp(drinksName, drinks[0]) != 0 || strcmp(drinksName, drinks[1]) != 0 || strcmp(drinksName, drinks[2]) != 0 || strcmp(drinksName, drinks[3]) != 0);
do {
printf("\nSize: ");
scanf("%s", size);
if (strcmp(size, sizes[0]) != 0 || strcmp(size, sizes[1]) != 0 || strcmp(size, sizes[2]) != 0) {
printf("Not available.");
}
} while (strcmp(size, sizes[0]) != 0 || strcmp(size, sizes[1]) != 0 || strcmp(size, sizes[2]) != 0);
}
当我尝试运行我的程序时,输入总是循环,而我的输入为真,例如:“咖啡”。我的循环代码有错误吗?
do {
printf("\nDrinks name: ");
scanf("%s", drinksName);
if (strcmp(drinksName, drinks[0]) != 0 || strcmp(drinksName, drinks[1]) != 0 || strcmp(drinksName, drinks[2]) != 0 || strcmp(drinksName, drinks[3]) != 0) {
printf("Not available.");
}
} while (strcmp(drinksName, drinks[0]) != 0 || strcmp(drinksName, drinks[1]) != 0 || strcmp(drinksName, drinks[2]) != 0 || strcmp(drinksName, drinks[3]) != 0);
我很困惑为什么会这样。
【问题讨论】: