使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,请编写函数fun,该函数的功能是:判断字符串是否为回文,若是,则函数返回1,主函数中输出“YES”,否则返回0,主函数中输出“NO”

admin2020-06-02  23

问题 使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,请编写函数fun,该函数的功能是:判断字符串是否为回文,若是,则函数返回1,主函数中输出“YES”,否则返回0,主函数中输出“NO”。回文是指顺读和倒读都一样的字符串。
    例如,字符串LEVEL是回文,而字符串123312就不是回文。
    注意:部分源程序在文件PROG1.C中。
    请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:
#include<stdio.h>
#define N 80
int fun(char*str)
{

}
main()
{
    char s[N];
    FILE*out;
    char*test[]={"1234321","123421","123321","abcdCBA"};
    int i;
    printf("Enter a string:");
    gets(s);
    printf("\n\n");
    puts(s);
    if(fun(s))
      printf("YES\n");
    else
      printf("NO\n");
/*****************/
    out=fopen("out.dat","w");
    for(i=0;i<4;i++)
      if(fun(test))
        fprintf(out,"YES\n");
      else
        fprintf(out,"NO\n");
    fclose(out);
/*****************/
}

选项

答案int fun(char=*str) { int i,n=0,fg=1; Char*p=str; while(*p)/*将指针p置位到字符串末尾,并统计字符数*/ { n++; p++; } for(i=0;i<n/2;i++) /*循环比较字符*/ if(str[i]===str[n-1-i]); /*相同,什么都不作// else/*不同,直接跳出循环*/ { fg=0; break; } return fg; }

解析 判断回文就是将第一个字符与最后一个字符比较,第二个字符与倒数第二个字符进行比较,依此类推,直到中间的字符,如果比较的结果都相同,那么这个字符串就是回文,否则不是。程序中循环语句用来遍历字符串,条件语句用来判断当前字符与对应位置的字符是否相同。
转载请注明原文地址:https://jikaoti.com/ti/M3G0FFFM
0

最新回复(0)