C语言程序设计期末机试题_第1页
C语言程序设计期末机试题_第2页
C语言程序设计期末机试题_第3页
C语言程序设计期末机试题_第4页
C语言程序设计期末机试题_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、一、试题组成:考试学生随即抽出4道试题进行考试,其中112 、1324、 2536、3750各一题。二、考试时间 80分钟三、 学生按学号的顺序依次坐在相应的电脑(听从监考老师的安排)。四、考生在试卷上填写自己的考生信息(在抽题条上写上自己的学号姓名),同时在自己的试卷上勾选出自己抽的试题,考生结束后交试卷、抽的试题条。五、考试纪律(考生有下列行为之一者,考试成绩按零分处理)1 学生考试期间不准带U盘、MP3等移动存储设备和不准带任何书籍、资料及演草纸。2 考生在考试期间不准带手机。3 学生在考试期间不准在自己考试用电脑上设置共享目录。六、试题1. 有一个函数,写一段程序,输入的值,输出的值。

2、#include <stdio.h>void main() int x,y; printf("输入x:"); scanf("%d",&x); if(x<0|x>100) /* x<0或x>100*/ y=-1; printf("x=%3d, y=%dn" ,x,y); else if(x=0) /* x=0*/ y=0; printf("x=%d, y=%dn",x,y);else /* 0<x<=100 */ y=1; printf("x=%d,

3、y=%dn",x,y);2. 输入3个数a,b,c,按大由到小的顺序输出。 #include <stdio.h> void main ( ) float a,b,c,t;printf("please enter a,b,c:"); scanf("%f,%f,%f",&a,&b,&c); if(a<b) t=a;a=b;b=t; if(a<c) t=a;a=c;c=t; if(b<c) t=b;b=c;c=t; printf("%7.2f%7.2f%7.2fn",a,b,c

4、); 3. 输入4个数,输出4个数中的最大值、最小值。#include <stdio.h>void main() float t,a,b,c,d,max,min; printf("请输入四个数:"); scanf("%f,%f,%f,%f",&a,&b,&c,&d); if (a<b) t=a;a=b;b=t; if (a<c) t=a;a=c;c=t; if (a<d) t=a;a=d;d=t; if (b<c) t=b;b=c;c=t; if (b<d) t=b;b=d;d=t

5、; if (c<d) t=c;c=d;d=t; printf("最大值和最小值分别为: n"); printf("max=%5.2f min=%5.2f",a,d); 4. 输入成绩,要求输出成绩等级A、B、C、D、E或error。90分以上为A,8089分为B,7079分为C,6069分为D,060分为E。若输入成绩低于0分和高于100分则输出error。#include <stdio.h>void main() float score; char grade; printf("请输入学生成绩:"); scanf(

6、"%f",&score); if (score>100|score<0) printf("errorn");else switch(int)(score/10) case 10: case 9: grade='A'break; case 8: grade='B'break; case 7: grade='C'break; case 6: grade='D'break; case 5:case 4:case 3:case 2:case 1: case 0: grade=&#

7、39;E' printf("成绩是 %5.1f,相应的等级是%c.n ",score,grade); 5. 有一个函数:写一段程序,输入的值,输出x,的值。#include <stdio.h>void main() int x,y; printf("输入x:"); scanf("%d",&x); if(x<1) /* x<1 */ y=x; printf("x=%3d, y=x=%dn" ,x,y); else if(x<10|x>10) /* 1=<x&l

8、t;10 */ y=2*x-1; printf("x=%d, y=2*x-1=%dn",x,y);else /* x>=10 */ y=3*x-11; printf("x=%d, y=3*x-11=%dn",x,y);6. 输出300400之间的全部素数,并按每行5个数输出。/* Note:Your choice is C IDE */#include "stdio.h"#include"math.h"void main()int prime(int);int i,k,m;printf("30040

9、0之间的素数为:n");for(i=300;i<=400;i+)m=prime(i);if(m=1)k+;printf("%5d",i); if(k%5=0)printf("n");int prime(int i)int j,flag=1;for(j=2;j<=sqrt(i);j+)if(i%j=0)flag=0;return(flag);另一种算法:# include <stdio.h># include <math.h>void main() int m,k,i,n=0; for(m=300;m<=

