c语言"回文"判断

习题1.1

题目:

“回文”是正读和反读相同的字符串,如“232”,“XYZAZYX”等。编写字符串实现判断字符串是否是回文。

代码:

#include<stdio.h>
#include<string.h>
#include<math.h>
int HuiWen(char s[])
/*回文判断,如果是回文,返回1,否则返回0*/
{
    char *start=s,*end=s+strlen(s)-1;   /*初始化start和end,分别指向字符串的第一个字符和最后一个字符*/
    for(;end>start;end--,start++)       /*将start和end指向的字符依次比较,如果*start=*end,则start向后移动,end向前移动*/
        if(*start!=*end)                /*如果*start≠*end,则停止比较并退出循环*/
            break;
    return end<=start;              /*如果是回文返回1,否则返回0*/
}
void main()
{
    char *s[]={"123321","XYZAZYX","1232"};
    int i;
    for(i=0;i<sizeof s/sizeof(s[0]);i++)
    {
        if(HuiWen(s[i])==1)
            printf("字符串%s是回文!\n",s[i]);
        else
            printf("字符串%s不是回文!\n",s[i]);
    }
}

其他:

注意1:

    printf("sizeof(s)_____%d____\n",sizeof(s));

    printf("sizeof(s[0])______%d____\n",sizeof(s[0]));

    printf("s[0]___%s____\n",s[0]);

    printf("strlen(s)_______%d____\n",strlen(s));

    printf("sizeof(char*)____%d____\n",sizeof(char*));

    printf("sizeof(char)_____%d____\n",sizeof(char));

    printf("%p____%p____%p\n\n",s,s[0],s[1]);


    sizeof(s)_____24____                                                                                                                                                                                                                            
    sizeof(s[0])______8____                                                                                                                                                                                                                         
    s[0]___123321____                                                                                                                                                                                                                               
    strlen(s)_______3____                                                                                                                                                                                                                           
    sizeof(char*)____8____                                                                                                                                                                                                                          
    sizeof(char)_____1____                                                                                                                                                                                                                          
    0x7fffd2263060____0x4007bd____0x4007c4  

注意2:

在代码中char型的s+strlen(s)-1是什么意思?

s应该是一个字符串吧?
那么s同时也是首字符地址
strlen(s)为s的长度
那么s+strlen(s)-1就是字符串的末尾地址
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值