|
2007年5月16日考的C语言试题
以下是5月16号下午在北大考的C语言上机题,题目和程序都已经给出,供大家参考:
1,编一C程序,使得它可以读入一个正整数n,n>0且n<=26,然后输出如下的图形: A 文字A BBB BBB CCCCC CCCCC BBB DDDDDDD A ……………… 当n为3时 . . ZZZZZZZZZZZZZZZ…… . . . BBB A 当n为26时 ------------------------------------------------------------------------------------------- #include <stdio.h> #define MAX 26 void print(int n,int x,int y,char c1,char c[]) { int i,j,k; for(i=0;i<y;i++) printf("%c ",c1); for(j=i,k=n-1;j<=i+x-1;j++) printf("%c ",c[k]); printf("\n"); } void main() { int n,i,x,y; char c[MAX]={"ABCDEFGHIJKLMNOPQRSTUVWXYZ"},c1=' '; printf("please input the n:\n"); scanf("%d",&n); if(n<=0||n>26) { printf("Error:n must be >0 and <=26.\n"); return; } for(i=1,x=2*i-1,y=n-i;i<=n;i++,x+=2,y--) print(i,x,y,c1,c); for(i-=2,x-=4,y=1;i>=1;i--,x-=2,y++) print(i,x,y,c1,c); } =========================================================================================== 2,编一C程序,它可以读入若干名(不超过200名)学生的信息(包括学号,姓名,3门课程的成绩),
当输入学号为-1时结束输入,然后按平均成绩由低到高排列输出学生的姓名和总成绩。 ------------------------------------------------------------------------------------------- #include <stdio.h> #define M 200 typedef struct{ char name[20]; long no; int score[3]; }stu; void sort(stu a[],int n) { int i,j,flag; stu t; for(i=1;i<n;i++) { flag=1; for(j=0;j<n-i;j++) { if((a[j].score[0]+a[j].score[1]+a[j].score[2])>(a[j+1].score[0]+ a[j+1].score[1]+a[j+1].score[2])) { t=a[j]; a[j]=a[j+1]; a[j+1]=t; flag=0; } } if(flag) break; } } void main() { stu a[M]; int i=0,n=0; while(1) { printf("please input the student's no:\n"); scanf("%ld",&a.no); if(a.no==-1) break; printf("please input the student's name:\n"); scanf("%s",&a.name); printf("please input the student's grade(total 3):\n"); scanf("%d%d%d",&a.score[0],&a.score[1],&a.score[2]); i++; n++; } sort(a,n); printf("The student's information as follows:(name + total grade)\n"); for(i=0;i<n;i++) printf("%s %d\n",a.name,a.score[0]+a.score[1]+a.score[2]); } =========================================================================================== 3,编一C程序,使得它可以读入一个正整数n,并且转换为该数的18进制形式表示,18进制的10
、11、12、13、14、15、16、17分别用A、B、C、D、E、F、G、H表示。 ------------------------------------------------------------------------------------------- #include <stdio.h> void main() { int n,i=0,j,a[18]; char c[18]={"0123456789ABCDEFGH"}; printf("please input the n:\n"); scanf("%d",&n); if(n<0) { printf("Error:n must be >=0.\n"); return; } while(n!=0) { j=n%18; a[i++]=j; n=n/18; } printf("转换为18进制数表示为:\n"); for(i--;i>=0;i--) { j=a; printf("%c",c[j]); } printf("\n"); }
上面的也是我在考试时的答案,估计要得个及格应该是没有问题的吧,感觉难度一般,也许是我运气好,碰到了比较容易的题目^_^ 要考上机编程,练习一定不能少,而且要勤加练习,常用的算法一定要牢牢掌握,这样解题时才能大大提高效率,像第一题,输出图形这种类型的题目,只要方法掌握了很快就能解出来的 在这里我还要推荐一篇好帖,是Buta的《C语言上机必过版》,是论坛上的精华帖,大家搜一下应该就可以搜到,上机考试的第一和第三题都可以在该帖上找到原题(只不过有了一点点小变化) 最后,如果大家做完题目还有多余时间,可以在程序的一些关键地方加上注释,这样对你通过考试也是有帮助的,要知道注释也是评分标准中的一项 好了,不多说了,祝大家好运!
更多资料尽在四联自考论坛(http://bbs.4lzx.com),转贴请保留此信息。
| 凡本站注明版权的文章,版权归本站所有,任何媒体、网站或个人未经本站协议授权不得转载、链接、转贴或以其他方式复制,否则本站将依法追究责任。本站转载的信息,尽量保证版权信息的完整性,用户在网站上所发布、转载的文章所引起的版权问题以及其他纠纷,后果由用户自行承担,本网概不负责。如转载文章涉及版权等问题,请与我们联系。版权声明:/Copyright.asp |
|