10、400;m=m+1) k=sqrt(m); for (i=2;i<=k;i+) if (m%i=0) break; if (i>=k+1)printf("%d ",m); n=n+1; if(n%5=0) printf("n"); printf ("n"); 7. 求Fibonacci数列的前20个数,并将其分5行输出# include <stdio.h># include <math.h>void main() int m,k,i,n=0; for(m=300;m<=400;m=m+1) k

11、=sqrt(m); for (i=2;i<=k;i+) if (m%i=0) break; if (i>=k+1)printf("%d ",m); n=n+1; if(n%5=0) printf("n"); printf ("n"); 8. 求。#include <stdio.h>void main() double s=0,t=1,sum=0; int n; for (n=1;n<=10;n+) t=t*n; s=s+t; sum=s+3; printf("1!+3+2!+3.+10!+3=%

12、fn",s); 9. 有一分数序列,求其前20项的和。#include <stdio.h> void main() int i,n=20; double a=2,b=1,s=0,t; for (i=1;i<=n;i+) s=s+b/a; t=a, a=a+b, b=t; printf("sum=%16.10fn",s);10. 输出小于500的所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。例如,153是一个水仙花数,因为。#include <stdio.h>void main() int i,j,k

13、,n; printf("parcissus numbers are "); for (n=100;n<500;n+) i=n/100; j=n/10-i*10; k=n%10; if (n=i*i*i + j*j*j + k*k*k) printf("%d ",n); printf("n"); 11. 给一个不多于6位的正整数,要求:求出它是几位数;分别输出每一位数字;按逆序输出各位数字,例如原数为158,应输出851。/* Note:Your choice is C IDE */#include "stdio.h&q

14、uot;void main() int n,m; printf("输入一个不多于六位的数字:"); scanf("%d",&n); if(n<1000000&&n>99999) printf("它是六位数n"); if(n<100000&&n>9999) printf("它是五位数n"); if(n<10000&&n>999) printf("它是四位数n"); if(n<1000&&

15、;n>99) printf("它是三位数n"); if(n<100&&n>9) printf("它是二位数n"); if(n<10&&n>=0) printf("它是一位数n"); printf("各位数字按逆序输出为:n"); while(n!=0) m=n%10; n=n/10; printf("%3d",m); 12. 求5+55+555+5555+55555的值。#include <stdio.h>void mai

16、n() int a=5,n=5,i=1,sn=0,tn=0;for(i=1;i<=5;i+) tn=tn+a; /*赋值后的tn为i个 a组成数的值*/ sn=sn+tn; /*赋值后的sn为多项式前i项之和*/ a=a*10; printf("a+aa+.+aaaaa=%dn",sn); 13. 输入10个整型整数,用起泡法对这10个数排序,并该由小到大顺序在屏幕上输出。/* Note:Your choice is C IDE */#include "stdio.h"void main() int a10; int i,j,t; printf(&

17、quot;input 10 number:n"); for(i=0;i<10;i+) scanf("%d",&ai); for(i=0;i<10;i+) for(j=i;j<9;j+) if(ai>aj+1) t=ai;ai=aj+1;aj+1=t; for(i=0;i<10;i+) printf("%5d ",ai); printf("n"); 14. 将一个二维数组a的行和列的元素互换(即行列互换),存到另一个二维数组b中。/* Note:Your choice is C IDE *

18、/#include "stdio.h"void main() int a45,b54; int i,j; for(i=0;i<4;i+) for(j=0;j<5;j+) scanf("%d",&aij); for(i=0;i<5;i+) for(j=0;j<4;j+) bij=aji; printf("该数组的新序列为:n"); for(i=0;i<5;i+) for(j=0;j<4;j+) printf("%5d",bij); printf("n")

19、; 15. 在一个3*4的二维数组a中,要求编程求出其中值最大的那个元素的值,并输出其所在的行号和列号。 /* Note:Your choice is C IDE */#include "stdio.h"void main() int a34,i,j,max; for(i=0;i<3;i+) for(j=0;j<4;j+) scanf("%d",&aij); max=a00; for(i=0;i<3;i+) for(j=0;j<4;j+) if(max<aij) max=aij; printf("max=%

20、dn",max); for(i=0;i<3;i+) for(j=0;j<4;j+) if(aij=max) printf("行=%2d,列=%2dn",i+1,j+1); 16. 输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。/* Note:Your choice is C IDE */#include "stdio.h"void main() int i,j=0; char str80; gets(str); for(i=0;stri!='0'i+) if(stri+1=' '|stri

