给定一个名为yesCount的int变量和另一个名为noCount的int变量以及一个名为response的char变量,写入必要的代码以将值读入响应中,然后执行以下操作:
y
或Y
,则增加yesCount
并打印"YES WAS RECORDED"
n
或N
,则增加noCount
并打印"NO WAS RECORDED"
"INVALID"
,然后不执行任何操作。您好,我的C代码遇到了这个问题。我的输出结果不正确。非常感谢任何帮助。谢谢。
if (response == 'y' || response == 'Y') {
scanf("%d", &yesCount);
yesCount++;
printf("YES WAS RECORDED");
}
if (response == 'n' || response == 'N') {
scanf("%d", &noCount);
noCount++;
printf("NO WAS RECORDED");
} else {
printf("INVALID");
}
答案 0 :(得分:1)
这里可能会有一些错字,因为我是从智能手机上写的。要注意这一点。在这里,我将如何做到这一点:
#include <stdio.h>
int main(void) {
int yescount = 0, nocount = 0;
int c;
while ((c = getchar) != EOF) {
switch (c) {
case 'y':
case 'Y':
puts("Yes registered");
yescount++;
break;
case 'n':
case 'N':
puts("No registered");
nocount++;
break;
default:
puts("Invalid selection.");
break;
}
}
return 0;
}
答案 1 :(得分:1)
您应该学习如何正确地呈现您的代码:它有助于提高可读性并使许多错误更加明显。
您的代码存在问题:
scanf
,但未按要求阅读回复。else
的正文末尾忘记了if
。结果是,如果回复为else
或y
,则会采用最后一个Y
分支。\n
,以使其与后续输出分开显示。以下是更正后的版本:
scanf("%c", &response);
if (response == 'y' || response == 'Y') {
yesCount++;
printf("YES WAS RECORDED\n");
} else
if (response == 'n' || response == 'N') {
noCount++;
printf("NO WAS RECORDED\n");
} else {
printf("INVALID\n");
}
根据您的评论,他们希望您使用scanf("%c", &response);
将char
读入response
,而不是从stdin
读取字节的最简单方法。