编写函数,判断一个字符串是否是回文。在主函数中输入一个字符串,调用自定义函数,输出结果。
所谓回文是指顺读和倒读都一样的字符串。如"AMNMA"是回文。

测试输入:abcba
测试输出:是回文!

代码:

#include <stdio.h>
#include <string.h>
void main()
{
        char s[50];
        int hw(char *s); 
        gets(s);
        if(hw(s)) 
                printf("是回文!\n");
        else
                printf("不是回文!\n");
}
int hw(char *s) 
{
int flag=1;
        char *p,*q;
/***Program***/







/***End***/
}


这道题要求编写一个函数来判断一个字符串是否是回文,并在主函数中调用该函数。

步骤如下:

  1. 在主函数中声明一个字符数组 s,用于存储输入的字符串。
  2. 调用 gets() 函数读取输入的字符串。
  3. 调用自定义函数 hw() 判断字符串是否是回文。
  4. 在自定义函数 hw() 中,定义两个指针 pq,分别指向字符串的首尾位置。
  5. 利用循环语句,判断指针 pq 所指向的字符是否相等,若不相等则不是回文,返回 0
  6. 若循环正常结束,则字符串是回文,返回 1
  7. 在主函数中根据函数返回值输出结果。

答案

#include <stdio.h>
#include <string.h>

int hw(char *s);    //函数声明

int main()
{
    char s[50];     //声明一个字符数组,用于存储输入的字符串
    printf("请输入一个字符串:\n");
    gets(s);        //读取输入的字符串
    if(hw(s))       //判断字符串是否是回文
        printf("是回文!\n");
    else
        printf("不是回文!\n");
    return 0;
}

int hw(char *s)     //自定义函数,判断字符串是否是回文
{
    int flag=1;     //flag为1表示是回文,为0表示不是回文
    char *p,*q;     //定义指针p和q,分别指向字符串的首尾位置
    p=q=s;          //初始化指针p和q为字符串的首位置
    while(*q!='\0') //找到字符串的结尾位置
        q++;        //指针q不断向后移动,直到指向字符串的结尾位置
    q--;            //回到最后一个字符的位置
    while(p<q)      //判断字符串是否对称
    {
        if(*p!=*q)  //若不对称,则不是回文
        {
            flag=0; //将flag设为0
            break;  //跳出循环
        }
        p++;        //指针p向后移动
        q--;        //指针q向前移动
    }
    return flag;    //返回flag的值
}

整理自chatGPT

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