判断字符串是否回文
判断字符串是否回文
方法一:
源程序代码:
/* 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 "); else printf("This is Huiwen "); 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 "); else printf("this is not Huiwei "); } /* 整型数组的获取方式有很多种: 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 ———————————————————————— */