字符串中洛谷B2124判断字符串是否为回文

d1e14441de6c416e986d4d358374e386.png

 #include<stdio.h>
int main()
{
    char str[80];
    int i,count=0;
    int t=0;
 
    gets(str);//输入
 
    for(i=0;str[i]!='\0';i++)//遇到字符串结束标志'\0'时停止计数
        count++;//统计共有多少个字符
 
    for(i=0;i<count/2;i++)//比较总字符数1/2次
    {
        if(str[i]==str[count-1-i])
            t++;//若相同,就计数一次
    }
    if(i==t)//若累计计数达到字符串长度的一半,就是回文
        printf("yes");
    else
        printf("no");
 
    return 0;
}

以下是这段 C 语言代码的思路:
 
一、整体流程
 
1. 首先定义一个字符数组  str  用来存储输入的字符串,以及一些用于计数的变量  i 、 count  和  t 。
2. 通过  gets(str)  函数获取用户输入的字符串。
3. 利用循环统计输入字符串的长度,即字符个数,存储在  count  中。循环从字符串的第一个字符开始,逐个检查直到遇到字符串结束标志  '\0' 。
4. 接着使用另一个循环来判断输入的字符串是否为回文。这个循环遍历字符串的前一半字符,将每个字符与对应位置的后一半字符进行比较。如果相同,则  t  加一。
5. 最后,根据  t  的值与循环次数  i (也就是字符串长度的一半)是否相等来判断字符串是否为回文。如果相等,说明字符串是回文,输出“yes”;否则输出“no”。
 
二、具体步骤分析
 
1. 输入字符串:
 
- 通过  gets(str)  函数,从用户那里获取一个字符串,并将其存储在字符数组  str  中。
2. 统计字符串长度:
 
- 使用  for(i = 0; str[i]!= '\0'; i++)  循环遍历字符串。只要当前字符不是字符串结束标志  '\0' ,就继续循环,并将  count  加一,最终  count  存储了字符串的长度。
3. 判断是否为回文:
 
- 再使用一个  for(i = 0; i < count / 2; i++)  循环,这个循环只遍历字符串的前一半。对于长度为偶数的字符串,正好遍历到中间两个字符的前一个;对于长度为奇数的字符串,正好遍历到正中间的字符。
- 在这个循环内部,比较  str[i] (字符串前半部分的字符)和  str[count - 1 - i] (字符串后半部分对应位置的字符)。如果两个字符相等,说明在这个位置上字符串是对称的,将  t  加一。
4. 输出结果:
 
- 根据  if(i == t)  判断,如果  t  的值等于循环次数  i (也就是字符串长度的一半),说明字符串的前一半和后一半完全对应相等,即字符串是回文,输出“yes”;否则输出“no”。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值