设计一个程序,判定输入的字符串是否回文

来源:互联网 发布:羽绒服清洗剂 知乎 编辑:程序博客网 时间:2024/09/21 08:53
程序1,用函数实现:

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

int fun(char *p, char *q)
{
char *s, *t;
int n;
n = strlen(p); //计算所输入字符长度;
s = p+n-1; //将字符的位置移到串尾;
t = q; //保留逆序后的字符串的首地址;
while(n--)
*q++ = *s--; //将原字符串从串尾字符开始逆序赋给s2数组;
*q = '\0'; //给逆序后字符串添加结束标志;
printf("原字符串为:%s\n", p);
printf("逆序输出为:%s\n", t);
return strcmp(p, t); //对比两个字符串,返回其值;
}
void main(void)
{

char s1[20], s2[20];
printf("Please input string:");
gets(s1);
if(fun(s1, s2) == 0)
printf("该字符串回文!!\n");
else
printf("该字符串不回文!\n");
}
/*该程序在VC++6.0中的执行结果:
---------------------------------
Please input string:abcba
原字符串为:abcba
逆序输出为:abcba
该字符串回文!!
---------------------------------
*/

程序2,在主函数内实现:

/* 设计一个程序,判定输入的字符串是否回文 */
# include <stdio.h>
# include <string.h>

void main(void)
{
char *p, str1[20], str2[20];
int i = 0, n;
p = str1;
printf("请输入一个字符串:");
gets(str1);
n = strlen(str1);
while(n--) //n在此处已经-1,下面的*(p+n)已经位于串尾;
{
str2[i] = str1[n];//str1[n]等同*(p+n)
i++;
}
str2[i] = '\0'; //给字符串str2添加结束符;
printf("原字符串为:%s\n", str1);
printf("逆序输出为:%s\n", str2);
if(strcmp(str1, str2)==0)
printf("该字符串回文\n");
else
printf("该字符串不回文\n");
}
/*
----------------------
请输入一个字符串:12321
原字符串为:12321
逆序输出为:12321
该字符串回文
----------------------
*/


程序3,程序2的修改版:

/* 设计一个程序,判定输入的字符串是否回文 */
# include <stdio.h>
# include <string.h>

void main(void)
{
char *p, *t, str1[20], str2[20];
int i = 0, n;
p = str1;
printf("请输入一个字符串:");
gets(str1);
n = strlen(str1);
t = p+n-1;
while(n--) //n在此处已经-1,下面的*(p+n)已经位于串尾;
{
str2[i] = *t--;
i++;
}
str2[i] = '\0'; //给字符串str2添加结束符;
printf("原字符串为:%s\n", str1);
printf("逆序输出为:%s\n", str2);
if(strcmp(str1, str2)==0)
printf("该字符串回文\n");
else
printf("该字符串不回文\n");
}
/*
----------------------
请输入一个字符串:123456
原字符串为:123456
逆序输出为:654321
该字符串不回文
----------------------
*/



0 0
原创粉丝点击