gpt4 book ai didi

c - 为什么这个程序会生成错误的答案?

转载 作者:行者123 更新时间:2023-11-30 21:43:45 26 4
gpt4 key购买 nike

该程序没有给出正确的输出;当第一次进入 for 循环时,它只接受一次输入,而不是“t”次。

这个问题是 HEADBOB ( https://www.codechef.com/problems/HEADBOB )

#include <stdio.h>
int main()
{
int t;
scanf("%d", &t);
for(t; t>0; t--)
{
int J=0, Y=0, N=0, I=0, len=0;
if(len==0)
scanf("%d", &len);
char ar[len];
for(J=0; J<len; J++)
{
scanf("%c",&ar[J]);
if(ar[J]=='Y')
Y++;
else if(ar[J]=='N')
N++;
else if(ar[J]=='I')
I++;
}
if(I>0)
printf("INDIAN\n");
else
{
if((Y&&!N)||(N&&!Y))
printf("NOT SURE\n");
else if(Y&&N) printf("NOT INDIAN\n");
}
}
}

输入:

测试用例数量

字符数

N 个字符

上述代码的示例输入和输出:

输入:

5

5

NNYNN

输出:

不是印度人

最佳答案

检查 scanf("%c", &ar[j]) 是否正在读取空白字符!想想

scanf(" %c", &ar[j]);

这意味着跳过所有空白字符(空格、制表符、\n 等)。或者甚至更好:

scanf("%d", &len);
char ar[len + 1]; // + 1 for 0-termination
scanf(" %s", ar); // skip all whitespace characters, then read a string

一次性读取完整字符串要快得多。

关于c - 为什么这个程序会生成错误的答案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32932703/

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