06年南开上机100题(编辑修改稿)内容摘要:

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=。 int i: for(i=0。 i< N。 i++) av+=ps[i]。 av/=N。 pave=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) { 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。 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+ne。 p++) {*(a+i)=*p。 i++。 } *(a+i)=‘\0’。 } 46: 第 46 题 学生得记录由学号和成绩组称个, n名大学生得数据已在主函数中放入结构体数组 s 中,请编写函数 fun,它的功能时:按分数的高低排列学生的记录,高分在前。 答案: void fun(strec a[]) {int i,j。 strec t。 for(i=0。 i< n1。 i++) for(j=i。 s< n。 j++) if(< a[j].s) {t=a。 a=a[j]。 a[j]=t。 }} 47: 第 47 题 请编写一个函数 void fun(char *ss),其功能时:将字符串 ss 中所有下标为奇数位置上的字母转换为大写 (若位置上不是字母,则不转换 )。 答案: void fun(char *ss) {int i,n=0。 char *p=ss。 while(*p) {n++。 p++。 } for (i=0。 i< n。 i++) if ((ss=‘ a’ amp。 ss< =‘ z’ )amp。 i%2!=0) ss=ss32。 ss=‘\0’。 } 48: 第 48 题 请编写函数 fun,其功能是:将两个两位数的正整数 a,b合并成一个整数放在 c 中。 合并的方式是:将 a 数的十位和个位依次放在 c 数的千位和十位上, b数的十位和个位数依次放在 c 数的百位和个位上。 答案: void fun(int a,int b,long *c) {*c=(a/10)*1000+(b/10)*100+(a%10)*10+b%10。 } 49: 第 49 题 请编写函数 fun,其功能是:将 s 所指字符串中下标位 偶数同时 ascii值为奇数的字符删除, s 中剩余的字符形成的新串放在 t所指的数组中。 答案: void fun(char *s,char t[]) {int i,j=0,n=strlen(s)。 for(i=0。 i< n。 i++) if(i%2==0amp。 s%2!=0) else {f[j]=s。 j++。 } t[j]=‘\0’。 } 50: 第 50 题 已知学生的记录是由学号和学习成绩构成, n名学生的数据已存入 a 机构体数组中。 请编写函数 fun,该函数的功能是:找出成绩最高的学生记录,通过形参返回主函数 (规定只有一个最 高分 )。 答案: void fun(stu a[],stu *s) {int i,max。 max=a[0].s。 for (i=0。 i< n。 i++) if(max) {max=。 *s=a。 }} 51: 第 51 题 请编写函数 fun,其功能是:将所有大于 1小于整数 m的非素数存入 xx 所指的数组中,非素数的个数通过 k传回。 答案: void fun(int m,int *k,int xx[]) {int i,j。 int t=0。 for(i=2。 i< m。 i++) {j=2。 while(j< i) {if(i%j==0) {xx[t]=i。 t++。 break。 } j++。 } *k=t。 }} 52: 第 52 题 编写一个函数 fun,它的功能是:实现两个字符串的连接 (不使用库函数 strcat),即把 p2 所指的字符串连接到 p1 所指的字符串后。 答案: void fun(char p1[],char p2[]) {int i=0,n=0。 char *p=p1,*q=p2。 while (*p) {p++。 n++。 } i=n。 while(*p) {p1=*q。 q++。 i++。 } p1=‘\0’。 } 53: 第 53 题 请编写函数 fun,该函数的功能是:实现 b=a+a,即把矩阵 a 加上 a 的转置,存放在矩阵 b中。 计算结果在 main函数中输出。 答案: void fun(int a[3][3],int b[3][3]) {int i,j,at[3][3]。 for(i=0。 i< =2。 i++) for(j=0。 j< =2。 j++) at[j]=a[j]。 for(i=0。 i< 3。 i++) for(j=0。 j< 3。 j++) b[j]=a[j]+at[j]。 } 54: 第 54 题 学生的记录由学号和成绩组称个, n名学生 的数据已在主函数中放入结构体数组 s 中,请编写函数 fun,它的功能是:把低于平均分的学生数据放在 b所指的数组中,低于平均分的学生人数通过形参 n传回,平均分通过函数值返回。 答案: double fun(strec *a, strec *b,int *n) {double aver=。 int i,j=0。 *n=0。 for (i=0。 i< n。 i++) aver+=。 aver/=n。 for(i=0。 i< n。 i++) if(< aver) {b[j]=a。 (*n)++。 j++。 } return aver。 } 55: 第 55题 请编写函数 fun,该函数的功能是:将 m行 n列的二维数组中的数据,按行的顺序依次放到一维数组中,一维数组中数据的个数存放在形参 n所指的储存单元中。 答案: void fun(int(*s)[10],int *b,int *n,int mm,int nn) {int i,j。 for(i=0。 i< mm。 i++) for(j=0。 j< nn。 j++) {b[*n]=*(*(s+i)+j)。 *n=*n+1。 }} 56: 第 56 题 假定输入的字符串中只包含字母和 *号。 请编写函 数 fun,它的功能是:除了尾部的 *号之外,将字母串中其他 *号全部删除。 形参 p已指向字符串中最后的一个字母。 不使用 c 的字符串函数。 答案: void fun(char*a,char *p) {int i=0。 char *p=a。 while(q< =p) {if(*q!=‘*’) {a=*q。 i++。 } q++。 } while(*q) {a=*q。 i++。 q++。 } a=‘\0’。 } 57: 第 57 题 学生的记录是由学号和成绩组成, n名学生的数据已在主函数中放入结构体数组 s 中,请编写函数 fun,它的功能 是:把指定分数范围内的学生数据放在 b所指的数组中,分数范围内的学生人数由函数值返回。 答案: int fun(strec*a,strec *b,int l,int h) {int i,j=0。 for(i=0。 i< n。 i++) if。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。