鱼C论坛

 找回密码
 立即注册
查看: 784|回复: 1

输出不了

[复制链接]
发表于 2023-11-29 22:42:26 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
有多组输入,每行输入一串字符,保证字符串长度不会大于 100000,字符串由大小写英文字母和空格组成,以字符串“2013”作为结束标志。

每行输出一个字符串,如果输入是回文串,输出“YES”,否则输出“NO”(注意:判断的时候空格是不作判断的,详见样例)。
#include<stdio.h>
#include<string.h>

int main()
{
    int n,i,j,flat=1;
    char a[111000],b[111000];
    while(gets(a)!=EOF)
    {
        int len=strlen(a);
        for(i=0;i<len;i++)
        {
            if(a[i]!=' ');
            {
                b[i]=a[i];
            }
            if(a[i]==' ');
            {
                continue;
            }
        }
        for(i=0;i<=len/2;i++);
        {
            if(b[i]!=a[len-1])
            {
                flat=0;
                break;
            }
        }
        if(flat==1)
        {
            printf("YES\n");
        }
        if(flat==0)
        {
            printf("NO\n");
        }
        if(strcmp(a,2013)==0)
        {
            break;
        }
    }
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-11-29 22:42:46 | 显示全部楼层
问题出在使用了错误的输入函数。在C语言中,`gets`函数用于从标准输入读取一行字符串,但是它只接受`char*`类型的参数,而不是单个字符。因此,需要将输入改为使用`scanf`函数。

另外,题目要求判断输入的字符串是否是回文串,而不是单个字符。因此,我们需要对每行输入的字符串进行判断。

下面是修改后的代码:
#include <stdio.h>#include <string.h>int isPalindrome(char *str) {    int len = strlen(str);    int i, j;    for (i = 0, j = len - 1; i < j; i++, j--) {        // 跳过空格        while (str[i] == ' ') i++;        while (str[j] == ' ') j--;        if (str[i] != str[j]) {            return 0; // 不是回文串        }    }    return 1; // 是回文串}int main() {    char str[100000];    while (scanf("%s", str) != EOF) {        if (strcmp(str, "2013") == 0) {            break; // 输入结束        }        if (isPalindrome(str)) {            printf("YES\n");        } else {            printf("NO\n");        }    }    return 0;}
在这个代码中,我们定义了一个`isPalindrome`函数来判断输入的字符串是否是回文串。在判断时,我们使用两个指针,分别从字符串的头部和尾部开始向中间遍历,同时跳过空格。如果发现两个指针指向的字符不相等,则返回0,表示不是回文串;如果遍历完成后没有出现不相等的情况,则返回1,表示是回文串。

在`main`函数中,我们使用`scanf`函数来读取输入的字符串,并将它与字符串"2013"进行比较,以判断是否终止输入。然后调用`isPalindrome`函数来判断输入的字符串是否是回文串,并根据结果输出"YES"或"NO"。

以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-7-9 07:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表