a[i]=*p; i++; p++; }
a[i]=‘\\0’; } }
34: 第34题 学生的记录由学号和成绩组成,n名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能使:把分数最高的学生数据放在h所指的数组中,注意:分数最高的学生可能不止一个,函数返回分数最高的学生的人数。 答案:
int fun (STREC *a, STREC *b) {
int I,j=0,n=0, max; max=a[0].s; for(i=0;i<N;i++) if(a[i].s>max) max=a[i].s; for(i=0;i<N;i++) if(a[i].s==max) {
*(b+j)=a[i]; j++; n++; } return n; }
35: 第35题 请编写一个函数,用来删除字符串中的所有空格。 答案:
void fun(char *str) { int i=0; char *p=str; while (*p) {
if(*p!=‘’) {
str[i]=*p; i++; }
16
p++; }
str[i]=‘\\0’; }
36: 第36题 假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:将字符串中的前导*号全部移到字符串的尾部。 答案:
void fun(char *a) {
int i=0,n=0; char *p; p=a;
while (*p==‘*’) { n++; p++; }
while (*p) { a[i]=*p; i++; p++; }
while(n!=0) {
a[i]=‘*’; i++; n--; }
a[i]=‘\\0’; }
37: 第37题 某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出。请编写函数fun,它的功能是:求出该学生的平均分放在记录的ave成员中。请自己定义正确的形参。 答案:
void fun(STREC *p) {
double av=0.0; int i:
for(i=0;i<N;i++) av+=p->s[i];
17
av/=N; p->ave=av; }
38: 第38题 请编写函数fun,它的功能是:求出ss所指字符串中指定字符的个数,并返回此值。 答案:
int fun(char *ss, char c) { int n=0; while (*ss) {
if(*ss==c) n++; ss++; } return n; }
39: 第39题 请编写函数fun,该函数的功能是:移动一维数组中的内容,若数组中由n个整数,要求把下标从0到p(p小于等于n-1)的数组元素平移到数组的最后。 答案:
void fun(int *w, int p, int n) {
int b[N], i, j=0; for(i=0;i<=p;i++) {
b[i]=w[i]; j++; }
for(i=0;i<=p;i++) {
w[j]=b[i]; j++; } }
40: 第40题 请编写函数fun,该函数的功能是移动字符串中内容,移动的规则如下:把第1到第m个字符,平移到字符串的最后,把第m+1到最后的字符移到字符串的前部。 答案:
void fun(char *w,int m) {
18
char b[N]; int I,j=0; for(i=0;i<m;i++) {
b[j]=w[i]; j++; }
for (i=0;i<strlen(w)-m;i++) w[i]=w[i+m]; for(j=0;j<m;j++) {
w[i]=b[j]; i++; }
w[i]=‘\\0’; }
41: 第41题 请编写函数fun,该函数的功能是:将m行n列的二维数组中的字符数据,按列的顺序依次放到一个字符串中。 答案:
void fun(char (*s)[n],char *b) {int i,j,k=0; for(j=0;j<n;j++) for(i=0;i<m;i++) {b[k]=*(*(s+i)+j) k++;} b[k]=‘\\0’;}
42: 第42题 下列程序定义了n×n的二维数组,并在主函数中自动赋值。请编写函数fun(int a[][n],int n),该函数的功能是:将数组右上半三角元素中的值乘以m。 答案:
void fun(int a[][n],int m) {int i,j;
for(j=0;j<n;j++) for(i=0;i<=j;i++) a[j]=a[j]*m;}
43: 第43题 编写一个函数,从传入的num个字符串中找出一个最长的一个字符串,并通过形参指针max传回该串地址(用****作为结束输入的标志)。 答案:
char *fun(char (*a)[81],int num) {int i;
19
char *max; max=a[0];
for(i=0;i<num;i++) if(strlen(max)<strlen(a)) max=a; return max;}
44: 第44题 编写一个函数,该函数可以统计一个长度为2的字符串在另一个字符串中出现的次数。 答案:
int fun(char *str,char *substr) {int n; char *p,*r; n=0; while(*str) {p=str; r=substr; while(*r) if(*r==*p) {r++; p++;} else break;
if(*r==‘\\0’) n++; str++;} return n;}
45: 第45题 假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:只删除字符串前导和尾部的*号,串中字母之间的*号都不删除。形参n 给出了字符串的长度,形参h给出了字符串中前导*号的个数,形参e给出了字符串中最后的*个数。在编写时不得使用c语言给提供得字符串函数。 答案:
void fun(char *a,int n,int h,int e) {int i=0; char *p;
for(p=a+h;p<a+n-e;p++) {*(a+i)=*p; i++;}
*(a+i)=‘\\0’;}
46: 第46题 学生得记录由学号和成绩组称个,n名大学生得数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能时:按分数的高低排列学生的记录,高分在前。
20