专升本C语言试题分析(五)
前言
尝试对C语言专升本题目进行分析,有不对的地方欢迎指正,在边学习边成长!
一、题目
编写程序,从键盘输入一个字符串,判断其是不是回文,若是则输出” YES” ,否则输出” NO” 。 ( 回文是指字符串正向、 反向的拼写都一样。 例“ abcba” 、 “ qwertrewq” 是回文, “ abcdef” 、 “ bagpap” 不是回文) 。
二、分析步骤
函数内部的编写
代码如下(示例):
gets(str);
n = strlen(str);
for(i = 0;i<n/2;i ++ ){ //比到一半就不比了
if(str[i] != str[n-1-i]) //比较两端的字符
{
printf("No!\n");
break; //两端字符串比较不相时跳出循环(不是回文)
}
}
总编写
代码如下(示例):
#include <stdio.h>
#include <string.h>
int main()
{
int i,n;
char str[80];
gets(str);
n = strlen(str);
for(i = 0;i<n/2;i ++ ){ //比到一半就不比了
if(str[i] != str[n-1-i]) //比较两端的字符
{
printf("No!\n");
break; //两端字符串比较不相时跳出循环(不是回文)
}
}
if(i == n/2)
printf("Yes!\n");
return 0;
}
总结
以上就是今天要讲的内容,思路大致是,使用getchar()拿到一个字符串,然后测量这个字符串的长度,在知道长度n的情况下,通过循环比较对称位置的字符是否一样,两端字符串比较不相时跳出循环(不是回文),如果i等于n/2,那么代表这个字符串是回文。