21、+1='0') j+; printf("单词个数为%dn",j); 17. 有3个字符串,要求找出其中最大者。/* Note:Your choice is C IDE */#include "stdio.h"#include <string.h>void main()char str180,str280,str380,longest80;gets(str1);printf("n");gets(str2);printf("n");gets(str3); strcpy(longest,str

22、1);if(strcmp(str1,str2)<0) strcpy(longest,str1);if(strcmp(str2,str3)<0) strcpy(longest,str1);printf("the longest is %s",longest);18. 输入两个整数,要求用一个函数求出其中的大者,并在主函数中输出此值。/* Note:Your choice is C IDE */#include "stdio.h"void main() int f(int a,int b); int m,n,max; printf("请

23、输入两个数:"); scanf("%d,%d",&m,&n); max=f(m,n); printf("max=%d",max);int f(int a,int b)int c;c=a>b?a:b;return(c);另一种算法:/* Note:Your choice is C IDE */#include "stdio.h"void main() int f(int a,int b); int m,n,max; printf("请输入两个数:"); scanf("%d,%

24、d",&m,&n); max=f(m,n); printf("max=%d",max);int f(int a,int b)int c;if(a>b) c=a; else c=b;return(c);19. 输入两个整数,要求用一个函数求出其最大公约数和最小公倍数,并在主函数中调用该子函数。#include <stdio.h>void main() int hcf(int,int); int lcd(int,int,int); int u,v,h,l; scanf("%d,%d",&u,&v);

25、 h=hcf(u,v); printf("最大公约数=%dn",h); l=lcd(u,v,h); printf("最小公倍数=%dn",l); int hcf(int u,int v)int t,r; if (v>u) t=u;u=v;v=t; while (r=u%v)!=0) u=v; v=r; return(v);int lcd(int u,int v,int h) return(u*v/h); 20. 输入4个整数,找出其中最大的数。用函数的嵌套调用来处理。#include <stdio.h>void main() int m

26、ax_4(int a,int b,int c,int d); int a,b,c,d,max; printf("Please enter 4 interger numbers:"); scanf("%d %d %d %d",&a,&b,&c,&d); max=max_4(a,b,c,d); printf("max=%d n",max); int max_4(int a,int b,int c,int d) int max_2(int a,int b); int m; m=max_2(a,b); m=ma

27、x_2(m,c); m=max_2(m,d); return(m);int max_2(int a,int b)return(a>b?a:b);21. 用递归方法求5!。#include <stdio.h>void main() long fac(int n); long y; y=fac(5); printf("5!=%ldn",y);long fac(int n) long f; if(n<0) printf("n<0,data error!"); else if(n=0,n=1) f=1; else f=fac(n-1

28、)*n; return(f); 22、编写一个函数,用来分别求数组score_1(有5个元素)和数组score_2(有10个元素)各元素的平均值。/* Note:Your choice is C IDE */#include "stdio.h"void main() float f(float score,int n); float score_15,score_210,aver_1,aver_2; int i; for(i=0;i<5;i+) scanf("%f",&score_1i); for(i=0;i<10;i+) scanf

29、("%f",&score_2i); aver_1=f(score_1,5); aver_2=f(score_2,10); printf("aver_1=%f,aver_2=%fn",aver_1,aver_2);float f(float score,int n)int i;float aver,sum=0;for(i=0;i<n;i+) sum=sum+scorei; aver=sum/n; return(aver);23 将一个数组中的值按逆序重新存放。例如,原来顺序为8,6,5,4,1改后成为1,4,5,6,8。/* Note:You

30、r choice is C IDE */#include "stdio.h"void main() int a6,b6,i; printf("请输入一个数组:"); for(i=0;i<6;i+) scanf("%d",&ai); printf("逆序排列后的数组是:"); for(i=0;i<6;i+) bi=a5-i; printf("%4d ",bi); 24 用递归法将一个整数n转换成字符串。例如,输入483,应输出字符串“483”,n的位数不确定,可以是任意位数的整

31、数。#include <stdio.h>void main() void convert(int n); int number; printf("input an integer: "); scanf("%d",&number); printf("output: "); if (number<0) putchar('-');putchar(' '); /* 先输出一个-号和空格 */ number=-number; convert(number); printf("n

