gpt4 book ai didi

arrays - 创建一个数组,在 c 中逐个字符地存储

转载 作者:行者123 更新时间:2023-12-04 08:58:39 24 4
gpt4 key购买 nike

我正在尝试创建一个数组,允许我根据用户之前输入的数字输入字符,如果我输入 10,我只希望用户输入 10 个字符,A 或 F。问题是它确实如此没有按预期工作,当输入数字时,它会将我发送到 while 循环并且不让我退出。

#include <stdio.h>

int main() {
int i, students;
char grade[100];

printf("Welcome, enter the number of students to assign school grade: \n");
scanf("%d", &students);

printf("Enter A (Approved) or F (Failure)\n");
for (i = 0; i < students; i++) {
printf("School grade for student %d: \n", i + 1);
scanf("%c", &grade[i]);
while (grade[i] != 'A' || grade[i] != 'F') {
printf("Please enter a valid school grade: ");
scanf("%c", &grade[i]);
}
}
return 0;
}
在我输入数字 10 后,程序跳过第二个 scanf 并将我送入 while 循环。
Console error
通过更改 scanf("%c", &grade[i])进入 scanf (" %c", &grade[i]) ,问题是现在即使我输入 A 或 F,也会保持 while 循环。
Console after put space in scanf

最佳答案

逻辑错误。您的循环条件始终为真。

while (grade[i] != 'A' || grade[i] != 'F')
如果值为 A那么就不是 F .反之亦然。
看起来你想要:
while (grade[i] != 'A' && grade[i] != 'F')
这将循环而任何不是 A 的值或 F被输入。它在逻辑上等同于:
while (!(grade[i] == 'A' || grade[i] == 'F'))
请阅读 De Morgan's laws想要查询更多的信息。

关于arrays - 创建一个数组,在 c 中逐个字符地存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63663274/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com