《2022年C程序设计期末上机考试经典题 .pdf》由会员分享,可在线阅读,更多相关《2022年C程序设计期末上机考试经典题 .pdf(31页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C 程序设计期末上机考试经典题(后附详细答案 ) (1)【程序填空】- 功能:将一个字符串中下标为m 的字符开始的全部字符复制成为另一个字符串。-*/ #include void strcopy(char *str1,char *str2,int m) char *p1,*p2; /*SPACE*/ 【?】; p2=str2; while(*p1) /*SPACE*/ 【?】; /*SPACE*/ 【?】; 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 1 页,共
2、 31 页 - - - - - - - - - main() int m; char str180,str280; gets(str1); scanf(%d,&m); /*SPACE*/ 【?】; puts(str1);puts(str2); (2)/*- 【程序填空】- 功能:下面函数为二分法查找key 值。数组中元素已递增排序,若找到 key 则返回对应的下标,否则返回-1。-*/ #include fun(int a,int n,int key) 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - -
3、- - - - - - - - 第 2 页,共 31 页 - - - - - - - - - int low,high,mid; low=0; high=n-1; /*SPACE*/ while(【?】) mid=(low+high)/2; if(keyamid) /*SPACE*/ 【?】; else /*SPACE*/ 【?】; return -1; main() 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 3 页,共 31 页 - - - - - - -
4、- - int a10=1,2,3,4,5,6,7,8,9,10; int b,c; b=4; c=fun(a,10,b); if(c=1) printf(not found); else printf(position %dn,c); (3) 【程序填空】功能:产生并输出杨辉三角的前七行。1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 -*/ #include 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - -
5、 - - - 第 4 页,共 31 页 - - - - - - - - - main ( ) int a77; int i,j; for (i=0;i7;i+) ai0=1; /*SPACE*/ 【?】; for (i=2;i7;i+) /*SPACE*/ for (j=1;j 【?】;j+) /*SPACE*/ aij=ai-1j-1+ai-1j; for (i=0;i7;i+) /*SPACE*/ for (j=0; 【?】;j+) printf(%6d,aij); printf(n); 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精
6、选学习资料 - - - - - - - - - - - - - - - 第 5 页,共 31 页 - - - - - - - - - (4)【程序改错】- 功能:利用二维数组输出如图所示的图形。* * * * * * * -*/ #include #include /*FOUND*/ #define N= 7 main() char aNN; 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 6 页,共 31 页 - - - - - - - - - int i,j,z
7、; for(i=0;iN;i+) for(j=0;jN;j+) /*FOUND*/ aij=; z=0; for(i=0;i(N+1)/2;i+) for(j=z;jN-z;j+) aij=*; z=z+1; /*FOUND*/ z=0; for(i=(N+1)/2;iN;i+) z=z-1; for(j=z;jN-z;j+) aij=*; for(i=0;iN;i+) 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 7 页,共 31 页 - - - - - - -
8、 - - for(j=0;jN;j+) /*FOUND*/ printf(%d,aij); printf(n); (5) /*- 【程序改错】- 功能:将字符串 s中最后一次出现的子字符串t1 替换成字符串 t2, 所形成的新串放在w 所指的数组中,在此处,要求t1 和 t2 所指字符串的长度相同。例如:当 s所指字符串中的内容为 abcdabfabc,t1 中的内容为ab,t2 中的内容为 99时,结果 w 所指数组中的内容应为abcdabf99c。-*/ #include #include #include 名师归纳总结 精品学习资料 - - - - - - - - - - - - - -
9、 -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 8 页,共 31 页 - - - - - - - - - void fun (char *s, char *t1, char *t2 , char *w) char *p , *r, *a; strcpy( w, s ); /*FOUND*/ while ( w ) p = w; r = t1; while ( *r ) /*FOUND*/ if ( *r = *p ) r+; p+; else break; /*FOUND*/ if ( *r = /0 ) a = w; w+; r = t2; 名
10、师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 9 页,共 31 页 - - - - - - - - - while ( *r ) /*FOUND*/ a = *r; a+; r+; main() char s100, t1100, t2100, w100; printf(nPlease enter string S:); scanf(%s, s); printf(nPlease enter substring t1:); scanf(%s, t1); printf(
11、nPlease enter substring t2:); scanf(%s, t2); if ( strlen(t1)=strlen(t2) ) fun( s, t1, t2, w); printf(nThe result is : %sn, w); else printf(nError : strlen(t1) != strlen(t2)n); 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 10 页,共 31 页 - - - - - - - - - (6) 【
12、程序改错】功能:给定 n 个实数,输出平均值,并统计在平均值以下(含平均值)的实数个数。例如: n=6 时,输入 23.5, 45.67, 12.1, 6.4 ,58.9, 98.4所得平均值为 40.828335,在平均值以下的实数个数应为3。-*/ #include int fun(double x,int n) int j,c=0; /*FOUND*/ float j=0; /*FOUND*/ for(j=0;j=n;j+) xa+=xj; xa=xa/n; printf(ave=%fn,xa); /*FOUND*/ for(j=0;j=n;j+) if(xj=xa) c+; 名师归纳总
13、结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 11 页,共 31 页 - - - - - - - - - /*FOUND*/ return xa; main() double x=23.5,45.67,12.1,6.4,58.9,98.4; printf(%dn,fun(x,6); (7) /*- 【程序设计】- 功能:从键盘输入一个大于3 的整数,调用函数fun 判断其是否素数,然后在main 函数中输出相应的结论信息。例如: 7 是素数, 8 不是素数。请编写fun 函
14、数。素数是仅能被 1 和自身整除的数-*/ 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 12 页,共 31 页 - - - - - - - - - #include void wwjt(); int fun(int n) /*Program*/ /* End */ main() int m,flag; printf(input an integer:); scanf(%d,&m); flag=fun(m); 名师归纳总结 精品学习资料 - - - - - - -
15、 - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 13 页,共 31 页 - - - - - - - - - if(flag) printf(%d is a prime.n,m); else printf(%d is not a prime.n,m); wwjt(); void wwjt() FILE *IN,*OUT; int iIN,iOUT,i; IN=fopen(5.IN,r); if(IN=NULL) printf(Please Verify The Currernt Dir.it May Be Changed
16、); OUT=fopen(5.out,w); if(OUT=NULL) printf(Please Verify The Current Dir. it May Be Changed); for(i=0;i10;i+) 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 14 页,共 31 页 - - - - - - - - - fscanf(IN,%d,&iIN); iOUT=fun(iIN); fprintf(OUT,%dn,iOUT); fclose(IN); f
17、close(OUT); (8) 【程序设计】- 功能:编写函数 fun 求 1!+2!+3!+ +n!的和,在 main 函数中由键盘输入n 值,并输出运算结果。请编写fun 函数。例如:若 n 值为 5,则结果为 153。-*/ #include void wwjt(); long int fun(int n) 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 15 页,共 31 页 - - - - - - - - - /*Program*/ /* End */ m
18、ain() int n; long int result; scanf(%d,&n); result=fun(n); printf(%ldn,result); wwjt(); 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 16 页,共 31 页 - - - - - - - - - void wwjt() FILE *IN,*OUT; int i; int iIN; long int iOUT; IN=fopen(in.dat,r); if(IN=NULL) pri
19、ntf(Please Verify The Currernt Dir.It May Be Changed); OUT=fopen(out.dat,w); if(OUT=NULL) printf(Please Verify The Current Dir. It May Be Changed); for(i=0;i10;i+) fscanf(IN,%d,&iIN); iOUT=fun(iIN); fprintf(OUT,%ldn,iOUT); 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - -
20、- - - - - 第 17 页,共 31 页 - - - - - - - - - fclose(IN); fclose(OUT); 答案(1) #include void strcopy( char *str1,char *str2, int m) char *p1, *p2; /*SPACE*/ p1=str1+m; p2=str2; while(*p1) /*SPACE*/ *p2+=* p1+ ; /*SPACE*/ *p2=0 ; main() int m; char str180,str280; gets(str1); 名师归纳总结 精品学习资料 - - - - - - - - -
21、 - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 18 页,共 31 页 - - - - - - - - - scanf( %d ,&m); /*SPACE*/ strcopy(str1,str2,m); puts(str1);puts(str2); (2) #include fun( int a,int n,int key) int low,high,mid; low=0; high=n- 1; /*SPACE*/ while(low= high) mid=(low+high)/ 2; if (key amid) /*SPAC
22、E*/ low=mid+1; else名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 19 页,共 31 页 - - - - - - - - - /*SPACE*/ return mid; return- 1; main() int a10=1,2,3,4,5,6,7,8,9,10; int b,c; b=4; c=fun(a,10,b); if (c= 1) printf( not found ); elseprintf( position %dn,c); (3)
23、 #include main ( ) int a77; int i,j; for (i=0;i 7;i+ ) 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 20 页,共 31 页 - - - - - - - - - ai0 =1; /*SPACE*/aii =1; for (i=2;i 7;i+ ) /*SPACE*/ for (j=1;j i;j+ ) /*SPACE*/ aij =ai- 1j- 1+ai- 1j; for (i=0;i 7;i+ ) /*SP
24、ACE*/ for (j=0;j= i;j+ ) printf( %6d ,aij); printf( n ); (4) #include #include /*FOUND*/ #define N 7 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 21 页,共 31 页 - - - - - - - - - main() char aNN; int i,j,z; for (i=0;i N;i+ ) for (j =0;j N;j + ) /*FOUND*/ aij
25、= ; z=0; for (i=0;i (N+1)/ 2;i+ ) for (j =z;j N- z;j+ ) aij =*; z=z+1; /*FOUND*/ z=z- 1; for (i=(N+1) / 2;i N;i+ ) z=z- 1; for (j =z;j N- z;j+ ) aij =*; 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 22 页,共 31 页 - - - - - - - - - for (i=0;i N;i+ ) for (j =0;
26、j N;j + ) /*FOUND*/ printf( %c ,aij); printf( n ); (5) #include #include #include voidfun ( char*s, char *t1, char *t2 , char *w) char*p , *r, *a; strcpy( w, s ); /*FOUND*/ while ( *w ) p = w; r = t1; while ( *r ) /*FOUND*/ 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - -
27、 - - - - - 第 23 页,共 31 页 - - - - - - - - - if ( *r = *p ) r+ ; p+ ; elsebreak ; /*FOUND*/ if ( *r= 0 ) a = w; w+ ; r = t2; while ( *r ) /*FOUND*/ *a = *r; a+ ; r+ ; main() 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 24 页,共 31 页 - - - - - - - - - chars100,
28、 t1100, t2100, w100; printf( nPlease enter string S:); scanf( %s , s); printf( nPlease enter substring t1:); scanf( %s , t1); printf( nPlease enter substring t2:); scanf( %s , t2); if ( strlen(t1) = strlen(t2) ) fun( s, t1, t2, w); printf( nThe result is : %sn , w); elseprintf( nError : strlen(t1) !
29、= strlen(t2)n); (6) #include int fun( double x,int n) int j,c=0; /*FOUND*/ float xa=0; /*FOUND*/ for (j=0;j n;j+ ) xa+= xj; 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 25 页,共 31 页 - - - - - - - - - xa=xa/ n; printf( ave=%fn,xa); /*FOUND*/ for (j=0;j n;j+
30、) if (xj = xa) c+ ; /*FOUND*/ return c; main() double x=23.5,45.67,12.1,6.4,58.9,98.4 ; printf( %dn ,fun(x,6); (7) #include void wwjt(); int fun( int n) /*Program*/ int i=2,j; 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 26 页,共 31 页 - - - - - - - - - while
31、(i n) if(n%i= 0) i=n; i+ ; if (i= n+1) j=0; else j=1; return j; /* End */ main() int m,flag; printf( input an integer:); scanf( %d ,&m); flag =fun(m); if (flag) printf( %d is a prime.n,m); else printf( %d is not a prime.n,m); wwjt(); 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - -
32、 - - - - - - - - - - 第 27 页,共 31 页 - - - - - - - - - void wwjt() FILE *IN,*OUT; int iIN,iOUT,i; IN=fopen( 5.IN,r ); if (IN= NULL) printf( Please Verify The Currernt Dir.it May Be Changed); OUT=fopen( 5.out ,w ); if (OUT= NULL) printf( Please Verify The Current Dir. it May Be Changed); for (i=0;i 10;
33、i + ) fscanf(IN, %d ,&iIN); iOUT=fun(iIN); fprintf(OUT, %dn ,iOUT); 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 28 页,共 31 页 - - - - - - - - - fclose(IN); fclose(OUT); (8) #include void wwjt(); long intfun( int n) /*Program*/ long int sum,temp; int i; sum=
34、0; temp =1; for (i=1;i = n;i+ ) temp *=i; sum+= temp; return sum; /* End */ 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 29 页,共 31 页 - - - - - - - - - main() int n; long int result; scanf( %d ,&n); result =fun(n); printf( %ldn ,result); wwjt(); void wwjt()
35、 FILE *IN,*OUT; int i; int iIN; long int iOUT; IN=fopen( in.dat ,r ); if (IN= NULL) printf( Please Verify The Currernt Dir.It May Be Changed); 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 30 页,共 31 页 - - - - - - - - - OUT=fopen( out.dat ,w); if (OUT= NULL) printf( Please Verify The Current Dir. It May Be Changed); for (i=0;i 10;i + ) fscanf(IN, %d ,&iIN); iOUT=fun(iIN); fprintf(OUT, %ldn ,iOUT); fclose(IN); fclose(OUT); 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 31 页,共 31 页 - - - - - - - - -
限制150内