C语言课堂讨论交流.ppt
C语言课堂讨论交流,三院一队 自动化 徐兆璞,P307 习题7.9,程序功能:判断输入的一串字符 是否为“回文”,回文:顺读和倒读都一样的字符串,如“level”,“ABCCBA”,程序进行步骤,一、分析题目 二、设计算法 三、编程实现,一、分析题目,回文实际上就是一个对称的字符串,判断某一字符串是否是回文只需判断该字符串的对称性即可,二、设计算法,Step1:输入一行字符串给一个字符数组 Step2:设置标志变量flag Step3:从第一个字符开始判断每一个字符与其对称的字符是否相等 Step4:若相等,重复执行Step3,直到字符串的中间字符判断完毕,执行Step5;若不相等,执行Step6 Step5:输出该字符串是回文 Step6:输出该字符串不是回文,#include #include #define N 80 main() int i,n,flag=0; char strN; printf(“Please enter a line of characters:n “); gets(str); n=strlen(str); for (i=0;(in/2) ,三、编程实现,温馨提示:,1.设置两个指针pStart和pEnd,让pStart指向字符串首部,让pEnd指向字符串尾部。 2.利用循环,从字符串两边对指针所指字符进行比较,当对应的两字符相等且两指针未超越对方时,使指针pStart向前移动一个字符位置,使指针pEnd向后移动一个字符串位置,一旦发现对应的两字符不相等或两指针已互相超越(不可能是回文),即立刻停止循环。 3.根据退出循环时两指针的位置,判断字符串是否是回文。,#include #include #define N 80 main() char aN,*pStart,*pEnd; int n,i; printf(“Please enter a line of characters:n“); gets(a); n=strlen(a); pStart=a; pEnd=a+n-1;,for (i=0;(in/2) ,第二种方案:,利用标志变量flag,#include #include #define N 80 main() char aN,*pStart,*pEnd; int n,i,flag=0; printf(“Please enter a line of characters:n“); gets(a); n=strlen(a); pStart=a; pEnd=a+n-1;,for (i=0;(in/2) ,谢谢!,