判断字符串是否回文
判断字符串是否回文
方法一:
源程序代码:
/*
2017年3月13日10:57:54
功能:判断字符串是否回文
*/
#include "stdio.h"
int main (void)
{
int flage;
char a[100];
printf ("please input a string : ");
gets(a);
char *pa = a;
char *ppa = a;
while (*ppa)
{
ppa++;
}
ppa--;
while(*pa)
{
if(*pa == *ppa )
{
pa++;
ppa--;
}
else
flage = 0;
break;
}
if(flage == 0)
printf("This is not Huiwen\n");
else
printf("This is Huiwen\n");
return 0;
}
/*
总结:
在VC++6.0中显示的结果:
——————————————————
please input a string : level
This is Huiwen
please input a string : levved
This is not Huiwen
——————————————————
*/
方法二:
源代码及代码分析:
/*
2017年3月13日23:48:51
功能:判断字符串是否回文
*/
#include"stdio.h"
#include"string"
void fun(char *); //函数声明的类型与调用的类型一直,因为没有需要返回到主函数的参数,故采用空类型
int main() //函数入口
{
char a[100]; //定义了一个字符数组,并将其分配了100个内存空间
printf("please input a string :");
gets(a); //获取字符串(此时的字符串在末尾添加了结尾标识符),注意与整型数组相区别
fun(a); //fun()函数中的a是char*类型,即数组名相当一个指针被传到fun()函数中,对字符串进行操作
return 0;
}
void fun (char *a) //因为传入的是char *类型,故在调用函数部分必须要用char *类型接住
{
int flage; //fun()函数内部定义了一个变量
for (int start_flage = 0, end_flage = strlen(a)-1; start_flage < end_flage; start_flage++,end_flage--)
if(a[start_flage] == a[end_flage]) //for循环语句中也可以定义变量
flage = 1;
else
break;
if(flage == 1) //设置标志位的目的是进行何种输出
printf("this is Huiwei\n");
else
printf("this is not Huiwei\n");
}
/*
整型数组的获取方式有很多种:
1、定义的同时可以赋初值
2、如果定义的时候不赋初值,则只能用for 循环语句单个依次输入
字符数组的获取方式
1、采用gets()函数获取
2、scanf("%s",a) 注:数组名a相当于指针,也相当于变量取地址
指针类似索引标记,与下标变量不同的是,下标变量只是作为标记,而指针不仅作为标记,并且对其操作会改变对应空间的内容
在VC++6.0中显示的结果:
————————————————————————
please input a string :level
this is Huiwei
please input a string :WERTYH
this is not Huiwei
————————————————————————
*/