填空题
1. 请补充函数proc(),该函数的功能是:判断一个数是否为回文数。当字符串是回文数时,函数返回字符串yes!,否则函数返回字符串no!,并在主函数中输出。所谓回文,即正向与反向的拼写都一样,例如abcdcba。
注意:部分源程序如下。
请勿改动主函数main()和其他函数中的任何内容,仅在函数proc()的横线上填入所编写的若干表达式或语句。
试题程序:
#include<string.h>
#include<stdio.h>
char*proc(char*str)
{
char*str1,*str2;
int i,t=0;
str1=str;str2=str+strlen(str)-1;
for(i=0; ______; i++)
if(______)
{
t=1;
break;
}
if(______)
return("yes!");
else
return("no!");
}
void main()
{
char str[50];
printf("Input:");
scanf("%s",str);
printf("%s\n",proc(str));
}
【正确答案】
1、i<=strlen(str)/2
*str1++!=*str2--
t==0
【答案解析】 判断字符串是否为回文数时,将第一个与最后一个比较,第二个与倒数第二个比较,直到字符串的中间,只有当所有的都相等时才为回文数,需要比较字符串长度的1/2次,因此,空一处填“i<=strlen(str)/2”。变量str1和str2分别指向字符串的第一个和最后一个字符,每次比较后str1后移一个位置,str2前移一个位置。变量t为字符串是否为回文的标志,当对应位置的字符不相等时变量t赋值为1,因此,空二处填“*str1++!=*str2--”;变量t为0时,字符串为回文数,因此,空三处填“t==0”。