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

admin2023-02-27  5

问题 使用VC++2010打开考生文件夹下pmg1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,请编写函数fun(),该函数的功能是判断字符串是否为回文,若是,则函数返回1,在主函数中输出"YES",否则返回0,在主函数中输出"NO"。回文字符串是指顺读和倒读都一样的字符串。
    例如,字符串LEVEL是回文,而字符串123312就不是回文。
    注意:部分源程序在文件prog1.c中。
    请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。
试题程序:
1 #include<stdio.h>
2 #define N 80
3 int fun(char*str)
4 {
5
6 }
7 main()
8 {
9   char s[N];
10  FILE*out;
11  char*test[]={"1234321","123421","123321","abcdCBA");
12    int i;
13    printf("Enter a string:");
14    gets(s);
15    printf("\n\n");
16    puts(s);
17    if(fun(s))
18    printf("YES\n");
19    else
20    printf("NO\n");
21  /*********found*********/
22    out=fopen{"out.dat","w");
23    for(i=0;i<4;i++)
24    if(fun(test))
25    fprintf(out,"YES\n");
26    else
27    fprintf(out,"NO\n");
28    fclose(out);
29 /*********found*********/
30 }

选项

答案 1 int fun(char*str) 2 { 3 int i,n=0,fg=1; 4 char*p=str; 5 while(*p)/*将指针p指向字符串末尾,并统计字符数*/ 6 { 7 n++; 8 p++; 9 } 10 for(i=0;i<n/2;i++)/*循环比较字符*/ 11 if(str[i]=8tr[n-1-i]);/*若相同,则什么都不做*/ 12 else/*若不同,则直接跳出循环*/ 13 { 14 fg=0; 15 break; 16 } 17 return fg; 18 }

解析 判断回文就是将字符串的第1个字符与最后一个字符比较,第2个字符与倒数第2个字符进行比较,依此类推,直到中间的字符。如果比较的结果都相同,那么这个字符串就是回文,否则不是。while循环用来统计字符串中的字符个数;for循环语句用来遍历字符串;条件语句用来判断当前字符与对应位置的字符是否相同。若不相同,则退出循环,变量fg赋值为0。
转载请注明原文地址:https://jikaoti.com/ti/ABoiFFFM
0

最新回复(0)