编写函数,判断一个字符串是否是回文。在主函数中输入一个字符串,调用自定义函数,输出结果。
所谓回文是指顺读和倒读都一样的字符串。如"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***/
}
这道题要求编写一个函数来判断一个字符串是否是回文,并在主函数中调用该函数。文章来源:https://www.toymoban.com/news/detail-771445.html
步骤如下:
- 在主函数中声明一个字符数组
s
,用于存储输入的字符串。 - 调用
gets()
函数读取输入的字符串。 - 调用自定义函数
hw()
判断字符串是否是回文。 - 在自定义函数
hw()
中,定义两个指针p
和q
,分别指向字符串的首尾位置。 - 利用循环语句,判断指针
p
和q
所指向的字符是否相等,若不相等则不是回文,返回0
。 - 若循环正常结束,则字符串是回文,返回
1
。 - 在主函数中根据函数返回值输出结果。
答案
#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文章来源地址https://www.toymoban.com/news/detail-771445.html
到了这里,关于编写函数,判断一个字符串是否是回文。在主函数中输入一个字符串,调用自定义函数,输出结果。 所谓回文是指顺读和倒读都一样的字符串。如“AMNMA“是回文。的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!