32、"); void convert(int n) int i; if (i=n/10)!=0) convert(i); putchar(n%10+'0'); putchar(32);25. 用指针实现输入3个整数并按从小到大的顺序输出。/* Note:Your choice is C IDE */#include "stdio.h"void main() void exchange(int * p1,int * p2,int * p3); int n1,n2,n3; int * p1,* p2,* p3; printf("input thr

33、ee integer n1,n2,n3:"); scanf("%d,%d,%d",&n1,&n2,&n3); p1=&n1; p2=&n2;p3=&n3; exchange(p1,p2,p3); printf("Now,the order is:%d,%d,%d",n1,n2,n3);void exchange(int * p1,int * p2,int * p3)void swap(int * p1,int * p2);if(* p1>* p2) swap( p1, p2);if(* p1

34、>* p3) swap(p1,p3);if(* p2>* p3) swap(p2,p3);void swap(int * p1,int * p2)int p;p=* p1;* p1=* p2;* p2=p;26、用指针实现输入3个整数并按从大到小的顺序输出。 #include <stdio.h> void main ( ) void paixu(int * p1,int * p2); int a,b,c,* p1,* p2,* p3;printf("please enter a,b,c:"); scanf("%d,%d,%d",&

35、amp;a,&b,&c); p1=&a;p2=&b;p3=&c; if(a<b) paixu(p1,p2); if(a<c) paixu(p1,p3); if(b<c) paixu(p2,p3) ; printf("%5d%5d%5dn",a,b,c); void paixu(int * p1,int * p2) int t; t=* p1;* p1=* p2;* p2=t; 27、用指针实现将数组b10中的元素按逆序存放。#include <stdio.h>void main()void sort (c

36、har *p,int m); int i; char *p,b10; printf("please input these numbers:n"); for (i=0;i<10;i+) scanf("%d",&numi); p=&num0; sort(p,10); printf("Now,the sequence is:n"); for (i=0;i<10;i+) printf("%d ",numi);printf("n");void sort (char *p,in

37、t m)int i; char temp, *p1,*p2; for (i=0;i<m/2;i+) p1=p+i; p2=p+(m-1-i); temp=*p1; *p1=*p2; *p2=temp; 25. 用冒泡法实现对10个整数按从大到小的顺序排序输出(要求用指针实现)。/* Note:Your choice is C IDE */#include "stdio.h"void main() void swap(int * p1,int * p2); int a10,* p ,i,j; printf("input 10 number:n");

38、for(i=0;i<10;i+) scanf("%d",&ai); p=a; for(i=0;i<10;i+) for(j=i;j<9;j+) if(ai<aj+1) swap(p+i,p+j+1); for(i=0;i<10;i+) printf("%5d ",ai); printf("n"); void swap(int * p1,int * p2)int t;t=* p1;* p1=* p2;* p2=t;29、用选择法实现对10个整数按从小到大的顺序排序输出(要求用指针实现)。/* Not

39、e:Your choice is C IDE */#include "stdio.h"void main() void swap(int * p1,int * p2); int a10,* p ,i,j; printf("input 10 number:n"); for(i=0;i<10;i+) scanf("%d",&ai); p=a; for(i=0;i<10;i+) for(j=0;j<9-i;j+) if(aj>aj+1) swap(p+j,p+j+1); for(i=0;i<10;i+)

40、 printf("%5d ",ai); printf("n"); void swap(int * p1,int * p2)int t;t=* p1;* p1=* p2;* p2=t; 30. 定义一个结构体变量(包括年、月、日)。计算当天是本年中的第几天,注意闰年问题。#include <stdio.h>struct int year; int month; int day; date;void main() int days; printf("input year,month,day:"); scanf("%d

41、,%d,%d",&date. year,&date.month,&date.day); switch(date.month) case 1: days=date.day; break; case 2: days=date.day+31; break; case 3: days=date.day+59; break; case 4: days=date.day+90; break; case 5: days=date.day+120; break; case 6: days=date.day+151; break; case 7: days=date.day+1

42、81; break; case 8: days=date.day+212; break; case 9: days=date.day+243; break; case 10: days=date.day+273; break; case 11: days=date.day+304; break; case 12: days=date.day+334; break; if (date.year %4= 0 && date.year % 100 != 0 |date.year % 400 = 0) && date.month >=3) days+=1; pri

