gpt4 book ai didi

c - 如何更改 I/O 格式?

转载 作者:行者123 更新时间:2023-11-30 16:51:19 29 4
gpt4 key购买 nike

输入格式:第一行输入给出输入字符串的数量(不带空格,最大长度为100)并为小写)。然后是以下 n 行,每行包含一个字符串。

输出格式:N行输出,每行有YES或NO,后跟换行符。 (如果字符串是幻方回文,则为"is",否则为“否”)

示例输入:4

satorarepotenetoperarotas

阿巴

阿爸

abcabacba

示例输出:

没有

没有

所以我编写了以下代码。但是在我的程序中,输出会在输入后立即显示,并且一次只需要一个输入。

PS:如果您对如何提高代码效率有任何建议,请在您的答案中添加它们。谢谢

#include<stdio.h>
#include<math.h>
#include<string.h>
int main()
{ int num_input,l;
scanf("%d",&num_input);
for(l=0;l<num_input;l++)
{
char str[100];
char i = 0;
int sq,j,k;
scanf("%s", str);
while(str[i]!='\0')
{
++i;

}

sq = sqrt(i);
if(i== sq*sq)
{
if(i%2==0)
{
for(j=0;j<=i/2;j++)
{
if((str[j]==str[i-j-1])&&(str[j+sq]==str[i-j-sq-1]))
{
if(j==i/2)
{
printf("YES\n");
}
}
else
{ if(j==i/2)
{
printf("NO\n");
}
}
}
}

if(i%2!=0)
{
for(k=0;k<=i/2;k++)
{
if((str[k]==str[i-k-1])&&(str[k+sq]==str[i-k-sq-1]))

{ if(k==i/2)
{
printf("YES\n");
}}

else
{if(j==i/2)
{
printf("NO\n");
}}

}
}
}
else
{
printf("NO\n");
}
}
return 0;

}

最佳答案

“混合”输出和输入的问题是由每次计算使用一个字符串这一事实引起的。如果您想扫描整个输入,然后显示输出,您应该......完全这样做。假设您知道将输入多少个字符串,那么如何执行此操作的简单方法:

使用 int num_input; scanf("%d",&num_input); 扫描字符串数量后,您可以创建一个大小为 [num_input][max_str_length] 的二维字符数组。根据您的代码,我假设每个字符串的最大长度为 100(给定 char str[100]; )。

然后,在 for循环,循环num_input有时,您应该扫描所有字符串并将它们放置在二维数组中的正确位置。这样,您的输入就会被存储并准备好由算法进行检查。我鼓励您不要在 main 中编写简单的算法函数,创建一个函数,它将接受一个数组及其大小作为参数并返回 true1当给定数组包含一个“幻方回文”字符串或返回 false/0当它不是时。如果你这样做,你可以循环 num_input再次并在当前检查的数组上调用您的函数。每次函数返回 true ,则输出“YES”,否则输出“NO”/

如果您对 2D 数组和/或自己创建函数一无所知,我鼓励您购买一本好的 C 书,或者简单地在 google 上搜索一些教程,因为这些东西非常基础且相当容易理解。

关于c - 如何更改 I/O 格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41830280/

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