R编程 找出n个数里最小的k个以内能被5或7整除的所有数的倒数之和

课后答案网 www.khdaw.com2010 年上机题 100 题库1: 第 1 题 m 个人的成绩存放在 score 数组中, 请编写函数 fun,它的功能是: 将低于平均分的人作为函数值返回, 将低于平均分的分数放在 below 所指定的函 数中。 答案: int fun(int score[],int m,int below[]) { int i,k=0,aver=0; for(i=0;i<m;i++) aver+=score[i]; aver/=m; for(i=0;i<m;i++) if(score[i]<aver) { below[k]=score[i]; k++; } } 2: 第 2 题 请编写函数 fun,它的功能是:求出 1 到 100 之内能北 7 或者 11 整除,但不能同时北 7 和 11 整除的所有证书,并将他们放在 a 所指的数组中, 通过 n 返回这些数的个数。 答案: void fun(int *a, int *n) { int i,j=0; for(i=2;i<1000;i++) if ((i%7==0 || i%11==0) && i%77!=0) a[j++]=i; *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=课后答案网,用心为你服务! 课后答案网 www.khdaw.comfor(i=0;i<=x;i++) if(i%2!=0) { t[j]=I; j++; } for(i=0;i<j;i++) if(x%t[i]==0) { pp[k]=t[i]; k++; } *n=k; } 4: 第 4 题 请编写一个函数 void fun(char *tt,int pp[]),统计在 tt 字符 中&a&到&z&26 各字母各自出现的次数,并依次放在 pp 所指的数组中。 答案: void fun(char *tt, int pp[]) { for (i=0;i<26;i++) pp[i]=0; while (*tt) { switch (*tt) { case ‘a’: pp[0]++; case ‘b’: pp[1]++; case ‘c’: pp[2]++; case ‘d’: pp[3]++; case ‘e’: pp[4]++; case ‘f’: pp[5]++; case ‘g’: pp[6]++; case ‘h’: pp[7]++; case ‘i’: pp[8]++; case ‘j’: pp[9]++; case ‘k’: pp[10]++; case ‘l’: pp[11]++; case ‘m’: pp[12]++; case ‘n’: pp[12]++; case ‘o’: pp[14]++; case ‘p’: pp[15]++;课后答案网,用心为你服务! 课后答案网 www.khdaw.comcase ‘q’: case ‘r’: case ‘s’: case ‘t’: case ‘u’: case ‘v’: case ‘w’: case ‘x’: case ‘y’: case ‘z’: } tt++; } }pp[16]++; pp[17]++; pp[18]++; pp[19]++; pp[20]++; pp[21]++; pp[22]++; pp[23]++; pp[24]++; pp[25]++;5: 第 5 题 请编写一个函数 void fun(int m,int k,int xx[]),该函数的功 能是:将大于整数 m 且紧靠 m 的 k 各素数存入 xx 所指的数组中。 答案: void fun(int m, int k, int xx[]) { int g=0,I,j,flag=1; for(i=m+1;i<m*m;i++) { for(j=0;j<I;j++) { if(i%j!=0) flag=1; else { flag=0; } } if (flag==1 && j&=i) { if (k&=0) { xx[g++]=i; k--; } }课后答案网,用心为你服务! 课后答案网 www.khdaw.com} }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;i<LEN;i++) if (i!=n) { b[j]=a[i]; j++; } b[j]=‘\0’; } 7: 第 7 题 请编写一个函数 int fun(int *s,int t,int *k),用来求除数组 的最大元素在数组中的下标并存放在 k 所指的储存单元中。 答案: void fun (int *s, int t, int *k) { int I, max=s[0]; for(i=0;i<t;i++) if (s[i]&max) { max=s[i]; *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) {课后答案网,用心为你服务! 课后答案网 www.khdaw.com float s=1.0, t=1.0; for(i=2;i<=n;i++) { t=t+i; s=s+1/t; } }9: 第 9 题 编写一个函数 fun,它的功能是:根据以下公式求 p 的值,结果 由函数值带回。M 与 n 为两个正整数,且要求 m&n。 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; } 10: 第 10 题 编写函数 fun,它的功能是:利用以下的简单迭代方法求方程 cos(x)-x=0 的一个实根。 迭代步骤如下:(1)取 x1 初值为 0.0; (2)x0=x1,把 x1 的值赋各 x0; (3)x1=cos(x0),求出一个新的 x1; (4)若 x0-x1 的绝对值小于 0.000001,则执行步骤(5),否则执行步骤(2); (5)所求 x1 就是方程 cos(x)-x=0 的一个实根,作为函数值返回。 程序将输出 root=0.739085。 答案: float fun() { float x1=0.0,x0;课后答案网,用心为你服务! 课后答案网 www.khdaw.comdo { x0=x1; x1=cos(x0); } while(fabs(x0-x1)&1e-6); return x1; } 11: 第 11 题 下列程序定义了 n×n 的二维数组,并在主函数中自动赋值。请 编写函数 fun(int a[][n]),该函数的功能是:使数组左下半三角元素中的值全 部置成 0。 答案: int fun(int a[][N]) { int I,j; for(i=0;i<N;i++) for(j=0;j<=I;j++) a[i][j]=0; } 12: 第 12 题 下列程序定义了 n×n 的二维数组,并在主函数中赋值。请编写 函数 fun,函数的功能使求出数组周边元素的平均值并作为函数值返回给主函数 中的 s。 答案: double fun(int w[][N]) { int I,j,k=0; double s=0.0; for(j=0;j<N;j++) { s+=w[0][j]; k++; } for(j=0;j<N;j++) { s+=w[N-1][j]; k++; } for(i=1;i<=N-2;i++) { s+=w[i][0];课后答案网,用心为你服务! 课后答案网 www.khdaw.comk++; } for(i=1;i<=N-2;i++) { s+=w[i][N-1]; k++; } return s/=k; } 13: 第 13 题 请编写一个函数 void fun(int tt[m][n],int pp[n]),tt 指向 一个 m 行 n 列的二维函数组,求出二维函数组每列中最小元素,并依次放入 pp 所指定一维数组中。二维数组中的数已在主函数中赋予。 答案: void fun(int tt[M][N], int pp[N]) { int I,j, for(j=0;j<N;j++) { min=tt[0][j]; for(i=0;i<M;i++) { if (tt[i][j]<min) min=tt[i][j]; } pp[j]= } } 14: 第 14 题 请别写函数 fun,函数的功能使求出二维数组周边元素之和,作 为函数值返回。二维数组中的值在主函数中赋予。 答案: int fun(int a[M][N]) { int I,j,s=0; for(j=0;j<N;j++) { s+=a[0][j]; s+=a[M-1][j]; } for(i=1;i<=M-2;i++) {课后答案网,用心为你服务! 课后答案网 www.khdaw.coms+=a[i][0]; s+=a[i][N-1]; } } 15: 第 15 题 请编写一个函数 unsigned fun(unsigned w),w 使一个大于 10 的无符号整数,若 w 使 n(n≥2)位的整数,则函数求出 w 后 n-1 位的数作为函 数值返回。 答案: unsigned fun(unsigned w) { unsigned t,s=0,s1=1,p=0; t=w; while(t&10) { if(t/10) p=t%10; s=s+p*s1; s1=s1*10; t=t/10; } } 16: 第 16 题 请编写一个函数 float fun(double h),函数的功能使对变量 h 中的值保留 2 位小树,并对第三位进行四舍五入(规定 h 中的值位正数)。 答案: float fun(float h) { h=h*1000; t=(h+5)/10; s=(float)t/100.0; } 17: 第 17 题 请编写一个函数 fun(char *s),该函数的功能使把字符串中的 内容拟置。 答案:课后答案网,用心为你服务! 课后答案网 www.khdaw.comvoid fun(char *s) { int I,m,n; i=0; m=n=strlen(s)-1; while(i<(n+1)/2) { ch=s[i]; s[i]=s[m]; s[m]= i++; m--; } 18: 第 18 题 编写程序,实现矩阵(3 行 3 列)的转置(即行列互换)。 答案: void fun(int array[3][3]) { int I,j, for(i=0;i<3;i++) for(j=0;j<I,j++) { temp=array[i][j]; array[i][j]=array[j][i]; array[j][i]= } }19: 第 19 题 编写函数 fun,该函数的功能是:从字符中删除指定的字符,同 一字母的大、小写按不同字符处理。 答案: void fun(char s[],int c) { int i=0; char *p; p=s; while(*p) { if(*p!=c)课后答案网,用心为你服务! 课后答案网 www.khdaw.com{ s[i]=*p; i++; } p++; } s[i]=‘\0’; } 20: 第 20 题 编写函数 int fun(int lim,int aa[max]),该函数的功能是求 出小于或等于 lim 的所有素数并放在 aa 数组中, 该函数返回所求的素数的个数。 答案: int fun(int lim, int aa[MAX]) { int k=0,I,j; for(i=i&1;i--) { for(j=2;j<i;j++) if(i%j==0) if(j&=i) { aa[k]=i; k++; } } return k++; }21: 第 21 题 请编写函数 fun,对长度位 7 个字符的字符串,除首尾字符外, 将其余 5 个字符按 ascii 码降序排列。 答案: void fun(char *s,int num) { int I,j; for(i=1;i<num-2;i++) for(j=i+1;j<num-1;j++)课后答案网,用心为你服务! 课后答案网 www.khdaw.comif(s[i]<s[j]) { t=s[i]; s[i]=s[j]; s[j]=t; } } 22: 第 22 题 n 名学生的成绩已在主函数中放入一个带头节点的链表结构中, h 指向链表的头节点。请编写函数 fun,它的功能是:找出学生的最高分,由函 数值返回。 答案: double fun(STREC *h) { STREC *q=h; max=h-&s; do { if(q-&s&max) max=q-&s; q=q-& } while(q!=0); } 23: 第 23 题 请编写函数 fun,该函数的功能是:判断字符串是否为回文?若 是则函数返回 1,主函数中输出 yes,否则返回 0,主函数中输出 no。回文是指 顺读和倒读都是一样的字符串。 答案: int fun(char *str) { int I,n=0;fg=1; char *p= while (*p) { n++; p++; } for(i=0;i<n/2;i++) if (str[i]==str[n-1-i]);课后答案网,用心为你服务! 课后答案网 www.khdaw.comelse { fg=0; } } 24: 第 24 题 请编写一个函数 fun,它的功能是:将一个字符串转换为一个 整数(不得调用 c 语言提供的将字符串转换为整数的函数)。 答案: long fun (char *p) { long s=0,t; int i=0,j,n=strlen(p),k,s1; if(p[0]==‘-’) i++; for(j=I;j<=n-1;j++) { t=p[j]-‘0’; s1=10; for(k=j;k<n-1;k++) t*=s1; s+=t; } if(p[0]==‘-’) return Cs; } 25: 第 25 题 请编写一个函数 fun, 它的功能是: 比较两个字符串的长度, (不 得调用 c 语言提供的求字符串长度的函数),函数返回较长的字符串。若两个字 符串长度相同,则返回第一个字符串。 答案: char *fun(char *s,char *t) { char *p,*t1=t,*s1=s; int n=0;m=0; while (*s1) { n++;课后答案网,用心为你服务! 课后答案网 www.khdaw.coms1++; } while(*t1) { m++; t1++; } if(n&=m) p=s; else p=t; } 26: 第 26 题 请编写一个函数 fun,它的功能是:根据以下公式求 x 的值(要 求满足精度 0.0005,即某项小于 0.0005 时停止迭代): 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×(2n+1) 程序运行后,如果输入精度 0.0005,则程序输出为 3.14…。 答案: double fun(double eps) { float n,t, 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; } 27: 第 27 题 请编写一个函数 fun,它的功能是:求除 1 到 m 之内(含 m)能北 7 或 11 整除的所有整数放在数组 a 中,通过 n 返回这些数的个数。 答案: void fun(int m, int *a, int *n) { int I,j=0; *n=0;课后答案网,用心为你服务! 课后答案网 www.khdaw.comfor(i=1;i<=m;i++) if (i%7==0 || i%11 ==0) { a[j]=I; j++; } *n=j; } 28: 第 28 题 请编写一个函数 fun,它的功能是:找出一维整型数组元素中 最大的值和它所在的下标,最大的值和它所在的下标通过形参传回。数组元素中 的值已在主函数中赋予。主函数中 x 是数组名,n 是 x 中的数据个数,max 存放 最大值,index 存放最大值所在元素的下标。 答案: void fun (int a[],int n, int *max, int *d) { int I; *max=a[0]; *d=0; for(i=0;I<n;i++) if(a[i]&*max) { *max=a[i]; *d=I; } } 29: 第 29 题 请编写一个函数 fun,它的功能是:将 ss 所指字符串中所有下 标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。 答案: void fun(char *ss) { int I,n; n=strlen(ss); for(i=1;i<n;i+=2) if(ss[i]&=‘a’&& ss[i]<=‘z’) ss[i]=ss[i]-32; } 30: 第 30 题 请编写一个函数 fun,它的功能是:求除一个 2×m 整型二维数 组中最大元素的值,并将此值返回调用函数。 答案:课后答案网,用心为你服务! 课后答案网 www.khdaw.comint fun(int a[][M]) { int I,j, max=a[0][0]; for(i=0;i<2;i++) for(j=0;j<M;j++) if(a[i][j]&max) max=a[i][j]; }31: 第 31 题 请编写函数 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&&s[i]%2==0) { t[j]=s[i]; j++; } t[j]=‘\0’; }32: 第 32 题 请编写函数 fun,其功能是:将 s 所指字符串中除了下标为奇 数、同时 ascii 值也为奇数的字符之外,其余的所有字符都删除,串中剩余字符 所形成的一个新串放在 t 所指的一个数组中。 答案: void fun(char *s,char t[]) { int I,j=0,n; n=strlen(s); for(i=0;I,n;i++)课后答案网,用心为你服务! 课后答案网 www.khdaw.comif(i%2!=0&&s[i]%2!=0) { t[j]=s[i]; j++; } t[j]=‘\0’; }33: 第 33 题 假定输入的字符串中只包含字母和*号。请编写函数 fun,它的 功能是:使字符串中尾部的*号不得多于 n 个;若多于 n 个,则删除多于的*号; 若少于或等于 n 个,则什么也不做,字符串中间和前面的*号不删除。 答案: void fun(char *a,int n) { int i=0;k=0; char *p, *t; p=t=a; while (*t) t++; t--; while(*t==‘*’) { k++; t--; } t++; if(k&n) { while (*p&&p<t+n) { a[i]=*p; i++; p++; } a[i]=‘\0’; } }课后答案网,用心为你服务! 课后答案网 www.khdaw.com34: 第 34 题 学生的记录由学号和成绩组成,n 名学生的数据已在主函数中 放入结构体数组 s 中,请编写函数 fun,它的功能使:把分数最高的学生数据放 在 h 所指的数组中,注意:分数最高的学生可能不止一个,函数返回分数最高的 学生的人数。 答案: int fun (STREC *a, STREC *b) { int I,j=0,n=0, 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++; } }35: 第 35 题 请编写一个函数,用来删除字符串中的所有空格。 答案: void fun(char *str) { int i=0; char *p= while (*p) { if(*p!=‘’) { str[i]=*p; i++; } p++; } str[i]=‘\0’; }课后答案网,用心为你服务! 课后答案网 www.khdaw.com36: 第 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];课后答案网,用心为你服务! 课后答案网 www.khdaw.comav/=N; p-&ave= }38: 第 38 题 请编写函数 fun,它的功能是:求出 ss 所指字符串中指定字符 的个数,并返回此值。 答案: int fun(char *ss, char c) { int n=0; while (*ss) { if(*ss==c) n++; ss++; } }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++; } }课后答案网,用心为你服务! 课后答案网 www.khdaw.com40: 第 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。 答案:课后答案网,用心为你服务! 课后答案网 www.khdaw.comvoid 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) { char * max=a[0]; for(i=0;i<i++) if(strlen(max)<strlen(a)) max=a;} 44: 第 44 题 编写一个函数,该函数可以统计一个长度为 2 的字符串在另一 个字符串中出现的次数。 答案: int fun(char *str,char *substr) { char *p,*r; n=0; while(*str) {p= r= while(*r) if(*r==*p) {r++; p++;} if(*r==‘\0’) n++; str++;}}课后答案网,用心为你服务! 课后答案网 www.khdaw.com45: 第 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,它的功能时:按分数的高低排列学 生的记录,高分在前。 答案: void fun(strec a[]) {int i,j; for(i=0;i<n-1;i++) for(j=i;s<n;j++) if(a.s<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= while(*p) {n++; p++;} for (i=0;i<n;i++) if ((ss=‘a’&ss<=‘z’)&i%2!=0)课后答案网,用心为你服务! 课后答案网 www.khdaw.comss=ss-32; 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 值为奇数的字符删除, 中剩余的字符形成的新串放在 t 所指的数组中。 s 答案: void fun(char *s,char t[]) {int i,j=0,n=strlen(s); for(i=0;i<n;i++) if(i%2==0&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=a[0].s; for (i=0;i<n;i++) if(a.s&max) {max=a.s; *s=a;}}课后答案网,用心为你服务! 课后答案网 www.khdaw.com51: 第 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++;} 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++)课后答案网,用心为你服务! 课后答案网 www.khdaw.comfor(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=0.0; int i,j=0; *n=0; for (i=0;i<n;i++) aver+=a.s; aver/=n; for(i=0;i<n;i++) if(a.s<aver) {b[j]=a; (*n)++; j++; }} 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<i++) for(j=0;j<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;课后答案网,用心为你服务! 课后答案网 www.khdaw.comwhile(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(a.s&=l&a.s<=h) {b[j]=a; j++;}} 58: 第 58 题 编写函数藏服那,它的功能是:求 n 以内(不包括 n)同时能被 3 与 7 整除的所有自然数之和的平方根 s,并作为函数值返回。 答案: double fun(int n) {double s=0.0; for(i=1;i<n;i++) if(i%3==0&i%7==0) s=s+i; s=sqrt(s);} 59: 第 59 题 请别写函数 fun,该函数的功能是:将放在字符串数组中的 m 个字符串(每串的长度不超过 n),按顺序合并组成一个新的字符串。 答案: void fun(char a[m][n],char *b) {int i,j,k=0; for(i=0;i<m;i++)课后答案网,用心为你服务! 课后答案网 www.khdaw.com{for(j=0;j<n;j++) if(*(*(a+i)+j)) {b[k]=*(*(a+i)+j) k++;} b[k]=‘\0’;}} 60: 第 60 题 请编写函数 fun,该函数的功能是:删去一维数组中所有相同 的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数 组中数据的个数。 答案: int fun(int a[],int n) {int i,t,j=0,*p=a; t=p[0]; for(i=0;i<=n;i++) if(t==p) ; else {a[j]=t; t=p; j++;} if(i&=n) a[j]=t;} 61: 第 61 题 第请编写函数 fun,该函数的功能使:统计各年龄段的人数。N 个年龄通过调用随机函数获得,并放在主函数的 age 数组中;要求函数把 0 至 9 岁年龄段的人数放在 d[0]中,把 10 至 19 岁年龄段的人数放在 d[1]中,把 20 至 29 岁的人数放在 d[2]中,其余以此类推,把 100 岁(含 100 以上年龄的人数 都放在 d[10]中。结果在主函数中输出。 答案: void fun(int *a,int *b) {int i,j; for(j=0;i<m;j++) b[j]=0; for(i=0;i<n;i++) if(a&=0&a<=9) b[0]+=1; else if(a&=10&a<=19) b[1]+=1; else if(a&=20&a<=29)课后答案网,用心为你服务! 课后答案网 www.khdaw.comb[2]+=1; else if(a&=30&a<=39) b[3]+=1; else if(a&=40&a<=49) b[4]+=1; else if(a&=50&a<=59) b[5]+=1; else if(a&=60&a<=69) b[6]+=1; else if(a&=70&a<=79) b[7]+=1; else if(a&=80&a<=89) b[8]+=1; else if(a&=90&a<=99) b[9]+=1; else b[10]+=1;} 62: 第 62 题 请编写函数 fun,该函数的功能是:统一一含字符串中单词的 个数,作为函数值返回。一行字符串在主函数中输入,规定所有单词由小写字母 组成,单词之间由若干个空格格开,一行的开始没有空格。 答案: int fun (char *s) {int i,n=0; for(i=0;i<strlen(s);i++) {if(s=‘a’&s<=‘z’&s[i+1]==‘’ ‖s[i+1]==‘\0’) n++;}} 63: 第 63 题 请编写一个函数 fun,它的功能是:计算并输出给定整数 n 的 所有因子(不包括 1 与自身)之和。规定 n 的值不大于 1000。 答案: int fun(int n) {int s=0,i; for(i=2;i<=n-1;i++) if(n%i==0) s+=i;} 64: 第 64 题 请编写函数 fun,其功能是:将 s 所指字符串中 ascii 值为奇 数的字符删除,串中剩余字符形成一个新串放在 t 所指的数组中。课后答案网,用心为你服务! 课后答案网 www.khdaw.com答案: void fun(char *s,char t[]) {int i,j=0,n; n=strlen(s); for(i=0;i<n;i++) if(s%2==0) {t[j]=s; j++;} t[j]=‘\0’;} 65: 第 65 题 请编写函数 fun,其功能是:将两位数的正整数 a、b 合并成一 个整数放在 c 中。合并的方式是:将 a 数的十位和个位数依次放在 c 数的百位和 个位上,b 数的十位和个位数依次放在 c 数的十位和千位上。 答案: void fun(int a,int b,long *c) {*c=(b%10)*1000+(a/10)*100+(b/10)*10+a%10;} 66: 第 66 题 假定输入的字符串中只包含字母和*号。请编写函数 fun,它的 功能是:删除字符串中所有*号。在编写函数时,不得使用 c 语言提供的字符串 函数。 答案: void fun(char *a) {int i=0;char *p=a; while(*p) {if(*p!=‘*’) {a=*p; i++;} p++;} a=‘\0’;}67: 第 67 题 学生的记录时由学号和成绩组成,n 名学生的数据已在主函数 中放入结构体数组 s 中,请编写函数 fun,它的功能时:函数返回指定学号的学 生数据,指定的学号在主函数中输入。若没找到指定学号,在结构体变量中给学 号置空串,给成绩置-1,作为函数值返回(用于字符串比较的函数时 strcmp)。 答案: strec fun(strec*,char *b) {课后答案网,用心为你服务! 课后答案网 www.khdaw.comfor(i=0;i<n;i++) if(strcmp(a.num,b)==0) {h=a; } else {h.num==&&; h.s=-1;}}68: 第 68 题 请编写函数 fun,其功能时:计算并输出下列多项式的值: sn=1+1/1!+1/2!+1/3!+1/4!+…+1/n! 答案: sn=1+1/1!+1/2!+1/3!+1/4!+...+1/n! double fun(int n) {double t,sn=1.0; int i,j; for(i=1;i<n;i++) {t=1.0; for(j=1;j<=i;j++) t*j; sn+=1.0/t;}} 69: 第 69 题 请编写一个函数 fun,它的功能时:求 fibonacci 数列中大于 t 的最小的一个数,结果由函数返回。其中 fibonacci 数列 f(n)的定义为: f(0)=0,f(1)=1,f(n)=f(n-1)+f(n-2) 答案: f(0)=0,f(1)=1,f(n)=f(n-1)+f(n-2) int fun(int t) {int a=1,b=1,c=0,i; for(i=4;i<=t;i++) {if(c<t) {c=a+b; a=b; b=c;}}}课后答案网,用心为你服务! 课后答案网 www.khdaw.com70: 第 70 题 编写函数 fun,它的功能时:计算并输出下列级数和: s=1/1*2+1/2*3+…+1/n(n+1) 答案: double fun (int n) {double s=0.0; for(i=1;i<=n;i++) s=s+1.0/(i*(i+1));} 71: 第 71 题 请编写函数 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;} 72: 第 72 题 请编写函数 fun,其功能是:将 s 所指字符串中下标为偶数的 字符删除,串中剩余字符形成新串放在 t 所指数组中。 答案: void fun(char *s,char t[]) {int i,j=0,n=strlen(s); for(i=0;i<n;i++) if(i%2!=0) {t[j]=s; j++;} t[j]=‘\0’;} 73: 第 73 题 假定输入的字符串中只包含字母和*号,请编写函数 fun,它的 功能是:除了字符串前导和尾部的*号之外,将串中其他*号全部删除。形参 h 已指向字符串第一个字符, 形参 p 已指向字符串中最后一个字母。 在编写程序时, 不得使用 c 语言提供的字符串函数。 答案: void fun(char *a,char *h,char *p) {int i=0; char *q=a; while(q<h) {a=*q; q++; i++;}课后答案网,用心为你服务! 课后答案网 www.khdaw.comwhile(q<p) {if(*q!=‘’*) {a=*q; i++;} q++;} while(*q) {a=*q; i++; q++;} a=‘\0’;}74: 第 74 题 学生的记录由学号和成绩组成 n 名学生的数据已在主函数中放 入结构体数组 s 中,请编写函数 fun,它的功能时:把分数最低的学生数据放在 h 所指的数组中,注意:分数最低的学生可能不止一个,函数返回分数最低的学 生的人数。 答案: int fun(strec *a,strec *b) {int i,j=0,n=0, min=a[0].s; for(i=0;i<n;i++) if(a.s<min) min=a.s; for(i=0;i<n;i++) if(a.s==min) {*(b+j)=a; j++; n++;}} 75: 第 75 题 请编写函数 fun ,该函数的功能:将 m 行 n 列的二维数组中的 数据,按列的顺学依次放到一维数组中。 答案: void fun(int (*s)[]10,int *b,int *n,int mm,int nn) {int i,j; for(j=0;j<j++) for(i=0;i<i++) {b[*n]=*(*(s+i)+j); *n=*n+1;}}课后答案网,用心为你服务! 课后答案网 www.khdaw.com76: 第 76 题 请编写函数 fun,其功能时:计算并输出当 x&0.97 时下列多项 式的值,直到|sn-s(n-1)|&0.000001 为止。 Sn=1+0.5x+0.5(0.5-1)/2!x(2)+… +0.5(0.5-1)(0.5-2)…..(0.5-n+1)/n!x(n) 答案: .double fun(double x) {double s1=1.0,p=1.0,sum=0.0,s0,t=1.0; int n=1; do {s0=s1; sum+=s0; t*=n; p*=(0.5-n+1)*x; s1=p/t; n++;}while(fabs(s1-s0)&1e-6);}77: 第 77 题 请编写一个函数 fun,其功能是:将两个两位数的正整数 ab 合 并形成一个整数放在 c 中。合并方式是:将 a 数的十位和个位数依次放在 c 数的 个位和百位上,b 数的十位和个位数依次放在 c 数的十位和千位上。 答案: void fun(int a,int b,long *c) {*c=(b%10)*1000+(a%10)*100+(b/10)*10+a/10;} 78: 第 78 题 请编写函数 fun,其功能是:将 s 所指字符串中 ascii 值为偶 数的字符删除,串中剩余字符形成一个新串放在 t 所指的数组中。 答案: void fun(char *s,char t[]) {int i,j=0,n=strlen(s); for(i=0;i<n;i++) if (s%2!=0) {t[j]=s; j++;} t[j]=‘\0’;} 79: 第 79 题 已知学生的记录由学号和学习成绩构成,n 名学生的数据已存 入 a 结构体数组中。请编写函数 fun,该函数的功能是:找出成绩最低的学生记 录,通过形参返回主函数(规定只有一个最低分)。 答案:课后答案网,用心为你服务! 课后答案网 www.khdaw.comvoid fun(stu a[],stu *s) {int i, min=a[0].s; for(i=0;i<n;i++) if(a.s<min) {min=a.s; *s=a;}}80: 第 80 题 程序定义了 n×n 的二维数组,并在主函数中自动赋值。请编写 函数 fun,该函数的功能是:使数组左下半三角元素中的值乘以 n。 答案: fun(int a[][n],int n) {int i,j; for(i=0;i<n;i++) for(j=0;j<=i;j++) a[j]=a[j]*n;} 81: 第 81 题 请编写函数 fun,其功能使:将两个两位正整数 a b 合并形成 一个整数放在 c 中。合并的方式使:将 a 数的十位和个位数依次放在 c 数的百位 和个位上,b 数的十位和个位数依次放在 c 数的千位和十位上。 答案: void fun(int a,int b,long *c) {*c=(b/10)*1000+(a/10)*100+(b%10)*10+a%10;}82: 第 82 题 请编写一个函数 fun,它的功能使:计算 n 门课程的平均分, 计算结果作为函数值返回。 答案: float fun(float *a,int n) {float ave=0.0; for(i=0;i<n;i++) ave+=a; ave/=n;} 83: 第 83 题 假定输入的字符串中只包含字母和*号。请编写函数 fun,它的 功能使:将字符串尾部的*号全部删除,前面和中间的*号不删除。 答案:课后答案网,用心为你服务! 课后答案网 www.khdaw.comvoid fun(char *a) {int i=0; char *p,*q; p=q=a; while(*p) p++; p--; while(*p==‘*’) p--; while(q<=p) {a=*q; i++; q++;} a=‘\0’;} 84: 第 84 题 请编写函数 fun,其功能是:将两个两位数的正整数 a b 合并 形成一个整数放在 c 中,合并的方式是:将 a 数的十位和个位数依次放在 c 的个 位和百位上,b 数的十位和个位数依次放在 c 数的千位和十位上。 答案: void fun(int a,int b,long *c) {c=(b/10)*1000+(a%10)*100+(b%10)*10+a/10;}85: 第 85 题 n 名学生的成绩已在主函数中放入一个带头节点的链表结构中, h 指向链表的头节点。请编写函数 fun,它的功能是:求出平均分,由函数值返 回。 答案: double fun(strec *h) {double aver=0.0; while(h!=null) {aver+=h-&s; hy=h-&} aver/=n;} 86: 第 86 题 请编写函数 fun,计算并输出给定 10 个数的方差。 答案: double fun(double x[10]) {int i,j;课后答案网,用心为你服务! 课后答案网 www.khdaw.comdouble s=0.0,s1=0.0; for(i=0;i<10;i++) s1+=x; s1/=10; for(j=0;j<10;j++) s+=(x[j]-s1)*(x[j]-s1); s/=10; s=pow(s,0.5);} 87: 第 87 题 请编写函数 fun,其功能是:将两个两位数的正整数 a b 合并 形成一个整数放在 c 中。合并的方式是:将 a 数的十位和个位数依次放在 c 数 的千位和十位上,b 数的十位和个位数依次放在 c 数的个位和百位上。 答案: void fun(int a,int b,long *c) {*c=(a/10)*1000+(a%10)*10+(b%10)*100+b/10;} 88: 第 88 题 假定输入的字符串中只包含字母和*号。请编写函数 fun,它的 功能是: 除了字符串前导的*号之外, 将串中其他*号全部删除。 在编写函数亚时, 不得使用 c 语言提供的字符串函数。 答案: void fun(char *a) {int i=0; char *p=a; while(*p&&*p==‘*’) {a=*p; i++; p++;} while(*p) {if(*p!=‘*’) {a=*p; i++;} p++;} a=‘\0’;} 89: 第 89 题 学生的记录是由学号和成绩组成,n 名学生的数据已在主函数 中放入结构体数组 s 中,请编写函数 fun,它的功能是:把高于等于平均分的学 生数据放在 b 所指的数组中,高于等于平均分的学生人数通过形参 n 传回,平均 分通过函数值返回。 答案: double fun(strec *a,strec *b,int *n)课后答案网,用心为你服务! 课后答案网 www.khdaw.com{double aver=0.0; int i,j=0; for(i=0;i<n;i++) aver+=a.s; aver/=n; for(i=0;i<n;i++) if(a.s)&=aver} {*(b+j)=a; j++;} *n=j;}90: 第 90 题 请编写函数 fun,其功能是:计算并输出下列多项式 值:sn=(1-1/2)+(1/3-1/4)+…+(1/(2n-1)1/2n). 答案: sn=(1-1/2)+(1/3-1/4)+...+(1/(2n-1)1/2n). double fun(int n) { double sn=0.0; for(i=1;i<=n;i++) sn+=(1.0/(2*i-1)-1.0/(2*i));} 91: 第 91 题 请编写函数 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; } 92: 第 92 题 请编写函数 fun,它的功能是计算:s=(ln(1)+ln(2)+ln(3)+… +ln(m))(0.5),s 作为函数值返回。 答案: double fun(int m) { int I; double s=0.0, log(double x); for(i=1;i<=m;i++)课后答案网,用心为你服务! 课后答案网 www.khdaw.coms=s+log(i); s=sqrt(s); }93: 第 93 题 请编写函数 fun,它的功能是计算下列级数和,和值由函数值 返回。 S=1+x+x(2)/2!+x(3)/3!+…x(n)/n! 答案: double fun(double x, int n) { double s=1.0, p=1.0; int I,j,t; for(i=1;i<=n;i++) { t=1; for(j=1;j<=i;j++) t=t*j; p=p*x; s=s+p/t; } } 94: 第 94 题 规定输入字符串中只包含字母和*号。请编写函数 fun,它的功 能是:将函数字符串中的前导*号全部删除,中间和尾部的*号不删除。 答案: void fun(char *a) { int i=0; char *p=a; while(*p&&*p==‘*’) p++; while(*p) { a[i]=*p; i++; p++; } a[i]=‘\0’;课后答案网,用心为你服务! 课后答案网 www.khdaw.com} 95: 第 95 题 假定输入的字符串中只包含字母和*号。请编写函数 fun,它的 功能是:使字符串的前导*号不得多于 n 个;若多于 n 个,则删除多于的*号;若 少于或等于 n 个,则什么也不做。字符串中间和尾部的*号不删除。 答案: void fun(char *a, int n) { int i=0,k=0; char *t=a; while(*t==‘*’) { k++; t++; } t=a; if(k&n) t=a+k-n; while( *t) { a[i]=*t; i++; t++; } a[i]=‘\0’; } 96: 第 96 题 请编写函数 fun,其功能使:计算并输出给定数组(长度为 9) 中每相邻两个元素之平均值的平方根之和。 答案: double fun(double x[9]) { double sum=0.0; int I,j=1; for(i=0;i<9;i++) if(j<=8) { sum+=sqrt((x[i]+x[i+1])/2.0); j++; } }课后答案网,用心为你服务! 课后答案网 www.khdaw.com97: 第 97 题 请编写函数 fun,其功能是:计算并输出下列多项式值: s=1+1/(1+2)+1/(1+2+3)+..1/(1+2+3…+50) 答案: double fun(int n) { int I,j; double sum=0.0, for(i=1;i<=n;i++) { t=0.0; for(j=1;j<=I;j++) t+=j; sum+=1.0/t; } } 98: 第 98 题 请编写函数 fun,它的功能是:计算并输出 n(包括 n)以内能被 5 或 9 整除的所有自然数的倒数之和。 答案: double fun(int n) { int I; double sum=0.0; for(i=1;i<=n;i++) if(i%5==0 || i%9==0) sum+=1.0/I; } 99: 第 99 题 请编写函数 fun ,其功能是:计算并输出 3 到 n 之间所有素数 的平方根之和。 答案: double fun(int n) { int m,k,I; double s=0.0; for(m=3;m<=n;m++) { k=sqrt(m);课后答案网,用心为你服务! 课后答案网 www.khdaw.comfor(i=2;i<=k;i++) if(m%i==0) if(i&=k+1) s+=sqrt(m); } } 100: 第 100 题 请编写函数 fun,其功能是:计算并输出 s=1+(1+2(0.5))+(1+2(0.5)+3(0.5))+…+(1+2(0.5)+3(0.5)+…+n(0.5)) 答案: double fun(int n) { int I; double =1.0,p=1.0; for(i=2;i<=n;i++) { p+=pow(I,0.5); s+=p; } }课后答案网,用心为你服务!
赞助商链接

我要回帖

更多关于 找出最大的n个数 的文章

 

随机推荐