21、请编写函数fun,该函数的功能是:将M行N列的二维数组中的字符数据,按列的顺序依次放到一个字符串中。
例如,若二维数组中的数据为
W W W W
S S S S
H H H H
则字符串中的内容应是:WSHWSHWSHWSH。
注意:请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
#include<stdio.h> #define M 3 #define N 4 void fun(char (*s)[N],char *b) { } int main() { char a[100],w[M][N]={{ 'W', 'W', 'W', 'W'},{'S', 'S', 'S', 'S'},{'H', 'H', 'H', 'H'}}; int i,j; printf("The matrix:\n"); for(i=0;i<M;i++) { for(j=0;j<N;j++) printf("%3c",w[i][j]); printf("\n"); } fun(w,a); printf("The A string:\n"); puts(a); printf("\n "); return 0; }

void fun(char (*s)[N],char *b) { int i,j,k=0; for (i=0;i<N;i++) for (j=0;j<M;j++) b[k++]=s[j][i]; b[k]='\0'; }
22、已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体数组中。请编写函数fun,该函数的功能是:找出成绩最高的学生记录,通过形参返回主函数(规定只有一个最高分)。已给出函数的首部,请完成该函数。
注意:请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include<stdio.h> #define N 10 typedef struct ss /*定义结构体*/ { char num[10]; int s; } STU; fun(STU a[], STU *s) { } int main() { STU a[N]={{ "A01",81},{ "A02",89},{ "A03",66},{ "A04",87},{ "A05",77}, { "A06",90},{ "A07",79},{ "A08",61},{ "A09",80},{ "A10",71}},m; int i; printf("*****The original data*****"); for(i=0;i<N;i++) printf("No=%s Mark=%d\n", a[i].num,a[i].s); fun(a,&m); printf("*****THE RESULT*****\n"); printf("The top :%s, %d\n",m.num,m.s); return 0; }

fun(STU a[], STU *s) { STU m; m=a[0]; int i; for (i=1;i<N;i++) if (m.s<a[i].s) m=a[i]; *s=m; }
23、请编写函数fun,其功能是:计算并输出3~n之间所有素数的平方根之和。
例如,若主函数从键盘给n输入100后,则输出为sum=148.874270。
注意:n的值要大于2但不大于100。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include <stdio.h> #include <math.h> double fun(int n) { } int main() { int n; double sum; printf("Input n="); scanf("%d",&n); sum=fun(n); printf("\nsum=%f\n",sum); return 0; }

double fun(int n) { int i,j; double s=0; for (i=3;i<=n;i+=2) { for (j=3;j<=sqrt(i);j+=2) if (i%j==0) break; if (j>sqrt(i)) s+=sqrt(i); } return s; }
24、请编写函数fun,该函数的功能是:判断字符串是否为回文,若是,则函数返回1,主函数中输出"YES",否则返回0,主函数中输出"NO"。
回文是指顺读和倒读都一样的字符串。
例如,字符串LEVEL是回文,而字符串123312就不是回文。
注意:请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include <stdio.h> #define N 80 int fun(char *str) { } int main() { char s[N]; int i; printf("Enter a string : "); gets(s); printf("\n"); puts(s); if(fun(s)) printf("YES\n"); else printf("NO\n"); return 0; }

int fun(char *str) { int i,j; for (i=0;str[i]!='\0';i++) ; j=i-1; i=0; while (i<j) { if (str[i]!=str[j]) break; i++; j--; } if (i<j) return 0; else return 1; }
25、请编写函数fun,对长度为7个字符的字符串,除首、尾字符外,将其余5个字符按ASCII码降序排列。例如,原来的字符串为"CEAedca",排序后输出为"CedcEAa"。
注意:请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include <stdio.h> #include <string.h> void fun(char *s,int num) { } int main() { char s[10]; printf("输入7个字符的字符串:"); gets(s); fun(s,7); printf("\n%s",s); return 0; }

void fun(char *s,int