第41套
1.程序填空题
给定程序中,函数fun的功能是:统计所有小于等于n(n>2)的素数的个数,素数的个数作为函数值返回。
请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。
注意:不得增行或删行,也不得更改程序的结构!
#include <stdio.h> int fun(int n) { int i,j, count=1; printf("\nThe prime number between 2 to %d\n", n); printf("%5d",2); for (i=3; i<=n; i+=2) { /**********found**********/ for (___1___; j<i; j++) /**********found**********/ if (___2___%j == 0) break; /**********found**********/ if (___3___>=i) { count++; printf( count%15? "%5d":"\n%5d",i);} } return count; } int main() { int n=20, r; r = fun(n); printf("\nThe number of prime is : %d\n", r); return 0; }
2.程序修改题
给定程序中建立了一个带头结点的单向链表,并用随机函数为个结点数据域赋值。函数fun的功能是:求出单向链表结点(不包括头结点)数据域中的最大值,并且作为函数值返回。
请改正函数fun中指定部位的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
#include <stdio.h> #include <stdlib.h> typedef struct aa { int data; struct aa *next; } NODE; int fun(NODE *h) { int max=-1; NODE *p; /***********found**********/ p=h ; while(p) { if(p->data>max) max=p->data; /***********found**********/ p=h->next ; } return max; } NODE *creatlink(int n, int m) { NODE *h, *p, *s; int i; h=p=(NODE *)malloc(sizeof(NODE)); h->data=9999; for(i=1; i<=n; i++) { s=(NODE *)malloc(sizeof(NODE)); s->data=rand()%m; s->next=p->next; p->next=s; p=p->next; } p->next=NULL; return h; } void outlink(NODE *h) { NODE *p; p=h->next; printf("\nTHE LIST :\n\n HEAD "); while (p) { printf("->%d ",p->data); p=p->next; } printf("\n"); } int main() { NODE *head; int m; head=creatlink(12,100); outlink(head); m=fun(head); printf("\nTHE RESULT : %d\n",m); return 0; }
3.程序设计题
编写函数fun,它的功能是:将M行N列的二维数组中的数据,按行的顺序依次存放到一维数组中,一维数组中数据的个数存放在形参n所指的存储单元中。
例如,二维数组中的数据为:
33 33 33 33
44 44 44 44
55 55 55 55
则一维数组中的内容应是:
33 33 33 33 44 44 44 44 55 55 55 55
注意:请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include <stdio.h> void NONO(void); void fun(int (*s)[10],int *b,int *n,int mm,int nn) { } int main() { int w[10][10]={{33,33,33,33},{44,44,44,44},{55,55,55,55}},i,j ; int a[100] = {0}, n = 0 ; printf("The matrix:\n") ; for(i = 0 ; i < 3 ; i++) { for(j = 0 ; j < 4 ; j++) printf("%3d",w[i][j]) ; printf("\n") ; } fun(w, a, &n, 3, 4) ; printf("The A array:\n") ; for(i = 0 ; i < n ; i++) printf("%3d",a[i]); printf("\n\n") ; NONO(); return 0; } void NONO(void) {/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。*/ FILE *rf, *wf ; int i, j, k ; int w[10][10], a[100], n = 0, mm, nn ; rf = fopen("in.dat","r") ; wf = fopen("out.dat","w") ; for(k = 0 ; k < 5 ; k++) { fscanf(rf, "%d %d", &mm, &nn) ; for(i = 0 ; i < mm ; i++) for(j = 0 ; j < nn ; j++) fscanf(rf, "%d", &w[i][j]) ; fun(w, a, &n, mm, nn) ; for(i = 0 ; i < n ; i++) fprintf(wf, "%3d", a[i]); fprintf(wf, "\n") ; } fclose(rf) ; fclose(wf) ; }
1.(1)j=2 (2)i (3)j 2. p=h->next; p=p->next ; 3. void fun(int (*s)[10],int *b,int *n,int mm,int nn) { int i,j,k=0; for (i=0;i<mm;i++) for (j=0;j<nn;j++) b[k++]=s[i][j]; *n=k; }第41套参考答案
第42套
1.程序填空题
给定程序中,函数fun的功能是:计算N*N矩阵的主对角线元素和反向对角线元素之和,并作为函数值返回。
例如,N=3,有下列矩阵
1 2 3
4 5 6
7 8 9
fun函数首先累加1、5、9,再累加3、5、7,函数返回值为30。
请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。
注意:不得增行或删行,也不得更改程序的结构!
#include <stdio.h> #define N 4 int fun(int t[][N], int n) { int i, sum; /**********found**********/ ___1___; for(i=0; i<n; i++) /**********found**********/ sum+=___2___ ; for(i=0; i<n; i++) /**********found**********/ sum+= t[i][n-i-___3___] ; return sum; } int main() { int t[][N]={21,2,13,24,25,16,47,38,29,11,32,54,42,21,3,10},i,j; printf("\nThe original data:\n"); for(i=0; i<N; i++) { for(j=0;j<N;j++) printf("%4d",t[i][j]); printf("\n"); } printf("The result is: %d",fun(t,N)); return 0; }
2.程序修改题
给定程序中,函数fun的功能是:分别统计字符串中大写字母和小写字母的个数。
例如,给字符串s输入:AaaaBBb123CCccccD,则应输出结果:upper=6,lower=8。
请改正函数fun中指定部位的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
#include <stdio.h> /**********found**********/ void fun (char *s,int a,int b) { while (*s) { if ( *s >= 'A' && *s <= 'Z' ) /**********found**********/ *a=a+1 ; if ( *s >= 'a' && *s <= 'z' ) /**********found**********/ *b=b+1; s++; } } int main() { char s[100]; int upper = 0, lower = 0 ; printf( "\nPlease a string : " ); gets ( s ); fun(s, &upper, &lower); printf( "\n upper = %d lower = %d\n", upper, lower ); return 0; }
3.程序设计题
编写函数fun,它的功能是:使实型数保留2位小数,并对第3位进行四舍五入(规定实型数为正数)。
例如,实型数为1234.567,则函数返回1234.57;实型数为1234.564,则函数返回1234.56。
注意:请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include <stdio.h> void NONO(void); float fun (float h) { } int main() { float a; printf ("Enter a: "); scanf ( "%f", &a ); printf ( "The original data is : " ); printf ( "%f \n\n", a ); printf ( "The result : %.2f\n", fun ( a ) ); NONO(); return 0; } void NONO(void) {/* 请在此函数内打开文件,输入测试数据,调用 fun 函数, 输出数据,关闭文件。 */ int i ; float a ; FILE *rf, *wf ; rf = fopen("in.dat","r") ; wf = fopen("out.dat","w") ; for(i = 0 ; i < 20 ; i++) { fscanf(rf, "%f", &a) ; fprintf(wf, "%f\n", fun(a)) ; } fclose(rf) ; fclose(wf) ; }
1.(1)sum=0 (2)t[i][i] (3)1 2. void fun (char *s,int *a,int *b) *a=*a+1 ; *b=*b+1; 3. float fun (float h) { float x; x=(int)(h*100+0.5)/100.0; return x; }第42套参考答案
第43套
1.程序填空题
给定程序中,函数fun的功能是:计算
直到|xn/n!|<10-6。
例如,若x=2.5,函数值为:12.182494。
请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。
注意:不得增行或删行,也不得更改程序的结构!
#include <stdio.h> #include <math.h> double fun(double x) { double f, t; int n; /**********found**********/ f = 1.0+___1___; t = x; n = 1; do { n++; /**********found**********/ t *= x/___2___; /**********found**********/ f += ___3___; }while (fabs(t) >= 1e-6); return f; } int main() { double x, y; x=2.5; y = fun(x); printf("\nThe result is :\n"); printf("x=%-12.6f y=%-12.6f \n", x, y); return 0; }
2.程序修改题
给定程序中,函数insert的功能是:利用插入排序法对字符串中的字符按从小到大的顺序进行排序。插入法的基本算法是:先对字符串中的头两个元素进行排序,然后把第3个字符插入到前两个字符中,插入后前三个字符依然有序;再把第四个字符插入到前三个字符中,插入后前四个字符依然有序,……。
请改正函数fun中指定部位的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
#include <stdio.h> #include <string.h> #define N 80 void insert(char *aa) { int i,j,n; char ch; /**********found**********/ n=strlen[aa]; for( i=1; i<n ;i++ ) { /**********found**********/ c=aa[i]; j=i-1; while ((j>=0) && ( ch<aa[j] )) { aa[j+1]=aa[j]; j--; } aa[j+1]=ch; } } int main() { char a[N]="QWERTYUIOPASDFGHJKLMNBVCXZ"; printf("The original string : %s\n",a); insert(a) ; printf("The string after sorting : %s\n",a); return 0; }
3.程序设计题
N名学生的成绩已在主函数中放入一个带头结点的单向链表中,h指向链表的头结点。编写函数fun,它的功能是:找出学生的最高分,由函数值返回。
注意:请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include <stdio.h> #include <stdlib.h> #define N 8 void NONO(void); struct slist { double s; struct slist *next; }; typedef struct slist STREC; double fun(STREC *h) { } STREC * creat(double *s) { STREC *h,*p,*q; int i=0; h=p=(STREC*)malloc(sizeof(STREC)); p->s=0; while(i<N) { q=(STREC*)malloc(sizeof(STREC)); q->s=s[i]; i++; p->next=q; p=q; } p->next=0; return h; } void outlist(STREC *h) { STREC *p; p=h->next; printf("head"); do { printf("->%2.0f",p->s); p=p->next; } while(p!=0); printf("\n\n"); } int main() { double s[N]={85,76,69,85,91,72,64,87},max; STREC *h; h=creat( s ); outlist(h); max=fun(h); printf("max=%6.1f\n",max); NONO(); return 0; } void NONO(void) {/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *in, *out ; int i,j ; double s[N],max; STREC *h ; in = fopen("in.dat","r") ; out = fopen("out.dat","w") ; for(i = 0 ; i < 10 ; i++) { for(j=0 ; j < N; j++) fscanf(in, "%lf,", &s[j]); h=creat( s ); max=fun( h ); fprintf(out, "%6.1lf\n", max); } fclose(in) ; fclose(out) ; }
1.(1)x (2)n (3)t 2. n=strlen(aa); ch=aa[i]; 3. double fun(STREC *h) { double max=-1; STREC *p; p=h->next; while (p) { if (max<p->s) max=p->s; p=p->next; } return max; }第43套参考答案
第44套
1.程序填空题
给定程序中,函数fun的功能是:将形参指针所指结构体数组中的三个元素按num成员进行升序排列。
请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。
注意:不得增行或删行,也不得更改程序的结构!
#include <stdio.h> typedef struct { int num; char name[10]; }PERSON; /**********found**********/ void fun(PERSON ___1___) { /**********found**********/ ___2___ temp; if(std[0].num>std[1].num) { temp=std[0]; std[0]=std[1]; std[1]=temp;} if(std[0].num>std[2].num) { temp=std[0]; std[0]=std[2]; std[2]=temp;} if(std[1].num>std[2].num) { temp=std[1]; std[1]=std[2]; std[2]=temp;} } int main() { PERSON std[ ]={5,"Zhanghu",2,"WangLi",6,"LinMin"}; int i; /**********found**********/ fun(___3___); printf("\nThe result is :\n"); for(i=0; i<3; i++) printf("%d,%s\n",std[i].num,std[i].name); return 0; }
2.程序修改题
给定程序中,函数fun的功能是:计算并输出high以内最大的10个素数之和,若high以内的素数不足10个,则将high以内所有的素数求和即可。
例如,若high的值为100,则函数返回值为732。
请改正函数fun中指定部位的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
#include <stdio.h> int fun(int high) { int sum=0, n=0, j, yes; /************found************/ while (high >= 2 || n < 10) { yes = 1; for (j=2; j<=high/2; j++ ) /************found************/ if (high % j !=0 ) { yes=0; break; } if (yes) { sum +=high; n++; } high--; } return sum ; } int main() { printf("%d\n", fun (100)); return 0; }
3.程序设计题
编写函数fun,它的功能是:利用以下所示的简单迭代法求方程cos(x)-x=0的一个实根。
迭代步骤如下:
Xn+1=cos(Xn)
(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。
注意:请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include <stdio.h> #include <math.h> void NONO(void); float fun() { } int main() { printf("Root =%f\n", fun()); NONO(); return 0; } void NONO(void) {/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *wf ; wf = fopen("out.dat","w") ; fprintf(wf, "%f\n", fun()) ; fclose(wf) ; }
1.(1)std[] (2)PERSON (3)std 2. while (high >= 2 && n<10) if (high % j ==0 ) 3. float fun() { float x0,x1=0.0; do { x0=x1; x1=cos(x0); } while (fabs(x0-x1)>=0.000001); return x1; }第44套参考答案
第45套
1.程序填空题
给定程序中,通过定义并赋初值的方式,利用结构体变量存储了一名学生的信息。函数fun的功能是:输出这位学生的信息。
请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。
注意:不得增行或删行,也不得更改程序的结构!
#include <stdio.h> typedef struct { int num; char name[9]; char sex; struct { int year,month,day;} birthday; float score[3]; }STU; /**********found**********/ void show(STU ___1___) { int i; printf("\n%d %s %c %d-%d-%d",tt.num, tt.name,tt.sex,tt.birthday.year, tt.birthday.month,tt.birthday.day); for(i=0; i<3; i++) /**********found**********/ printf("%5.1f", ___2___); printf("\n"); } int main( ) { STU std={1,"Zhanghua",'M',1961,10,8,76.5,78.0,82.0}; printf("\nA student data:\n"); /**********found**********/ show(___3___); return 0; }
2.程序修改题
由N个有序整数组成的数列已放在一维数组中。给定程序中,函数fun的功能是:利用折半查找算法查找整数m在数组中的位置。若找到,返回其下部值,反之,返回-1。
折半查找的基本算法是:每次查找前先确定数组中待查的范围:low和high(low<high),然后把m与中间位置(mid)中元素的值进行比较。如果m的值大于中间位置元素中的值,则下一次的查找范围放在中间位置之后的元素;反之,下一次的查找范围落在中间位置之前的元素中。直到low>high或找到元素,查找结束。
请改正函数fun中指定部位的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
#include <stdio.h> #define N 10 /************found************/ void fun(int a[], int m ) { int low=0,high=N-1,mid; while(low<=high) { mid=(low+high)/2; if(m<a[mid]) high=mid-1; /************found************/ else If(m > a[mid]) low=mid+1; else return(mid); } return(-1); } int main() { int i,a[N]={-3,4,7,9,13,45,67,89,100,180 },k,m; printf("a数组中的数据如下:"); for(i=0;i<N;i++) printf("%d ", a[i]); printf("Enter m: "); scanf("%d",&m); k=fun(a,m); if(k>=0) printf("m=%d,index=%d\n",m,k); else printf("Not be found!\n"); return 0; }
3.程序设计题
假定输入的字符串中只包含字母和*号。编写函数fun,它的功能是:除了尾部的*号之外,将字符串中其他*号全部删除。形参p已指向字符串中最后一个字母。在编写函数时,不得使用C语言提供的字符串函数。
例如,字符串中的内容为:*****A*BC*DEF*G***,删除后,字符串的内容应当为:ABCDEFG***。
注意:请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include <stdio.h> void NONO(void); void fun( char *a, char *p) { } int main() { char s[81],*t; printf("Enter a string:\n");gets(s); t=s; while (*t) t++; t--; while (*t=='*') t--; fun(s,t); printf("The string after deleted:\n");puts(s); NONO(); return 0; } void NONO(void) {/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *in, *out ; int i ; char s[81],*t ; in = fopen("in.dat","r") ; out = fopen("out.dat","w") ; for(i = 0 ; i < 10 ; i++) { fscanf(in, "%s", s) ; t=s; while(*t) t++; t--; while(*t=='*') t--; fun(s,t); fprintf(out, "%s\n", s) ; } fclose(in) ; fclose(out) ; }
1.(1)tt (2)tt.score[i] (3)std 2. int fun(int a[], int m) else if(m > a[mid]) 3. void fun( char *a, char *p) { char *p1,*p2; p1=p2=a; while (*p1!='\0') { if ((p1<p && *p1!='*') || p1>=p) { *p2=*p1; p2++; } p1++; } *p2='\0'; }第45套参考答案 标签:std,函数,int,void,45,题集,C语言,printf,fun From: https://www.cnblogs.com/cs-whut/p/16861860.html