43、ntf("%d/%d is the %dth day in %d.n",date.month,date.day,days,date.year);31. 设计候选人得票统计程序,要求有4个侯选人(分别是Zhang 、Wang 、Li、 Zhao),选民每次输入一个被选人的姓名,最后统计出各人的得票结果。#include <string.h>#include <stdio.h>struct person char name20; int count; leader4="zhang",0,"wang",0,"

44、;li",0,"zhao",0; void main() int i,j; char leader_name20; for (i=1;i<=10;i+) scanf("%s",leader_name); for(j=0;j<4;j+) if(strcmp(leader_name,)=0) leaderj.count+; printf("nResoult:n"); for(i=0;i<4;i+) printf("%5s:%dn",,leade

45、ri.count); 32、定义一个包括学号、姓名、年龄的学生结构体,要求实现三个学生信息的输入输出,并输出平均年龄#include <stdio.h>#define N 3struct student char num6; char name20; int age; stuN;void main()int i,aver=0; for(i=0;i<N;i+) printf("input scores of student %d:n",i+1); printf("NO.:"); scanf("%s",stui.num)

46、; printf("name:"); scanf("%s",); printf("age :"); scanf("%d",&stui.age); printf(" NO. name agen"); for (i=0;i<N;i+) printf("%5s%10s%9d",stui.num,,stui.age); printf("n"); for(i=0;i<N;i+) aver=aver+stui.a

47、ge; aver=aver/3; printf("aver=%d",aver);33、定义一个包括教师编号、姓名、工资的教师结构体,要求实现三个教师信息的输入输出,并输出平均工资。#include <stdio.h>#define N 3struct teacher char num6; char name20; float pay; teaN;void main()int i;float aver=0; for(i=0;i<N;i+) printf("input scores of student %d:n",i+1); printf

48、("NO.:"); scanf("%s",teai.num); printf("name:"); scanf("%s",); printf("pay :"); scanf("%f",&teai.pay); printf(" NO. name payn"); for (i=0;i<N;i+) printf("%5s%10s%9.2f",teai.num,,teai.pay); printf

49、("n"); for(i=0;i<N;i+) aver=aver+teai.pay; aver=aver/N; printf("aver=%f",aver);34、定义一个包括职员号、姓名、工资的职员结构体,要求实现三个职员信息的输入输出,并输出平均工资。#include <stdio.h>#define N 3struct worker char num6; char name20; float pay; workN;void main()int i;float aver=0; for(i=0;i<N;i+) printf(&q

50、uot;input scores of worker %d:n",i+1); printf("NO.:"); scanf("%s",worki.num); printf("name:"); scanf("%s",); printf("pay :"); scanf("%f",&worki.pay); printf(" NO. name payn"); for (i=0;i<N;i+) printf("%5

51、s%10s%9.2f",worki.num,,worki.pay); printf("n"); for(i=0;i<N;i+) aver=aver+worki.pay; aver=aver/N; printf("aver=%f",aver); 35 建立动态数组,输入5个学生的成绩,另外用一个函数检查其中有无低于60分的,输出不合格的成绩。#include <stdio.h>#include <stdlib.h>void main() void check(int *); int *p1,i;

52、void *p2; p2=malloc(5*sizeof(int); p1=(int *)p2; for(i=0;i<5;i+) scanf("%d",p1+i); check(p1); free(p2); void check(int *p) int i; printf("They are fail:"); for(i=0;i<5;i+) if (pi<60) printf("%d ",pi); printf("n"); 36 写一函数,求一个字符串的长度。在main函数中输入字符串,并输出其长

53、度(要求用指针实现)。#include <stdio.h>void main()int length(char *p);int len;char str20;printf("input string: ");scanf("%s",str);len=length(str);printf("The length of string is %d.n",len);int length(char *p) int n; n=0; while (*p!='0') n+; p+; return(n);37. 有一个一维数组

54、score,内放10个学生成绩,用一个函数求平均成绩,并将10个成绩中不及格(小于60)的成绩和该成绩在数组中的序号输出。/* Note:Your choice is C IDE */#include "stdio.h"void main() void fail(float score,int n); float score10; int i; for(i=0;i<10;i+) scanf("%f",&scorei); fail(score,10); void fail(float score,int n) int i; for(i=0;i<n;i+) if(scorei<60) printf("成绩为%f,序号为%dn",scorei,i+1); 38. 有一个一维数组内放10个数,设计函数,求出10个数中的最大值、最小值、平均值。/* Note:Your choice is C IDE */#include "stdio.h"void main() int a10,i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论