以下程序中函数huiwen的功能是检查一个字符串是否是回文,当字符串是回文时,函数返回字符串yes!,否则函数返回字符串no!,并在主函数中输出,所谓回文即正向与反向的拼写都一样,例如:adgda。请填空。 #include<string.h>

admin2009-02-10  70

问题 以下程序中函数huiwen的功能是检查一个字符串是否是回文,当字符串是回文时,函数返回字符串yes!,否则函数返回字符串no!,并在主函数中输出,所谓回文即正向与反向的拼写都一样,例如:adgda。请填空。
   #include<string.h>
   char*huiwen (char*str)
   {char*p1,*p2;int i,t=0;
     p1=str;p2=【  】。
   for(i=0;i<strlen(str)/2;i++)
     if(*p1++!=*p2-){t=1;break;}
     if(【  】 )return("yes"!);
      else return("no!");
   }
   main()
   {char str[50];
     printf("Input:");scanf("%s",str);
     printf("%s\n",【  】);
   }

选项

答案p1+(strlen(str)-1)或str+(strlen(str)-1) t=0或!(t!=0)或t!=1或!t huiWen(str)

解析 本题的要求是判断从键盘输入的字符串是否是回文,但在主函数中并没有完成此功能的代码,故第20空应该填调用函数huiwen代码,即huiwen(str)。
   由于回文字符串是指正向与反向拼写都一样,所以对于一个字符串,如果正向顺序与反向顺序对应位置上的字符一样,则此字符串即为回文。在函数huiwen中,已用“p1=str”使得p1指向字符串str的第一个字符的地址,则第18空语句的功能应该是使得p2指向字符串str的最后一个字符串的地址,故填p1+(strlen(str)-1),由于p1与str指向的是同一个地址,所以,第18空也可以填str+(strlen(str)-1)。
   在进行for循环时,如果p1所指向的字符与p2指向的字符不相同,则说明,字符串str不是回文,贝佣t=1标记,并退出循环,执行下面的if语句,由于题中要求如果是回文,则返回“yes!”,否则,返回“no!”。故当t=0的时候,说明字符串str为回文,所以第19应填t==0或!(t!=0)或t!=1或!t。
转载请注明原文地址:https://jikaoti.com/ti/oSK0FFFM
0

最新回复(0)