gpt4 book ai didi

c - C 编程中出现运行时错误 :(

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

我和我的 friend 编写了一个 C 代码,我们给它一个相反的句子,它为我们打印一个常规句子。我们必须将此代码上传到服务器,它会使用一些测试用例检查我们的代码并给我们评分。但在某些测试用例中,它表示我们的代码存在运行时错误,我们必须使代码更短。另一个问题是,当我们使用 ?! 等书写符号时,我们的程序无法正常工作。

示例输入:oD uoy tnaw ot eunitnoc?

输出(我们想要):你想继续吗?

输出显示:你想吗?继续

你能帮助我们缩短这段代码并解决这个问题吗?

谢谢。

我们的代码是:

#include <stdio.h>
#include <ctype.h>

int main()
{
char sentence[100];
int ch, i, j, k;

for (i = 0; (sentence[i] = getchar()) != '\n'; i++)
{
;
}
sentence[i] = '\0';

for (j = 0; j <=i; j++)
{
if (sentence[j] == ' ' || sentence[j] == '\0')
{
for (k = j-1; sentence[k] != ' ' && k >= 0; k--)
{
ch=sentence[k];
putchar(ch);
}
printf(" ");
}

}
return 0;
}

最佳答案

代码正在处理“eunitnoc?”全部作为一个单词,因此打印出“?继续”。您可以通过不一直走到最后一个字符来缩短循环,该字符不应包含在最后一个单词中。

至于缩短代码长度:为什么不删除将最后的 '\n' 更改为 '\0' 的行(并相应地更改逻辑)。这将缩短代码。您关心减少行数吗?您可以删除一些空格。

像这样,例如,应该做你想做的事:

#include <stdio.h>
#include <ctype.h>
int main()
{
char sentence[100];
int ch, i, j, k;
for (i=0; (sentence[i]=getchar())!='\n';i++){;}
for (j=0;j<=i;j++)
{
if (j==i)
{
putchar(sentence[j-1]);
}
else if (sentence[j]==' ' || j==i-1)
{
for (k=j-1;sentence[k]!=' ' && k>=0;k--)
{
ch=sentence[k];
putchar(ch);
}
if(j!=i-1)printf(" ");
}
}
return 0;
}

关于c - C 编程中出现运行时错误 :(,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27313297/

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