1、2 0 1 1 ,2 0 1 2年上机题1 0 0题库1 :第1题m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平均分的人作为函数值返回,将低于平均分的分数放在below所指定的函数中。答案:int fun(int score,int m,int below)int i,k=0 ,aver=0 ;for(i=0 ;im;i+)aver+=scorei;aver/=m;for(i=0 ;im;i+)if(scoreiaver)belowk=scorei;k+;return k;2 :第2题请编写函数fun,它的功能是:求出1到1 0 0之内能北7或者1 1整除,但不能同
2、时北7和1 1整除的所有证书,并将他们放在a所指的数组中,通过n返回这些数的个数。答案:void fun(int *a, int *n)int i,j=0 ;for(i=2 ;i1 0 0 0 ;i+)if (i%7 =0 | i%1 1 =0 ) *n=j;3 :第3题请编写函数void fun(int x,int pp,int *n),它的功能是:求出能整除x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。答案:void fun(int x, int pp , int *n)int i=1 ,j=0 ;k=0 ,*t=pp;for(i=0 ;i=x
3、;i+)if(i%2 !=0 ) tj=I;j+;for(i=0 ;ij;i+)if(x%ti=0 ) ppk=ti;k+;*n=k;4 :第4题请编写一个函数void fun(char *tt,int pp),统计在tt字符中“a“到“z“2 6各字母各自出现的次数,并依次放在pp所指的数组中。答案:void fun(char *tt, int pp) int i;for (i=0 ;i2 6 ;i+)ppi=0 ;while (*tt) switch (*tt)case a: pp0 +;break;case b: pp1 +;break;case c: pp2 +;break;case
4、d: pp3 +;break;case e: pp4 +;break;case f: pp5 +;break;case g: pp6 +;break;case h: pp7 +;break;case i: pp8 +;break;case j: pp9 +;break;case k: pp1 0 +;break;case l: pp1 1 +;break;case m: pp1 2 +;break;case n: pp1 2 +;break;case o: pp1 4 +;break;case p: pp1 5 +;break;case q: pp1 6 +;break;case r: pp1
5、 7 +;break;case s: pp1 8 +;break;case t: pp1 9 +;break;case u: pp2 0 +;break;case v: pp2 1 +;break;case w: pp2 2 +;break;case x: pp2 3 +;break;case y: pp2 4 +;break;case z: pp2 5 +;break;tt+;5 :第5题请编写一个函数void fun(int m,int k,int xx),该函数的功能是:将大于整数m且紧靠m的k各素数存入xx所指的数组中。答案:void fun(int m, int k, int xx)
6、 int g=0 ,I,j,flag=1 ;for(i=m+1 ;im*m;i+) for(j=0 ;jI;j+) if(i%j!=0 )flag=1 ;elseflag=0 ;break;if (flag=1 k-;elsebreak;6 :第6题请编写一个函数void fun(char a,char,int n),其功能是:删除以各字符串中指定下标的字符。其中,a指向原字符串,删除后的字符串存放在b所指的数组中,n中存放指定的下标。答案:void fun(char a,char b, int n) int I,j=0 ;for (i=0 ;iLEN;i+)if (i!=n)bj=ai;j+
7、;bj=0 ;7 :第7题请编写一个函数int fun(int *s,int t,int *k),用来求除数组的最大元素在数组中的下标并存放在k所指的储存单元中。答案:void fun (int *s, int t, int *k) int I, max;max=s0 ;for(i=0 ;it;i+)if (simax) max=si;*k=I;8 :第8题编写函数fun,功能是:根据以下攻势计算s,计算结果作为函数值返回;n通过形参传入。S=1 +1 /(1 +2 )+1 /(1 +2 +3 )+.+1 /(1 +2 +3 +4 +n)答案:float fun (int n)int i;fl
8、oat s=1 .0 , t=1 .0 ;for(i=2 ;i=n;i+)t=t+i;s=s+1 /t;return s;9 :第9题编写一个函数fun,它的功能是:根据以下公式求p的值,结果由函数值带回。M与n为两个正整数,且要求mn。p=m!/n!(m-n)!答案:float fun(int m, int n) float p,t=1 .0 ;int I;for (i=1 ;i=m;i+)t=t*I;p=t;for(t=1 .0 ,i=1 ;i=n;i+)t=t*I;p=p/t;for(t=1 .0 ,i=1 ;i=m-n;i+)t=t*I;p=p/t;return p;1 0 :第1 0
9、题编写函数fun,它的功能是:利用以下的简单迭代方法求方程cos(x)-x=0的一个实根。迭代步骤如下:(1 )取x1初值为0 .0;(2 )x0 =x1 ,把x1的值赋各x0 ;(3 )x1 =cos(x0 ),求出一个新的x1 ;(4 )若x0 -x1的绝对值小于0 .0 0 0 0 0 1,则执行步骤(5 ),否则执行步骤(2 );(5 )所求x1就是方程cos(x)-x=0的一个实根,作为函数值返回。程序将输出root=0 .7 3 9 0 8 5。答案:float fun()float x1 =0 .0 ,x0 ;do x0 =x1 ;x1 =cos(x0 );while(fabs(
10、x0 -x1 )1 e-6 );return x1 ;1 1 :第1 1题下列程序定义了nn的二维数组,并在主函数中自动赋值。请编写函数fun(intan),该函数的功能是:使数组左下半三角元素中的值全部置成0。答案:int fun(int aN) int I,j;for(i=0 ;iN;i+)for(j=0 ;j=I;j+)aij=0 ;1 2 :第1 2题下列程序定义了nn的二维数组,并在主函数中赋值。请编写函数fun,函数的功能使求出数组周边元素的平均值并作为函数值返回给主函数中的s。答案:double fun(int wN)int I,j,k=0 ;double s=0 .0 ;for
11、(j=0 ;jN;j+) s+=w0 j;k+;for(j=0 ;jN;j+) s+=wN-1 j;k+;for(i=1 ;i=N-2 ;i+) s+=wi0 ;k+;for(i=1 ;i=N-2 ;i+) s+=wiN-1 ;k+;return s/=k;1 3 :第1 3题请编写一个函数void fun(int ttmn,int ppn),tt指向一个m行n列的二维函数组,求出二维函数组每列中最小元素,并依次放入pp所指定一维数组中。二维数组中的数已在主函数中赋予。答案:void fun(int ttMN, int ppN) int I,j,min;for(j=0 ;jN;j+) min=
12、tt0 j;for(i=0 ;iM;i+) if (ttijmin)min=ttij;ppj=min;1 4 :第1 4题请别写函数fun,函数的功能使求出二维数组周边元素之和,作为函数值返回。二维数组中的值在主函数中赋予。答案:int fun(int aMN) int I,j,s=0 ;for(j=0 ;jN;j+) s+=a0 j;s+=aM-1 j;for(i=1 ;i=M-2 ;i+) s+=ai0 ;s+=aiN-1 ;return s;1 5 :第1 5题请编写一个函数unsigned fun(unsigned w),w使一个大于1 0的无符号整数,若w使n(n2 )位的整数,则函
13、数求出w后n1位的数作为函数值返回。答案:unsigned fun(unsigned w) unsigned t,s=0 ,s1 =1 ,p=0 ;t=w;while(t1 0 ) if(t/1 0 )p=t%1 0 ;s=s+p*s1 ;s1 =s1 *1 0 ;t=t/1 0 ;return s;1 6 :第1 6题请编写一个函数float fun(double h),函数的功能使对变量h中的值保留2位小树,并对第三位进行四舍五入(规定h中的值位正数)。答案:float fun(float h) long t;float s;h=h*1 0 0 0 ;t=(h+5 )/1 0 ;s=(fl
14、oat)t/1 0 0 .0 ;return s;1 7 :第1 7题请编写一个函数fun(char *s),该函数的功能使把字符串中的内容拟置。答案:void fun(char *s) char ch;int I,m,n;i=0 ;m=n=strlen(s)-1 ;while(i(n+1 )/2 )ch=si;si=sm;sm=ch;i+;m-;1 8 :第1 8题编写程序,实现矩阵(3行3列)的转置(即行列互换)。答案:void fun(int array3 3 ) int I,j,temp;for(i=0 ;i3 ;i+)for(j=0 ;jI,j+) temp=arrayij;arra
15、yij=arrayji;arrayji=temp;1 9 :第1 9题编写函数fun,该函数的功能是:从字符中删除指定的字符,同一字母的大、小写按不同字符处理。答案:void fun(char s,int c) int i=0 ;char *p;p=s;while(*p) if(*p!=c) si=*p;i+;p+;si=0 ;2 0 :第2 0题编写函数int fun(int lim,int aamax),该函数的功能是求出小于或等于lim的所有素数并放在aa数组中,该函数返回所求的素数的个数。答案:int fun(int lim, int aaMAX) int k=0 ,I,j;for(i
16、=lim;i1 ;i-) for(j=2 ;ji;j+)if(i%j=0 )break;elsecontinue;if(j=i) aak=i;k+;return k+;2 1 :第2 1题请编写函数fun,对长度位7个字符的字符串,除首尾字符外,将其余5个字符按ascii码降序排列。答案:void fun(char *s,int num) char t;int I,j;for(i=1 ;inum-2 ;i+)for(j=i+1 ;jnum-1 ;j+)if(sisj) t=si;si=sj;sj=t;2 2 :第2 2题n名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点
17、。请编写函数fun,它的功能是:找出学生的最高分,由函数值返回。答案:double fun(STREC *h) double max;STREC *q=h;max=h-s;do if(q-smax)max=q-s;q=q-next;while(q!=0 );return max;2 3 :第2 3题请编写函数fun,该函数的功能是:判断字符串是否为回文?若是则函数返回1,主函数中输出yes,否则返回0,主函数中输出no。回文是指顺读和倒读都是一样的字符串。答案:int fun(char *str) int I,n=0 ;fg=1 ;char *p=str;while (*p) n+;p+;fo
18、r(i=0 ;in/2 ;i+)if (stri=strn-1 -i);else fg=0 ;break;return fg;2 4 :第2 4题请编写一个函数fun,它的功能是:将一个字符串转换为一个整数(不得调用c语言提供的将字符串转换为整数的函数)。答案:long fun (char *p) long s=0 ,t;int i=0 ,j,n=strlen(p),k,s1 ;if(p0 =-)i+;for(j=I;j=n-1 ;j+) t=pj-0 ;s1 =1 0 ;for(k=j;kn-1 ;k+)t*=s1 ;s+=t;if(p0 =-)return s;elsereturn s;2
19、 5 :第2 5题请编写一个函数fun,它的功能是:比较两个字符串的长度,(不得调用c语言提供的求字符串长度的函数),函数返回较长的字符串。若两个字符串长度相同,则返回第一个字符串。答案:char *fun(char *s,char *t) char *p,*t1 =t,*s1 =s;int n=0 ;m=0 ;while (*s1 ) n+;s1 +;while(*t1 ) m+;t1 +;if(n=m)p=s;elsep=t;return p;2 6 :第2 6题请编写一个函数fun,它的功能是:根据以下公式求x的值(要求满足精度0 .0 0 0 5,即某项小于0 .0 0 0 5时停止迭
20、代):x/2 =1 +1 /3 +1 2 /3 5 +1 2 3 /3 5 7 +1 2 3 4 /3 5 7 9 +1 2 3 n/3 5 7 (2 n+1 )程序运行后,如果输入精度0 .0 0 0 5,则程序输出为3 .1 4。答案:double fun(double eps) double s;float n,t,pi;t=1 ;pi=0 ;n=1 .0 ;s=1 .0 ;while(fabs(s)=eps) pi+=s;t=n/(2 *n+1 );s*=t;n+;pi=pi*2 ;return pi;2 7 :第2 7题请编写一个函数fun,它的功能是:求除1到m之内(含m)能北7或
21、1 1整除的所有整数放在数组a中,通过n返回这些数的个数。答案:void fun(int m, int *a, int *n) int I,j=0 ; *n=0 ;for(i=1 ;i=m;i+)if (i%7 =0 | i%1 1 =0 ) aj=I;j+;*n=j;2 8 :第2 8题请编写一个函数fun,它的功能是:找出一维整型数组元素中最大的值和它所在的下标,最大的值和它所在的下标通过形参传回。数组元素中的值已在主函数中赋予。主函数中x是数组名,n是x中的数据个数,max存放最大值,index存放最大值所在元素的下标。答案:void fun (int a,int n, int *max
22、, int *d) int I;*max=a0 ;*d=0 ;for(i=0 ;In;i+)if(ai*max) *max=ai;*d=I;2 9 :第2 9题请编写一个函数fun,它的功能是:将ss所指字符串中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。答案:void fun(char *ss) int I,n;n=strlen(ss);for(i=1 ;in;i+=2 )if(ssi=a3 0 :第3 0题请编写一个函数fun,它的功能是:求除一个2m整型二维数组中最大元素的值,并将此值返回调用函数。答案:int fun(int aM) int I,j,max;m
23、ax=a0 0 ;for(i=0 ;i2 ;i+)for(j=0 ;jM;j+)if(aijmax)max=aij;return max;3 1 :第3 1题请编写函数fun,其功能是:将s所指字符串中除了下标为偶数、同时ascii值也为偶数的字符外,其余的全都删除;串中剩余字符所形成的一个新串放在t所指的一个数组中。答案:void fun(char *s,char t) int I,j=0 ,n;n=strlen(s);for(i=0 ;I,n;i+)if(i%2 =0 j+;tj=0 ;3 2 :第3 2题请编写函数fun,其功能是:将s所指字符串中除了下标为奇数、同时ascii值也为奇数
24、的字符之外,其余的所有字符都删除,串中剩余字符所形成的一个新串放在t所指的一个数组中。答案:void fun(char *s,char t) int I,j=0 ,n;n=strlen(s);for(i=0 ;I,n;i+)if(i%2 !=0 j+;tj=0 ;3 3 :第3 3题假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:使字符串中尾部的*号不得多于n个;若多于n个,则删除多于的*号;若少于或等于n个,则什么也不做,字符串中间和前面的*号不删除。答案:void fun(char *a,int n) int i=0 ;k=0 ;char *p, *t;p=t=a;whi
25、le (*t)t+;t-;while(*t=*) k+;t-;t+;if(kn) while (*pi+;p+;ai=0 ;3 4 :第3 4题学生的记录由学号和成绩组成,n名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能使:把分数最高的学生数据放在h所指的数组中,注意:分数最高的学生可能不止一个,函数返回分数最高的学生的人数。答案:int fun (STREC *a, STREC *b)int I,j=0 ,n=0 , max;max=a0 .s;for(i=0 ;iN;i+)if(ai.smax)max=ai.s;for(i=0 ;iN;i+)if(ai.s=max)
26、 *(b+j)=ai;j+;n+;return n;3 5 :第3 5题请编写一个函数,用来删除字符串中的所有空格。答案:void fun(char *str) int i=0 ;char *p=str;while (*p) if(*p!=) stri=*p;i+;p+;stri=0 ;3 6 :第3 6题假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:将字符串中的前导*号全部移到字符串的尾部。答案:void fun(char *a)int i=0 ,n=0 ;char *p;p=a;while (*p=*)n+;p+;while (*p) ai=*p;i+;p+;while
27、(n!=0 ) ai=*;i+;n-;ai=0 ;3 7 :第3 7题某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出。请编写函数fun,它的功能是:求出该学生的平均分放在记录的ave成员中。请自己定义正确的形参。答案:void fun(STREC *p)double av=0 .0 ;int i:for(i=0 ;iN;i+)av+=p-si;av/=N;p-ave=av;3 8 :第3 8题请编写函数fun,它的功能是:求出ss所指字符串中指定字符的个数,并返回此值。答案:int fun(char *ss, char c) int n=0 ;while (
28、*ss) if(*ss=c)n+;ss+;return n;3 9 :第3 9题请编写函数fun,该函数的功能是:移动一维数组中的内容,若数组中由n个整数,要求把下标从0到p(p小于等于n1 )的数组元素平移到数组的最后。答案:void fun(int *w, int p, int n)int bN, i, j=0 ;for(i=0 ;i=p;i+)bi=wi;j+;for(i=0 ;i=p;i+)wj=bi;j+;4 0 :第4 0题请编写函数fun,该函数的功能是移动字符串中内容,移动的规则如下:把第1到第m个字符,平移到字符串的最后,把第m1到最后的字符移到字符串的前部。答案:void
29、fun(char *w,int m) char bN;int I,j=0 ;for(i=0 ;im;i+)bj=wi;j+;for (i=0 ;istrlen(w)-m;i+)wi=wi+m;for(j=0 ;jm;j+)wi=bj;i+;wi=0 ;4 1 :第4 1题请编写函数fun,该函数的功能是:将m行n列的二维数组中的字符数据,按列的顺序依次放到一个字符串中。答案:void fun(char (*s)n,char *b)int i,j,k=0 ;for(j=0 ;jn;j+)for(i=0 ;im;i+)bk=*(*(s+i)+j)k+;bk=0 ;4 2 :第4 2题下列程序定义了
30、nn的二维数组,并在主函数中自动赋值。请编写函数fun(intan,int n),该函数的功能是:将数组右上半三角元素中的值乘以m。答案:void fun(int an,int m)int i,j;for(j=0 ;jn;j+)for(i=0 ;i=j;i+)aj=aj*m;4 3 :第4 3题编写一个函数,从传入的num个字符串中找出一个最长的一个字符串,并通过形参指针max传回该串地址(用*作为结束输入的标志)。答案:char *fun(char (*a)8 1 ,int num)int i;char *max;max=a0 ;for(i=0 ;inum;i+)if(strlen(max)
31、strlen(a)max=a;return max;4 4 :第4 4题编写一个函数,该函数可以统计一个长度为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+;elsebreak;if(*r=0 )n+;str+;return n;4 5 :第4 5题假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:只删除字符串前导和尾部的*号,串中字母之间的*号都不删除。形参n给出了字符串的长度
32、,形参h给出了字符串中前导*号的个数,形参e给出了字符串中最后的*个数。在编写时不得使用c语言给提供得字符串函数。答案:void fun(char *a,int n,int h,int e)int i=0 ;char *p;for(p=a+h;pa+n-e;p+)*(a+i)=*p;i+;*(a+i)=0 ;4 6 :第4 6题学生得记录由学号和成绩组称个,n名大学生得数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能时:按分数的高低排列学生的记录,高分在前。答案:void fun(strec a)int i,j;strec t;for(i=0 ;in-1 ;i+)for(j=i;
33、sn;j+)if(a.saj.s)t=a;a=aj;aj=t; 4 7 :第4 7题请编写一个函数void fun(char *ss),其功能时:将字符串ss中所有下标为奇数位置上的字母转换为大写(若位置上不是字母,则不转换)。答案:void fun(char *ss)int i,n=0 ;char *p=ss;while(*p)n+;p+;for (i=0 ;in;i+)if (ss=ass=0 ;4 8 :第4 8题请编写函数fun,其功能是:将两个两位数的正整数a,b合并成一个整数放在c中。合并的方式是:将a数的十位和个位依次放在c数的千位和十位上,b数的十位和个位数依次放在c数的百位和
34、个位上。答案:void fun(int a,int b,long *c)*c=(a/1 0 )*1 0 0 0 +(b/1 0 )*1 0 0 +(a%1 0 )*1 0 +b%1 0 ;4 9 :第4 9题请编写函数fun,其功能是:将s所指字符串中下标位偶数同时ascii值为奇数的字符删除,s中剩余的字符形成的新串放在t所指的数组中。答案:void fun(char *s,char t)int i,j=0 ,n=strlen(s);for(i=0 ;in;i+)if(i%2 =0 j+;tj=0 ;5 0 :第5 0题已知学生的记录是由学号和学习成绩构成,n名学生的数据已存入a机构体数组中
35、。请编写函数fun,该函数的功能是:找出成绩最高的学生记录,通过形参返回主函数(规定只有一个最高分)。答案:void fun(stu a,stu *s)int i,max;max=a0 .s;for (i=0 ;in;i+)if(a.smax)max=a.s;*s=a;5 1 :第5 1题请编写函数fun,其功能是:将所有大于1小于整数m的非素数存入xx所指的数组中,非素数的个数通过k传回。答案:void fun(int m,int *k,int xx)int i,j;int t=0 ;for(i=2 ;im;i+)j=2 ;while(ji)if(i%j=0 )xxt=i;t+;break;
36、j+;*k=t;5 2 :第5 2题编写一个函数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 ;5 3 :第5 3题请编写函数fun,该函数的功能是:实现b=a+a,即把矩阵a加上a的转置,存放在矩阵b中。计算结果在main函数中输出。答案:void fun(int a3 3 ,int b3 3 )int
37、i,j,at3 3 ;for(i=0 ;i=2 ;i+)for(j=0 ;j=2 ;j+)atj=aj;for(i=0 ;i3 ;i+)for(j=0 ;j3 ;j+)bj=aj+atj;5 4 :第5 4题学生的记录由学号和成绩组称个,n名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把低于平均分的学生数据放在b所指的数组中,低于平均分的学生人数通过形参n传回,平均分通过函数值返回。答案:double fun(strec *a, strec *b,int *n)double aver=0 .0 ;int i,j=0 ;*n=0 ;for (i=0 ;in;i+)av
38、er+=a.s;aver/=n;for(i=0 ;in;i+)if(a.saver)bj=a;(*n)+;j+; return aver;5 5 :第5 5题请编写函数fun,该函数的功能是:将m行n列的二维数组中的数据,按行的顺序依次放到一维数组中,一维数组中数据的个数存放在形参n所指的储存单元中。答案:void fun(int(*s)1 0 ,int *b,int *n,int mm,int nn)int i,j;for(i=0 ;imm;i+)for(j=0 ;jnn;j+)b*n=*(*(s+i)+j);*n=*n+1 ;5 6 :第5 6题假定输入的字符串中只包含字母和*号。请编写函
39、数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 ;5 7 :第5 7题学生的记录是由学号和成绩组成,n名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把指定分数范围内的学生数据放在b所指的数组中,分数范围内的学生人数由函数值返回。答案:int fun(strec*a,strec *b,int
40、l,int h)int i,j=0 ;for(i=0 ;in;i+)if(a.s=lj+;return j;5 8 :第5 8题编写函数藏服那,它的功能是:求n以内(不包括n)同时能被3与7整除的所有自然数之和的平方根s,并作为函数值返回。答案:double fun(int n)double s=0 .0 ;int i;for(i=1 ;in;i+)if(i%3 =0 s=sqrt(s);return s;5 9 :第5 9题请别写函数fun,该函数的功能是:将放在字符串数组中的m个字符串(每串的长度不超过n),按顺序合并组成一个新的字符串。答案:void fun(char amn,char
41、*b)int i,j,k=0 ;for(i=0 ;im;i+)for(j=0 ;jn;j+)if(*(*(a+i)+j)bk=*(*(a+i)+j)k+;elsebreak;bk=0 ;6 0 :第6 0题请编写函数fun,该函数的功能是:删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。答案:int fun(int a,int n)int i,t,j=0 ,*p=a;t=p0 ;for(i=0 ;i=n;i+)if(t=p);elseaj=t;t=p;j+;if(i=n)aj=t;return j;6 1 :第6 1题第请编写函数fu
42、n,该函数的功能使:统计各年龄段的人数。N个年龄通过调用随机函数获得,并放在主函数的age数组中;要求函数把0至9岁年龄段的人数放在d0 中,把1 0至1 9岁年龄段的人数放在d1 中,把2 0至2 9岁的人数放在d2 中,其余以此类推,把1 0 0岁(含1 0 0以上年龄的人数都放在d1 0 中。结果在主函数中输出。答案:void fun(int *a,int *b)int i,j;for(j=0 ;im;j+)bj=0 ;for(i=0 ;in;i+)if(a=0 else if(a=1 0 else if(a=2 0 else if(a=3 0 else if(a=4 0 else if
43、(a=5 0 else if(a=6 0 else if(a=7 0 else if(a=8 0 else if(a=9 0 elseb1 0 +=1 ;6 2 :第6 2题请编写函数fun,该函数的功能是:统一一含字符串中单词的个数,作为函数值返回。一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间由若干个空格格开,一行的开始没有空格。答案:int fun (char *s)int i,n=0 ;for(i=0 ;istrlen(s);i+)if(s=areturn n;6 3 :第6 3题请编写一个函数fun,它的功能是:计算并输出给定整数n的所有因子(不包括1与自身)之和。规
44、定n的值不大于1 0 0 0。答案:int fun(int n)int s=0 ,i;for(i=2 ;i=n-1 ;i+)if(n%i=0 )s+=i;return s;6 4 :第6 4题请编写函数fun,其功能是:将s所指字符串中ascii值为奇数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。答案:void fun(char *s,char t)int i,j=0 ,n;n=strlen(s);for(i=0 ;in;i+)if(s%2 =0 )tj=s;j+;tj=0 ;6 5 :第6 5题请编写函数fun,其功能是:将两位数的正整数a、b合并成一个整数放在c中。合并的方式是
45、:将a数的十位和个位数依次放在c数的百位和个位上,b数的十位和个位数依次放在c数的十位和千位上。答案:void fun(int a,int b,long *c)*c=(b%1 0 )*1 0 0 0 +(a/1 0 )*1 0 0 +(b/1 0 )*1 0 +a%1 0 ;6 6 :第6 6题假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:删除字符串中所有*号。在编写函数时,不得使用c语言提供的字符串函数。答案:void fun(char *a)int i=0 ;char *p=a;while(*p)if(*p!=*)a=*p;i+;p+;a=0 ;6 7 :第6 7题学生的记录时由学号和成绩组成,n名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能时:函数返回指定学号的学生数据,指定的学号在主函数中输入。若没找到指定学号,在结构体变量中给学号置空串,给成绩置-1 ,作为函数值返回(用于字符串比较的函数时strcmp)。答案:strec fun(strec*,char *b)int i;strec h;for(i=0 ;in;i+)if(strcmp(a.num,b)=0 )h=a;break; elseh.num=“;h.s=-1 ;return h;6 8 :第6 8题请编写函数fun,其功能时:计算并输出下列多项式的值:sn=1 +