2011-2012学年C语言试题
- 格式:doc
- 大小:187.00 KB
- 文档页数:41
2011-2012学年C 语言试题1. 有一个函数1(00(0)1(0100)x x y x x -<>⎧⎪==⎨⎪<≤⎩或100),写一段程序,输入x 的值,输出y 的值。
2. 输入3个数a,b,c,按大由到小的顺序输出。
3. 输入4个数,输出4个数中的最大值、最小值。
4. 输入成绩,要求输出成绩等级A 、B 、C 、D 、E 或error 。
90分以上为‘A ’,80~89分为‘B ’,70~79分为‘C ’,60~69分为‘D ’,0~60分为‘E ’。
若输入成绩低于0分和高于100分则输出error 。
5. 有一个函数:(1311(10)21(11010)x x y x x x x x <⎧⎪=-=⎨⎪-≤<>⎩)或,写一段程序,输入x 的值,输出y 的值。
6. 输出300~400之间的全部素数,并按每行5个数输出。
7. 求1~100之间能被7或11整除,但不能同时被7或11整除的所有整除,并按每行5个数输出。
8. 求Fibonacci 数列的前20个数,并将其分5行输出。
9. 求101(!3)n n =+∑。
10. 有一分数序列1235813,,,,,,23581321,求其前20项的和。
11. 输出小于500的所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。
例如,153是一个水仙花数,因为333153153=++。
12. 给一个不多于6位的正整数,要求:①求出它是几位数;②分别输出每一位数字;③按逆序输出各位数字,例如原数为158,应输出851。
13. 求5+55+555+5555+55555的值(要求用循环实现)。
14. 输出倒三角形式的9*9口诀表,要求用循环实现。
15. 求一元二次方程ax 2+bx+c=0的解。
16. 输入一行字符,分别统计出其中的英文字符、数字和其他字符的个数。
17. 有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?18. 输入10个整型整数,用起泡法对这10个数排序,并该由小到大顺序在屏幕上输出。
19. 将一个二维数组a 的行和列的元素互换(即行列互换),存到另一个二维数组b 中。
20. 在一个3*4的二维数组a 中,要求编程求出其中值最大的那个元素的值,并输出其所在的行号和列号。
21. 输入一行字符,统计其中有多少个单词,单词之间用空格分隔开22. 有3个字符串,要求找出其中最大者。
23.输入两个整数,要求用一个函数求出其中的大者,并在主函数中输出此值。
24. 输入两个整数,要求用一个函数求出其最大公约数和最小公倍数,并在主函数中调用该子函数。
25. 输入4个整数,找出其中最大的数。
用函数的嵌套调用来处理。
26. 用递归方法求5!。
27. 按以下递归公式求函数的值。
⎩⎨⎧>+-==)1(2)1()1(10 fun(n)n n fun n 例如,当给n 输入5时,函数值为18,(要求用递归实现)。
28. 编写一个函数,用来分别求数组score_1(有5个元素)和数组score_2(有10个元素)各元素的平均值。
29. 将一个数组中的值按逆序重新存放。
例如,原来顺序为8,6,5,4,1改后成为1,4,5,6,8。
30. 用递归法将一个整数n 转换成字符串。
例如,输入483,应输出字符串“483”,n 的位数不确定,可以是任意位数的整数。
31. 用筛选法求100之内的素数。
32. 编一个程序,将两个字符串连接起来,不要用strcat 函数。
33. 编写一个函数,比较两个字符串的大小,并在main 函数中调用此函数,不要调用strcmp 函数。
34. 用指针实现输入3个整数并按从小到大的顺序输出。
35. 用指针实现输入3个整数并按从大到小的顺序输出。
36. 用指针实现将数组b[10]中的元素按逆序存放。
37. 编写一程序,实现从键盘接收一个字符串,然后删除其中的空格后并输出。
如:输入“Iam a student!”,输出“Iamastudent!”,要求用指针实现。
38. 用冒泡法实现对10个整数按从大到小的顺序排序输出(要求用指针实现)。
39. 用选择法实现对10个整数按从小到大的顺序排序输出(要求用指针实现)。
40. 编写一个函数实现字符串复制功能(要求用指针作为函数参数)。
41. 定义一个结构体变量(包括年、月、日)。
计算当天是本年中的第几天,注意闰年问题。
42. 设计候选人得票统计程序,要求有4个侯选人(分别是Zhang 、Wang 、Li、Zhao),选民每次输入一个被选人的姓名,最后统计出各人的得票结果。
43. 定义一个包括学号、姓名、年龄的学生结构体,要求实现三个学生信息的输入输出,并输出平均年龄。
44. 定义一个包括教师编号、姓名、工资的教师结构体,要求实现三个教师信息的输入输出,并输出平均工资。
45. 定义一个包括职员号、姓名、工资的职员结构体,要求实现三个职员信息的输入输出,并输出平均工资。
46. 建立动态数组,输入5个学生的成绩,另外用一个函数检查其中有无低于60分的,输出不合格的成绩。
47. 写一函数,求一个字符串的长度。
在main函数中输入字符串,并输出其长度(要求用指针实现)。
48. 有一个一维数组score,内放10个学生成绩,用一个函数求平均成绩,并将10个成绩中不及格(小于60)的成绩和该成绩在数组中的序号输出。
49. 有一个一维数组内放10个数,设计函数,求出10个数中的最大值、最小值、平均值。
50. 找出一个2维数组中的鞍点,即该位置上的元素在该行上最大、在该列上最小。
51. 输入3个学生4门课的成绩,分别用函数实现如下功能:(1)计算每个学生平均分;(2)计算每门课的平均分;(3)找出12个分数中最高分所对应的学生和课程。
52. 用一个函数实现将一行字符串中的最长的单词输出。
此行字符串从主函数传递给该函数。
53. 输出菱形图案(要求用循环实现)54. 有一个已排好序的数组,要求输入一个数后,按原来排序的规律将她插入数组中。
55. 写一个判断素数的函数,在主函数输入一个整数,输出是否素数的信息。
56. 有一篇文章,共有4行文章,每行有60个字符。
要求分别统计出其中英文大写字符、小写字母、数字、空格以及其他字符的个数。
57. 有一行电文,已按下面规律译成密码:A→Z a→zB→Y b→yC→X c→x即第1个字母变成第26个字母,第i个字母变成第(26 – i + 1)个字母。
非字母符号不变。
要求编程序将密码译回原文,并输出密码和原文。
58. 有n个人围成一圈,顺序排号。
从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下来的是原来第几号的那位(要求用指针知识实现)。
59. 有3个学生,每个学生的数据包括学号、姓名、3门课程的成绩,从键盘输入3个学生数据,要求输出3门课程总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课程成绩、平均分数)(用结构体)。
60. 写一个函数,将一个字符串中的元音字母复制到另一个字符串,然后输出。
61. 编一程序,输入月份号,输出该月的英文月名。
例如,输入3,则输出March,要求用指针数组处理。
62. 从键盘上读入3个字符串,对它们按字母大小的顺序排序,然后把排好序的字符串送到磁盘文件中保存。
63. 在磁盘文件上存有10个学生的数据。
要求将第1,3,5,7,9个学生数据输入计算机,并在屏幕上显示出来。
64. 有两个磁盘文件“file1”和“file2”,各存放一行字母,要求把两个文件中的信息合并(按字母顺序排序),输出到一个新文件“file3”中去。
参考答案1、#include<stdio.h>void main(){float x;int y;printf("请输入一个x的值:\nx=");scanf("%f",&x);if(x<0||x>100)y=-1;else if(x==0)y=0;elsey=1;printf("y=%d",y);printf("\n");}2、#include<stdio.h>void main(){float a,b,c,t;printf("请输入三个数,数之间以空格连接:\n输入的数分别为:");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("a、b、c由大到小排列为:\n%.2f\n%.2f\n%.2f\n",a,b,c);}3、#include<stdio.h>{float a,b,c,d,max=0,min=0;printf("请输入四个数字,中间以空格分开:\n");printf("四个数字分别为:");scanf("%f%f%f%f",&a,&b,&c,&d);printf("\n");max=(a>b)?a:b;max=(max>c)?max:c;max=(max>d)?max:d;min=(a<b)?a:b;min=(min<c)?min:c;min=(min<d)?min:d;printf("四个数中最大的数为:%.2f\n",max);printf("四个数中最小的数为:%.2f\n",min);}4、#include<stdio.h>void main(){float fen;int c;printf("请输入学生的成绩:");scanf("%f",&fen);if(fen<0||fen>100)c=4;else if(fen>=0&&fen<60)c=5;elsec=fen/10;switch(c){case 9:printf("学生成绩等级为:A\n");break;case 8:printf("学生成绩等级为:B\n");break;case 7:printf("学生成绩等级为:C\n");break;case 6:printf("学生成绩等级为:D\n");break;case 5:printf("学生成绩等级为:E\n");break;case 4:printf("输入数据有误\n");break;}}5、#include<stdio.h>void main(){printf("请输入一个x值x=");scanf("%f",&x);if(x<1)y=x;if(x==10)y=3*x-11;elsey=2*x-1;printf("y 的值为:y=%.2f\n",y);}6、#include<stdio.h>void main(){int i,j,k,n=0;printf("300-400间所有素数为:\n");for(i=301;i<=400;i++,i++){k=i/2;for(j=2;j<=k;j++)if(i%j==0)break;if(j==k+1){printf("%d ",i);n++;if(n%5==0)printf("\n");}}printf("\n");}7、#include<stdio.h>void main(){int i,j=0;printf("1-100间只能被7和11一个数整除的数为:\n\n");for(i=7;i<=100;i++){if(i%7==0&&i%11!=0||i%7!=0&&i%11==0){j++;printf("%6d",i);if(j%5==0)printf("\n");}}printf("\n");}8、#include<stdio.h>void main(){int f1=1,f2=1,i;printf("Fibonacci数列前二十个数为:\n");for(i=1;i<=10;i++){printf("%6d%6d",f1,f2);f1=f1+f2;f2=f2+f1;if(i%2==0)printf("\n");}}9、#include<stdio.h>void main(){double sum=0,t=1;int n;for(n=1;n<=10;n++){t=t*n;sum=sum+t+3;}printf("1!+3+2!+3+3!+3+…+10!+3=%.0f\n",sum); }10、#include<stdio.h>void main(){int i;double a=2,b=1,s=0,t;for(i=1;i<=20;i++){s=s+b/a;t=a;a=a+b;b=t;}printf("1/2+2/3+3/5+…=%16.10f\n",s);}11、#include<stdio.h>void main(){int i,a,b,c;printf("小于500的所有水仙花数为:\n\n");for(i=100;i<500;i++){a=i/100;b=i/10-a*10;c=i%10;if(i==a*a*a+b*b*b+c*c*c)printf("%d ",i);}printf("\n\n");}12、#include<stdio.h>void main(){int m,n[6],i=0,j;printf("请输入一个小于七位的整数:");scanf("%d",&m);printf("\n");while(m!=0){n[i]=m%10;m=m/10;i++;}printf("它是一个%d位数。