请编写函数fun(),它的功能是:判断字符串是否是回文?若是,函数返回1,主函数中输出:YES,否则返回0,主函数输出NO。回文是指顺读和倒读都一样的字符串。 例如,字符串LEVEL是回文,而字符串12312就不是回文。 [注意] 部分源程序给

admin2013-06-12  28

问题 请编写函数fun(),它的功能是:判断字符串是否是回文?若是,函数返回1,主函数中输出:YES,否则返回0,主函数输出NO。回文是指顺读和倒读都一样的字符串。
   例如,字符串LEVEL是回文,而字符串12312就不是回文。
   [注意] 部分源程序给出如下。
   请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
   [试题源程序]
   #include<stdio.h>
   #define N 80
   int fun(char *str)
   {
   }
   main()
   {
   char  s[N];
   printf("Enter a string:")" gets(s);
   printf("\n\n"); puts(s);
   if(fun(s))
   printf(" YES\n");
   else
   printf(" NO\n");
   NONO();
   }
   NONO()
   {
   /*请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/
   FILE *rf, *wf;
   int i ; char s[N];
   rf=fopen("K:\\k06\\24010001\\in.dat", "r");
   wf=fopen("K:\\k06\\24010001\\out.dat", "w");
   for(i=0; i<10; i++){
   fscanf(rf, "%s", s);
   if(fun(S))
   fprintf(wf, "%s YES\n", s);
   else
   fprintf(wf, "%s NO\n", s);
   }
   fclose(rf);
   fclose(wf);
   }

选项

答案int fun(char *str) { int i, n=0, fg=1; char *p=str; while(*p) { n++; P++; } for(i=0; i<n/2; i++) if(str[i]==str[n-1-i]); else { fg=0; break; } return fg; }

解析 本题的设计思路是:(1)定义一个int型变量flag用做返回值,定义一个字符指针代替原串遍历,求字符串的长度;(2)利用循环及if条件语句判断字符串首尾对应字符是否相等;(3)如果为回文数,修改flag的值;(4)返回flag
转载请注明原文地址:https://kaotiyun.com/show/trJp777K
0

最新回复(0)