C 标准输出的内容不正确

C 标准输出的内容不正确,c,C,给定一个名为yesCount的int变量和另一个名为noCount的int变量以及一个名为response的char变量,编写必要的代码将值读入response,然后执行以下操作: 如果键入的字符是y或y,则递增YES查询并打印出“是已记录” 如果键入的字符是n或n,则递增noCount并打印出“未记录” 如果输入无效,只需打印消息“invalid”,而不执行其他操作 您好,我的C代码有问题。我得到了错误的输出。非常感谢您的帮助。多谢各位 if (response == 'y' || res

给定一个名为yesCount的int变量和另一个名为noCount的int变量以及一个名为response的char变量,编写必要的代码将值读入response,然后执行以下操作:

  • 如果键入的字符是
    y
    y
    ,则递增
    YES查询
    并打印出
    “是已记录”
  • 如果键入的字符是
    n
    n
    ,则递增
    noCount
    并打印出
    “未记录”
  • 如果输入无效,只需打印消息
    “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");
}

这里可能有一些打字错误,因为我是用智能手机写的。请注意这一点。顺便问一下,我会怎么做:

#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;
}
#包括
内部主(空){
int YESOUNT=0,nocount=0;
INTC;
而((c=getchar)!=EOF){
开关(c){
案例“y”:
案例“Y”:
认沽权(“是注册”);
yescount++;
打破
案例“n”:
案例“N”:
看跌期权(“无注册”);
nocount++;
打破
违约:
放置(“无效选择”);
打破
}
}
返回0;
}

您应该学习如何正确地呈现代码:它有助于提高可读性,并使许多bug更加明显

您的代码存在问题:

  • 您无目的地调用
    scanf
    ,但未按要求读取响应
  • 您在第一个
    if
    的正文末尾忘记了
    else
    。结果是,如果响应是
    y
    y
    ,则执行最后一个
    else
    分支
  • 您可能应该在每条消息之后打印一个
    \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)
字符
读入
响应
,这不是从
stdin
读入字节的最简单方法

您从哪里获取
响应
的值?使用开关对您的代码来说非常有效为什么要调用
scanf
来查看
无计数
?您如何阅读
响应
?CODELAB分析:逻辑错误更多提示:⇒ 您几乎可以肯定应该使用:&⇒ 您几乎可以肯定应该使用:,(逗号)⇒ 您几乎可以肯定应该使用:scanf检测到的问题:⇒ 标准输出的内容不正确。⇒ noCount的值不正确。⇒ 响应的值不正确。⇒ yesCount的值不正确。⇒ 更多信息:查看测试用例表这是我提交问题时得到的结果,我更新了答案。目前还不清楚您应该编写一段代码还是一个可编译函数。如果给出了yesCount和noCount,您应该只按照指示更改它们,但请尝试
yesCount=noCount=0
检查他们是否希望您将他们初始化为
0
。感谢您的帮助@user44775:请点击答案分数下方的灰色复选标记,将其标记为已接受,好吗?