填空题
请补充函数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; sir2=str+strlen(str)-1;
for(i=0;
1; i++)
if(
2)
{
t=1;
break;
}
if(
3)
return("yes!");
else
return("no!");
}
void main()
{
char str[50];
printf("Input:");
scanf("%s", str);
printf("%s/n", proc(str));
}
【正确答案】
【答案解析】i<=strlen(str)/2 *str1++!=*str2-- t==0[解析] 判断字符串是否为回文数,将第一个与最后一个比较,第二个与倒数第二个比较,直到字符串的中间,只有当所有的都相等时才为回文数,需要比较字符串长度的1/2次,因此,第一处填“i<=strlen(str)/2”;变量str1和str2分别指向字符串的第一个和最后一个字符,每一次比较后strl后移一个位置,str2前移一个位置进行比较。变量t为字符串是否为回文的标志,当对应位置的字符不相等时变量t赋值为1,因此,第二处填“*str1++!=*str2--”;变量t为0时,字符串为回文数,因此,第三处填“t==0”。