填空题 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、
【正确答案】 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”。