| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3349 人关注过本帖
标题:判断回文字符串
只看楼主 加入收藏
黑暗骑士5DSB
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2020-3-23
结帖率:50%
收藏
 问题点数:0 回复次数:10 
判断回文字符串
输入一个字符串,判断该字符串是否为回文。回文就是字符串中心对称,从左向右读和从右向左读的内容是一样的。

输入格式:
输入在一行中给出一个不超过80个字符长度的、以回车结束的非空字符串。

输出格式:
输出在第1行中输出字符串。如果它是回文字符串,在第2行中输出Yes,否则输出No。

输入样例1:
level

      
   
输出样例1:
level
Yes

      
   
输入样例2:
1 + 2 = 2 + 1 =

      
   
输出样例2:
1 + 2 = 2 + 1 =
No

int main()
{
  int i=0,j,t=0;
  char a[80];
  while(  (a[i++]=getchar())!='\n'            );
  int m=i-1;
  if(m%2==0)
  {
  for(j=0;j<m/2;j++)
  {
    if(a[j]!=a[m-j])
      t++;
  }for(i=0;i<m;i++)
      printf("%c",a[i]);
   printf("\n");
  if(t!=0)
  {

    printf("No");}
    else
      printf("Yes");
  }
  else
  {
    for(j=0;j<(m-1)/2;j++)
  {
    if(a[j]!=a[m-1-j])
      t++;
  }   for(i=0;i<m;i++)
      printf("%c",a[i]);
      printf("\n");
if(t!=0)
  {

    printf("No");}
    else
      printf("Yes");
  }

}
我这个哪里错了
搜索更多相关主题的帖子: printf 回文 输出 输入 字符串 
2020-04-13 16:45
fulltimelink
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:7
帖 子:171
专家分:752
注 册:2020-4-1
收藏
得分:0 
有错误信息么?从代码看没啥问题, 用指针处理起来应该更方便!
2020-04-13 18:57
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:0 
1+2==2+1算回文串么?算的话,你的代码就没有识别这类。

能编个毛线衣吗?
2020-04-13 19:17
D2284581470
Rank: 3Rank: 3
来 自:沈阳
等 级:论坛游侠
威 望:2
帖 子:169
专家分:147
注 册:2019-12-8
收藏
得分:0 
你好!
判断回文序列可以用这种方法,想办法把它倒过来给一个字符串,再通过strcmp 经过比较即可判断
代码如下:(有注释)
程序代码:
#include<stdio.h>
#include<string.h>
int main()
{
    char str[80];
    char str2[80];
    int i;//用于控制str字符串的循环
    int k;//用于控制str2字符串的循环
    int count = 0;//用于计数
    scanf("%[^\n]s",str);//%[^\n]是类似于gets()的一种,可以在字符串中加入空格
    for (i = 0; str[i] != '\0'; i++)
    {
        count++;//计算输入的字符串的个数 比如:1221 计算结果为4
    }
    for (i = count-1,k=0; i >=0; i--,k++)
    {
        str2[k] = str[i];//把输入的字符串倒序输入给str2
    }
    str2[k] = '\0';//在str2最后加入结束字符\0
    if (strcmp(str, str2)==0)//比较这两个字符 若相等即为回文数
    {
        printf("Yes\n");
    }
    else
    {
        printf("No\n");
    }
    return 0;
}
谢谢采纳!!!
2020-04-13 20:41
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10537
专家分:42927
注 册:2014-5-20
收藏
得分:0 
首尾指针内容相同时反向走能碰头就是
2020-04-13 22:01
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:0 
程序代码:
#include <stdio.h>
#include <stdbool.h>

int main(void)
{
    char a[81];
    size_t n;
    if( 1 != scanf("%80[^\n]%zn",a,&n) )
        return 1;

    bool is_palindrome = true;
    for( size_t i=0; i!=n/2 && is_palindrome; ++i )
        if( a[i] != a[n-1-i] )
            is_palindrome = false;

    puts( is_palindrome ? "Yes" : "No" );
}
2020-04-14 08:41
自学的数学
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:46
帖 子:967
专家分:4146
注 册:2017-11-15
收藏
得分:0 
程序代码:
#include <stdio.h>
#include<stdlib.h>
int main()
{

 char a[100];

 int i=0,j=0;

 printf("请输入字符串:\n");

 gets(a);

 while(a[i]!='\0')

 i++;

 i--;

 for(;j<=i;i--,j++)
  {
    if(a[i]!=a[j])
             break;
  }

 if(j<=i)
   printf("no\n",a);
else
  printf("yes\n",a);

 system("pause");

 return 0;
}
2020-04-14 10:40
fulltimelink
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:7
帖 子:171
专家分:752
注 册:2020-4-1
收藏
得分:0 
回复 6楼 rjsp
麻烦问下版主 %zn的 z是啥作用,从文档上没有找到相关说明
2020-04-14 12:14
飞天大烧卖
Rank: 2
等 级:论坛游民
帖 子:45
专家分:27
注 册:2020-3-26
收藏
得分:0 
#include<stdio.h>
int main()
{
  int i=0,m,j,t=0;
  char a[80];
  while((a[i++]=getchar())!='\n');//输入字符串存入数组
  m=i-1;//字符串长度
 // if(m%2==0)
 // {
     for(j=0;j<m/2;j++)
     {
       if(a[j]!=a[m-j-1])//此处m-j改为m-1-j
         t++;
     }
      for(i=0;i<m;i++)
        printf("%c",a[i]);
     printf("\n");
     if(t!=0)
     {
          printf("No");
     }
     else
          printf("Yes");
 // }   
 /*  else
  {
   
    for(j=0;j<(m-1)/2;j++)
    {
         if(a[j]!=a[m-1-j])
         t++;
    }  
    for(i=0;i<m;i++)
      printf("%c",a[i]);
      printf("\n");
    if(t!=0)
    {
     printf("No");
    }
    else
    printf("Yes");
  }*/
}
m是字符串长度,数组下标是从0开始数的
2020-04-14 13:35
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:0 
以下是引用fulltimelink在2020-4-14 12:14:20的发言:

麻烦问下版主 %zn的 z是啥作用,从文档上没有找到相关说明

%n 后面传 int*
%zn 后面传 size_t*
……
参见 https://zh.

如果你的编译器不认 %zn 的话,那就改为 %n,同时将 size_t n 改为 int n
收到的鲜花
  • 纯蓝之刃2020-04-14 16:26 送鲜花  2朵   附言:牛批
2020-04-14 15:28
快速回复:判断回文字符串
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017495 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved