收藏 分销(赏)

C语言期末复习试题.doc

上传人:二*** 文档编号:4571601 上传时间:2024-09-30 格式:DOC 页数:92 大小:231KB 下载积分:5 金币
下载 相关 举报
C语言期末复习试题.doc_第1页
第1页 / 共92页
本文档共92页,全文阅读请下载到手机保存,查看更方便
资源描述
. . 试卷编号:10767 所属语言:C语言 试卷方案:TC_4 试卷总分:570分 共有题型:1种 一、程序设计共57题〔共计570分〕 第1题〔10.0分〕题号:374 难度:易第2章 /*------------------------------------------------ 【程序设计】 -------------------------------------------------- 功能:编写函数实现两个数据的交换,在主函数中输入任 意三个数据,调用函数对这三个数据从大到小排序。 ------------------------------------------------*/ #include<stdio.h> void wwjt(); void swap(int *a,int *b) { /**********Program**********/ /********** End **********/ } main() { int x,y,z; scanf("%d%d%d",&x,&y,&z); if(x<y)swap(&x,&y); if(x<z)swap(&x,&z); if(y<z)swap(&y,&z); printf("%3d%3d%3d",x,y,z); wwjt(); } void wwjt() { FILE *IN,*OUT; int m,n; int i[2]; 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;n<3;n++) { for(m=0;m<2;m++) { fscanf(IN,"%d",&i[m]); } swap(&i[0],&i[1]); fprintf(OUT,"%d\n",i[0]); fprintf(OUT,"%d\n",i[1]); } fclose(IN); fclose(OUT); } 答案:---------------------- int k; k=*a; *a=*b; *b=k; ---------------------- 第2题〔10.0分〕题号:381 难度:易第2章 /*------------------------------------------------ 【程序设计】 -------------------------------------------------- 功能:求一批数中小于平均值的数的个数。 ------------------------------------------------*/ #include<stdio.h> void wwjt(); int average_num(int a[],int n) { /**********Program**********/ /********** End **********/ } main() { int n,a[100],i,num; scanf("%d",&n); for(i=0;i<n;i++) scanf("%d",&a[i]); num=average_num(a,n); printf("the num is:%d\n",num); wwjt(); } void wwjt() { FILE *IN,*OUT; int n; int i[10]; 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;n<5;n++) { fscanf(IN,"%d",&i[n]); } o=average_num(i,5); fprintf(OUT,"%d\n",o); fclose(IN); fclose(OUT); } 答案:---------------------- int i,sum=0,k=0; double average; for(i=0;i<n;i++) sum=sum+a[i]; average=sum*1.0/n; for(i=0;i<n;i++) if(average>a[i]) k++; return(k); ---------------------- 第3题〔10.0分〕题号:406 难度:易第2章 /*------------------------------------------------ 【程序设计】 -------------------------------------------------- 功能:编写函数fun求1000以内所有7的倍数之和。 ------------------------------------------------*/ #define N 1000 #include <stdio.h> void wwjt(); int fun(int m) { /**********Program**********/ /********** End **********/ } void main() { int sum; sum=fun(7); printf("%d以内所有%d的倍数之和为:%d\n",N,7,sum); wwjt(); } void wwjt() { FILE *IN,*OUT; int n; int i[10]; int o; OUT=fopen("out.dat","w"); if(OUT==NULL) { printf("Write FILE Error"); } o = fun(6); fprintf(OUT,"%d\n",o); fclose(IN); fclose(OUT); } 答案:---------------------- int s=0,i; for(i=1;i<N;i++) if(i%m==0) s+=i; return s; ---------------------- 第4题〔10.0分〕题号:324 难度:易第2章 /*------------------------------------------------ 【程序设计】 -------------------------------------------------- 功能:能计算从1开场到n的自然数中偶数的平方的和,n由 键盘输入,并在main()函数中输出。〔n是偶数〕 ------------------------------------------------*/ #include <stdio.h> void wwjt(); int fun(int n) { /**********Program**********/ /********** End **********/ } main() { int m; printf("Enter m: "); scanf("%d", &m); printf("\nThe result is %d\n", 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) { printf("Write FILE Error"); } for(c=1;c<=5;c++) { fscanf(IN,"%d",&t); o=fun(t); fprintf(OUT,"%d\n",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的值 要求:使用程序中定义的变量 -------------------------------------------------------*/ #include"stdio.h" void wwjt(); //函数功能:求1-3+5-7+…-+n的值 int fun(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 Dir.. It May Be Changed"); } for(i=0;i<5;i++) { fscanf(IN,"%i",&n); fprintf(OUT,"%ld\n",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/6+1/7+1/8+1/9+1/10...+1/(m+5) 例如:假设m=9,那么应输出:1.168229 ------------------------------------------------*/ #include <stdio.h> void wwjt(); double fun(int m) { /**********Program**********/ /********** End **********/ } main() { int n; printf("Enter n: "); scanf("%d", &n); printf("\nThe result is %1f\n", 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;i<5;i++) { fscanf(IN,"%d",&t); o=fun(t); fprintf(OUT,"%f\n",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 <stdio.h> void wwjt(); int max_min(int a[],int n) { /**********Program**********/ /********** End **********/ } main() { int a[N],i,k; for(i=0;i<N;i++) a[i]=random(51)+10; for(i=0;i<N;i++) { printf("%5d",a[i]); if((i+1)%5==0) printf("\n"); } k=max_min(a,N); printf("the result is:%d\n",k); wwjt(); } void wwjt() { FILE *IN,*OUT; int n; int i[10]; 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;n<10;n++) { fscanf(IN,"%d",&i[n]); } o=max_min(i,10); fprintf(OUT,"%d\n",o); fclose(IN); fclose(OUT); } 答案:---------------------- int i,max,min; max=min=a[0]; for(i=1;i<n;i++) if(a[i]>max) max=a[i]; else if(a[i]<min) min=a[i]; return(max*min); ---------------------- 第8题〔10.0分〕题号:342 难度:中第2章 /*------------------------------------------------ 【程序设计】 -------------------------------------------------- 功能:在键盘上输入一个3行3列矩阵的各个元素的值〔值 为整数〕,然后输出矩阵第一行与第三行元素之和, 并在fun()函数中输出。 ------------------------------------------------*/ #include <stdio.h> void wwjt(); void fun(int a[3][3]) { /**********Program**********/ /********** End **********/ } main() { int i,j,s,a[3][3]; for(i=0;i<3;i++) { for(j=0;j<3;j++) scanf("%d",&a[i][j]); } s=fun(a); printf("Sum=%d\n",s); wwjt(); } void wwjt() { FILE *IN,*OUT; int m; int n; int i[3][3]; 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;m<3;m++) { for(n=0;n<3;n++) fscanf(IN,"%d",&i[m][n]); } o=fun(i); { fprintf(OUT,"%d\n",o); getch(); } fclose(IN); fclose(OUT); } 答案:---------------------- int sum; int i,j; sum=0; for(i=0;i<3;i+=2) for(j=0;j<3;j++) sum=sum+a[i][j]; return sum; ---------------------- 第9题〔10.0分〕题号:364 难度:中第2章 /*------------------------------------------------ 【程序设计】 -------------------------------------------------- 功能:求一个四位数的各位数字的立方和。 -----------------------------------------------*/ #include <stdio.h> void wwjt(); int fun(int n) { /**********Program**********/ /********** End **********/ } main() { int k; k=fun(1234); printf("k=%d\n",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;i<5;i++) { fscanf(IN,"%d",&iIN); iOUT=fun(iIN); fprintf(OUT,"%d\n",iOUT); } fclose(IN); fclose(OUT); } 答案:---------------------- int d,s=0; while (n>0) {d=n%10; s+=d*d*d; n/=10; } return s; ---------------------- 第10题〔10.0分〕题号:502 难度:中第20章 #include <stdio.h> /*------------------------------------------------------- 【程序设计】 --------------------------------------------------------- 题目:用while语句求1~100的累计和。 -------------------------------------------------------*/ void wwjt(); int fun(int n) { /**********Program**********/ /********** End **********/ } void main() { int sum = 0; sum=fun(100); printf ("sum = %d\n", sum); wwjt(); } void wwjt() { FILE *IN,*OUT; int i; int 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 Changed"); } for(i=0;i<5;i++) { fscanf(IN,"%d",&iIN); iOUT=fun(iIN); fprintf(OUT,"%d\n",iOUT); } fclose(IN); fclose(OUT); } 答案: int i=1,sum=0; while(i<=n) { sum=sum+i; i++; } return sum; 第11题〔10.0分〕题号:53 难度:中第1章 /*------------------------------------------------ 【程序设计】 -------------------------------------------------- 功能:求一个四位数的各位数字的立方和 ------------------------------------------------*/ #include <stdio.h> void wwjt(); int fun(int n) { /**********Program**********/ /********** End **********/ } main() { int k; k=fun(1234); printf("k=%d\n",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("22.out","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,"%d\n",iOUT); } fclose(IN); fclose(OUT); } 答案:---------------------- int d,k,s=0; while (n>0) {d=n%10; s+=d*d*d; n/=10; } return s; ---------------------- 第12题〔10.0分〕题号:409 难度:易第20章 /*------------------------------------------------------- 【程序设计】 --------------------------------------------------------- 题目:输入华氏温度求摄氏温度。转换公式为 c=5/9〔f-32〕, 输出结果取两位小数。 -------------------------------------------------------*/ #include <stdio.h> void wwjt(); double fun(double m) { /**********Program**********/ /********** End **********/ } void main() { double c,f; printf("请输入一个华氏温度:"); scanf("%f",&f); c=fun(f); printf("摄氏温度为:%5.2f\n",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 Changed"); } for(i=0;i<5;i++) { fscanf(IN,"%f",&iIN); iOUT=fun(iIN); fprintf(OUT,"%f\n",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数的个位和百位上。 例如:当a=45,b=12。调用该函数后,c=4251。 ------------------------------------------------*/ #include <stdio.h> 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: %ld\n", 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=%ld\n", 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 <stdio.h> #include"conio.h" void wwjt(); long fun(long n) { /**********Program**********/ /********** End **********/ } main() { long m; printf("Enter m: "); scanf("%ld", &m); printf("\nThe result is %ld\n", fun(m)); wwjt(); } void wwjt() { FILE *IN,*OUT; int c ; long t; lon
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服