《C语言期末复习试题(53页).doc》由会员分享,可在线阅读,更多相关《C语言期末复习试题(53页).doc(53页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-C语言期末复习试题-第 53 页试卷编号:10767所属语言:C语言试卷总分:570分共有题型:1种一、程序设计 共57题 (共计570分)第1题 (10.0分) 题号:374 难度:易 第2章【程序设计】功能:编写函数实现两个数据的交换,在主函数中输入任 意三个数据,调用函数对这三个数据从大到小排序。#includevoid wwjt(); void swap(int *a,int *b) /*Program*/ /* End */main() int x,y,z; scanf(%d%d%d,&x,&y,&z); if(xy)swap(&x,&y); if(xz)swap(&x,&z);
2、if(yz)swap(&y,&z); printf(%3d%3d%3d,x,y,z); wwjt();void wwjt() FILE *IN,*OUT; int m,n; int i2; IN=fopen(in.dat,r); if(IN=NULL) printf(Read FILE Error); OUT=fopen(out.dat,w); if(OUT=NULL) printf(Write FILE Error); for(n=0;n3;n+) for(m=0;m2;m+) fscanf(IN,%d,&im); swap(&i0,&i1); fprintf(OUT,%dn,i0); fp
3、rintf(OUT,%dn,i1); fclose(IN); fclose(OUT);答案:-int k; k=*a; *a=*b; *b=k;第2题 (10.0分) 题号:381 难度:易 第2章【程序设计】功能:求一批数中小于平均值的数的个数。#includevoid wwjt(); int average_num(int a,int n) /*Program*/ /* End */main() int n,a100,i,num; scanf(%d,&n); for(i=0;in;i+) scanf(%d,&ai); num=average_num(a,n); printf(the num
4、 is:%dn,num); wwjt();void wwjt() FILE *IN,*OUT; int n; int i10; int o; IN=fopen(in.dat,r); if(IN=NULL) printf(Read FILE Error); OUT=fopen(out.dat,w); if(OUT=NULL) printf(Write FILE Error); for(n=0;n5;n+) fscanf(IN,%d,&in); o=average_num(i,5); fprintf(OUT,%dn,o); fclose(IN); fclose(OUT);答案:-int i,sum
5、=0,k=0; double average; for(i=0;in;i+) sum=sum+ai; average=sum*1.0/n; for(i=0;iai) k+;return(k);第3题 (10.0分) 题号:406 难度:易 第2章【程序设计】功能:编写函数fun求1000以内所有7的倍数之和。#define N 1000#include void wwjt(); int fun(int m) /*Program*/ /* End */void main() int sum; sum=fun(7); printf(%d以内所有%d的倍数之和为:%dn,N,7,sum); wwjt
6、();void wwjt() FILE *IN,*OUT; int n; int i10; int o; OUT=fopen(out.dat,w); if(OUT=NULL) printf(Write FILE Error); o = fun(6); fprintf(OUT,%dn,o); fclose(IN); fclose(OUT);答案:- int s=0,i; for(i=1;iN;i+) if(i%m=0) s+=i; return s;第4题 (10.0分) 题号:324 难度:易 第2章【程序设计】功能:能计算从1开始到n的自然数中偶数的平方的和,n由 键盘输入,并在main()
7、函数中输出。(n是偶数)#include void wwjt(); int fun(int n) /*Program*/ /* End */main() int m; printf(Enter m: ); scanf(%d, &m); printf(nThe result is %dn, fun(m); wwjt();void wwjt() FILE *IN,*OUT; int t; int o; int c; IN=fopen(in.dat,r); if(IN=NULL) printf(Read FILE Error); OUT=fopen(out.dat,w); if(OUT=NULL)
8、printf(Write FILE Error); for(c=1;c=5;c+) fscanf(IN,%d,&t); o=fun(t); fprintf(OUT,%dn,o); fclose(IN); fclose(OUT);答案:-int sum,i;sum =0;for(i=2;i=n;i=i+2)sum=sum+i*i;return(sum);第5题 (10.0分) 题号:2 难度:中 第1章【程序设计】题目:写程序求1-3+5-7+-99+101的值要求:使用程序中定义的变量#includestdio.hvoid wwjt();/函数功能:求1-3+5-7+-+n的值int fun(
9、int n)int i,s=0,f=1;/i定义为循环变量,s为1-3+5-7+-n的值/*Program*/* End */ return s;main() printf(%d,fun(101); wwjt();void wwjt() FILE *IN,*OUT; int i,n; IN=fopen(in.dat,r); if(IN=NULL) printf(Please Verify The Current Dir.It May Be Changed); OUT=fopen(out.dat,w); if(OUT=NULL) printf(Please Verify The Current
10、Dir. It May Be Changed); for(i=0;i5;i+) fscanf(IN,%i,&n); fprintf(OUT,%ldn,fun(n); fclose(IN); fclose(OUT);答案:for (i=1;i=n;i+=2)s=s+i*f;f=-f;第6题 (10.0分) 题号:357 难度:易 第2章【程序设计】功能:根据整型形参m,计算如下公式的值: y=1/5+1/61/71/81/9+1/10.1/(m+5)#include void wwjt(); double fun(int m) /*Program*/ /* End */main() int n;
11、 printf(Enter n: ); scanf(%d, &n); printf(nThe result is %1fn, fun(n); wwjt(); void wwjt() FILE *IN,*OUT; int i ; int t; double o; IN=fopen(in.dat,r); if(IN=NULL) printf(Read FILE Error); OUT=fopen(out.dat,w); if(OUT=NULL) printf(Write FILE Error); for(i=0;i5;i+) fscanf(IN,%d,&t); o=fun(t); fprintf(
12、OUT,%fn,o); fclose(IN); fclose(OUT);答案:- double y=0; int i; for(i=0; i=m; i+) y+=1.0/(i+5); return(y);第7题 (10.0分) 题号:392 难度:中 第2章【程序设计】功能:求一批数中最大值和最小值的积。#define N 30#include stdlib.h#include void wwjt(); int max_min(int a,int n) /*Program*/ /* End */main() int aN,i,k; for(i=0;iN;i+) ai=random(51)+10
13、; for(i=0;iN;i+) printf(%5d,ai); if(i+1)%5=0) printf(n); k=max_min(a,N); printf(the result is:%dn,k); wwjt();void wwjt() FILE *IN,*OUT; int n; int i10; int o; IN=fopen(in.dat,r); if(IN=NULL) printf(Read FILE Error); OUT=fopen(out.dat,w); if(OUT=NULL) printf(Write FILE Error); for(n=0;n10;n+) fscanf(
14、IN,%d,&in); o=max_min(i,10); fprintf(OUT,%dn,o); fclose(IN); fclose(OUT);答案:- int i,max,min; max=min=a0; for(i=1;imax) max=ai; else if(aimin) min=ai; return(max*min);第8题 (10.0分) 题号:342 难度:中 第2章【程序设计】功能:在键盘上输入一个3行3列矩阵的各个元素的值(值 为整数),然后输出矩阵第一行与第三行元素之和, 并在fun()函数中输出。#include void wwjt(); void fun(int a3
15、3) /*Program*/ /* End */main() int i,j,s,a33; for(i=0;i3;i+) for(j=0;j3;j+) scanf(%d,&aij); s=fun(a); printf(Sum=%dn,s); wwjt();void wwjt() FILE *IN,*OUT; int m; int n; int i33; int o; IN=fopen(in.dat,r); if(IN=NULL) printf(Read FILE Error); OUT=fopen(out.dat,w); if(OUT=NULL) printf(Write FILE Error
16、); for(m=0;m3;m+) for(n=0;n3;n+) fscanf(IN,%d,&imn); o=fun(i); fprintf(OUT,%dn,o); getch(); fclose(IN); fclose(OUT);答案:-int sum;int i,j;sum=0;for(i=0;i3;i+=2)for(j=0;j3;j+) sum=sum+aij; return sum;第9题 (10.0分) 题号:364 难度:中 第2章【程序设计】功能:求一个四位数的各位数字的立方和。#include void wwjt(); int fun(int n) /*Program*/ /*
17、 End */main() int k; k=fun(1234); printf(k=%dn,k); wwjt();void wwjt() FILE *IN,*OUT; int iIN,iOUT,i; IN=fopen(in.dat,r); if(IN=NULL) printf(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;i0) d=n%
18、10; s+=d*d*d; n/=10; return s;第10题 (10.0分) 题号:502 难度:中 第20章#include 【程序设计】题目:用while语句求1100的累计和。void wwjt(); int fun(int n) /*Program*/ /* End */void main() int sum = 0; sum=fun(100); printf (sum = %dn, sum); wwjt();void wwjt() FILE *IN,*OUT; int i; int iIN,iOUT; IN=fopen(in.dat,r); if(IN=NULL) print
19、f(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;i5;i+) fscanf(IN,%d,&iIN); iOUT=fun(iIN); fprintf(OUT,%dn,iOUT); fclose(IN); fclose(OUT);答案: int i=1,sum=0; while(i=n) sum=sum+i; i+; return sum;第
20、11题 (10.0分) 题号:53 难度:中 第1章【程序设计】功能:求一个四位数的各位数字的立方和#include void wwjt();int fun(int n) /*Program*/ /* End */main() int k; k=fun(1234); printf(k=%dn,k); wwjt();void wwjt() FILE *IN,*OUT; int iIN,iOUT,i; IN=fopen(22.IN,r); if(IN=NULL) printf(Please Verify The Currernt Dir.it May Be Changed); OUT=fopen(
21、22.out,w); if(OUT=NULL) printf(Please Verify The Current Dir. it May Be Changed); for(i=0;i0) d=n%10; s+=d*d*d; n/=10; return s;第12题 (10.0分) 题号:409 难度:易 第20章【程序设计】题目:输入华氏温度求摄氏温度。转换公式为 c=5/9(f-32), 输出结果取两位小数。#include void wwjt(); double fun(double m) /*Program*/ /* End */void main() double c,f; print
22、f(请输入一个华氏温度:); scanf(%f,&f); c=fun(f); printf(摄氏温度为:%5.2fn,c); wwjt();void wwjt() FILE *IN,*OUT; int i; double iIN,iOUT; IN=fopen(in.dat,r); if(IN=NULL) printf(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 Change
23、d); for(i=0;i5;i+) fscanf(IN,%f,&iIN); iOUT=fun(iIN); fprintf(OUT,%fn,iOUT); fclose(IN); fclose(OUT);答案: float n; n=(5.0/9.0)*(m-32); return n; 第13题 (10.0分) 题号:345 难度:中 第2章【程序设计】功能:将两个两位数的正整数a、b合并形成一个整数放在c 中。合并的方式是:将a数的十位和个位数依次放在 c数的千位和十位上, b数的十位和个位数依次放在 c数的个位和百位上。 例如:当a45,b=12。调用该函数后,c=4251。 #inclu
24、de void wwjt(); void fun(int a, int b, long *c) /*Program*/ /* End */main() int a,b; long c; printf(input a, b:); scanf(%d%d, &a, &b); fun(a, b, &c); printf(The result is: %ldn, c); wwjt(); void wwjt ( ) FILE *rf, *wf ; int i, a,b ; long c ; rf = fopen(in.dat, r) ; wf = fopen(out.dat,w) ; for(i = 0
25、; i 10 ; i+) fscanf(rf, %d,%d, &a, &b) ; fun(a, b, &c) ; fprintf(wf, a=%d,b=%d,c=%ldn, a, b, c) ; fclose(rf) ; fclose(wf) ; 答案:-*c=a/10*1000+a%10*10+b/10+b%10*100;第14题 (10.0分) 题号:335 难度:中 第2章【程序设计】功能:求一个n位自然数的各位数字的积。(n 是小于10的 自然数)#include #includeconio.hvoid wwjt(); long fun(long n) /*Program*/ /* E
26、nd */main() long m; printf(Enter m: ); scanf(%ld, &m); printf(nThe result is %ldn, fun(m); wwjt();void wwjt() FILE *IN,*OUT; int c ; long t; long o; IN=fopen(in.dat,r); if(IN=NULL) printf(Read FILE Error); OUT=fopen(out.dat,w); if(OUT=NULL) printf(Write FILE Error); for(c=1;c0) d=n%10; s*=d; n/=10;
27、return s;第15题 (10.0分) 题号:337 难度:中 第2章【程序设计】功能:将两个两位数的正整数a、b合并形成一个整数放在 c中。合并的方式是:将a数的十位和个位数依次放 在c数的百位和个位上, b数的十位和个位数依次放 在c数的十位和千位上。 例如:当a45,b=12。调用该函数后,c=2415。 #include void wwjt(); void fun(int a, int b, long *c) /*Program*/ /* End */main() int a,b; long c; printf(input a, b:); scanf(%d%d, &a, &b);
28、fun(a, b, &c); printf(The result is: %ldn, c); wwjt(); void wwjt ( ) FILE *rf, *wf ; int i, a,b ; long c ; rf = fopen(in.dat, r) ; wf = fopen(out.dat,w) ; for(i = 0 ; i 10 ; i+) fscanf(rf, %d,%d, &a, &b) ; fun(a, b, &c) ; fprintf(wf, a=%d,b=%d,c=%ldn, a, b, c) ; fclose(rf) ; fclose(wf) ; 答案:-*c=a/10
29、*100+a%10+b/10*10+b%10*1000;第16题 (10.0分) 题号:325 难度:中 第2章【程序设计】功能:在键盘上输入一个3行3列矩阵的各个元素的值(值 为整数),然后输出主对角线元素的平方和,并在 fun()函数中输出。#include void wwjt(); main() int i,j,s,a33; for(i=0;i3;i+) for(j=0;j3;j+) scanf(%d,&aij); s=fun(a); printf(Sum=%dn,s); wwjt();int fun(int a33) /*Program*/ /* End */void wwjt() F
30、ILE *IN,*OUT; int m; int n; int i33; int o; IN=fopen(in.dat,r); if(IN=NULL) printf(Read FILE Error); OUT=fopen(out.dat,w); if(OUT=NULL) printf(Write FILE Error); for(m=0;m3;m+) for(n=0;n3;n+) fscanf(IN,%d,&imn); o=fun(i); fprintf(OUT,%dn,o); getch(); fclose(IN); fclose(OUT);答案:-int sum;int i;sum=0;f
31、or(i=0;i3;i+) sum=sum+aii*aii; return sum;第17题 (10.0分) 题号:352 难度:易 第2章【程序设计】功能:根据整型形参m,计算如下公式的值:y=1/21/4 1/6.1/2m 。#include void wwjt(); double fun(int m) /*Program*/ /* End */main() int n; printf(Enter n: ); scanf(%d, &n); printf(nThe result is %1fn, fun(n); wwjt(); void wwjt() FILE *IN,*OUT; int i
32、 ; int t; double o; IN=fopen(in.dat,r); if(IN=NULL) printf(Read FILE Error); OUT=fopen(out.dat,w); if(OUT=NULL) printf(Write FILE Error); for(i=0;i5;i+) fscanf(IN,%d,&t); o=fun(t); fprintf(OUT,%fn,o); fclose(IN); fclose(OUT);答案:- double y=0; int i; for(i=1; i=m; i+) y+=1.0/(2*i); return(y);第18题 (10.0分) 题号:312 难度:中 第2章【程序设计】功能:调用函数fun判断一个三位数是否水仙花数。 在main函数中从键盘输入一个三位数,并输 出判断结果。请编写fun函数。说明:所谓水仙花数是指一3位数,其各位数字立方和 等于该数本身。例如:153是一个水仙花数,因为153=1+125+27。#include void wwjt();int fun(int n) /*Program*/ /* End */main() int n,flag; scanf(%d,&n); flag=fun(n); if(flag) printf(%d