C语言期末考试题及答案(共3页).doc
精选优质文档-倾情为你奉上 课程考试试卷 2007 2008 学年 春季学期 考试时间: 课程名称 C程序设计 A卷 B卷题号一二三四五六七八九十成绩复核得分阅卷 注意事项:答卷前,考生务必把答题纸上密封线内各项内容填写清楚(学号应与教务在线中 学号相同),否则可能得不到成绩,必须填写在密封线与装订线之间。答案必须写在边框内。 得分一、填空题(本题共10 分)1、设int型数据占两个字节,已知int a=-1,则语句printf(“%x,%d,%o”,a,a,a);的输出结果是( )。2、对语句scanf(“%2d %*3d %2d”,&a,&b);当从键盘输入后回车,则变量a,b的值分别是( )和( )。3、已知变量x和y均为int型,则下列语句x+=y;y=x-y;x-=y的作用是( )。4、已有说明语句如下:int a23=1,2,3,4,5,6,(*p)3; p=a; 则表达式*(*(p+1)+2)的值是( )5、有以下的定义:structint day;int month;int year;a,*p=a;则通过指针变量p引用变量a的成员year的两种形式分别是( )和( )。 得分二、输出结果题(本题共42分)1、以下程序的输出结果是( )main( ) int a=2,b=-1,c=2;if(a<b) if(b<0) c=0; else c+=1;printf(“%d”,c);2、以下程序的输出结果是( )main()int a,b,c,x=5,y=10;a=(-y= =x+) ? -y :+x b=y+ c=x printf(“a=%d,b=%d,c=%d”,a,b,c);3、以下程序的运行结果是( ) main() int k=5,n=0; while(k>0) switch(k) default : break; case 1 : n+=k; case 2 : case 3 : n+=k; k-; printf("%dn",n); 4、以下程序中,while循环的循环次数是( )。main( ) int i=0;while(i<10) if(i<1) continue; if(i= =5) break; i+; 5、以下程序的输出结果是( )。void f(int *p1,int *p2,int *p3)*p1=10;*p2=20;*p3=30;p1=p2=p3;printf(“%d %d %dn”,*p1,*p2,*p3);main()int x=1,y=2,z=3,*px=&x,*py=&y,*pz=&z;f(px,py,pz) printf(“%d %d %dn”,x,y,z) printf(“%d %d %dn”,*px,*py,*pz);6、以下程序的输出结果是( )。int fun(int n)static int f=1;f=f*n;return f;main()int i; for(i=1;i<=5;i+) printf(“%d”,fun(i);7、以下程序运行后的输出结果是 ( ) 。 #define S(x) 4*x*x+1main() int i=6,j=8;printf("%dn",S(i+j);得分三、补全程序题(本题共42分)1、 以下程序求两个整数的最大公约数,请填空。main( )int m,n,r;scanf(“%d,%d”,&m,&n) if ( ) r=m m=n n=r do ( ) if(r !=0) m=n n=r while( ) ;printf(“%d”,n);2、 下列程序用来输出如下图案,请填空。 * * * * * * * * * * * * * * * * main()int i,j;for(i=1; ;i+) for(j=1;j<=20-4*i;j+) printf(“ ”); for(j=1;j<= ; j+) printf(“%4c”,*); ; 3、 以下程序用冒泡法对一组整数进行排序,请填空。main()int i,j,t,a10=0,1,0,4,8,12,65,-76,100,-45; for(j=0 ;j+)for(i=0; ;i+)if(ai>ai+1) ;printf(“the sorted number:n”);for(i=0;i<10;i+) printf(“%d”,ai);4、 数组中的各元素已按递增顺序排列,下列函数用折半查找法查找key值,若找到则返回对应的下标值,否则返回-1,请填空。int binary(int a,int n,int key)int low,high,mid; low=0;high=n-1; while(low<=high)mid= ; if(key= =amid) ; else if(key>amid) ; else ;return -1;5、下面rotate函数的功能是:将n行n列的矩阵A转置为A,请填空。#define N 4void rotate(int aN) int i,j,t;for(i=0;i<N;i+)的for(j=0; ;j+) t=aij; ;aji=t; 6、 函数YangHui的功能是把杨辉三角形的数据赋给二维数组的下半三角,形式如下11 11 2 11 3 3 11 4 6 4 1. 请将程序补充完整。#define N 6void yanghui(int xNN) int i,j;x00=1;for(i=1;i<N;i+) xi0= =1;for(j=1;j<i;j+)xij= ; 7、 以下函数的功能是删除字符串s中的所有数字字符。请填空。viod dele(char *s) int n=0,i;for(i=0;si;i+) if( )sn+=si;sn= ;得分四、程序设计题(本题共6 分)买卖提将养的一缸金鱼分五次出售:第一次卖出全部的一半加二分之一条;第二次卖出余下的三分之一加三分之一条;第三次卖出余下的四分之一加四分之一条;第四次卖出余下的五分之一加五分之一条;最后卖出余下的11条。问原来的鱼缸中共有几条金鱼?2008年C语言参考答案一、 填空题1、 ffff,-1,2、 a=12, b=673、 交换变量x和y的值4、 65、 (*p).year, p->year二、 输出结果题1、22、a=7,b=9,c=73、74、死循环5、30 30 30 10 20 30 10 20 306、1,2,6,24,1207、81三、补全程序题1、m<n, r=m%n, r!=02、i<=4, j<=2*i-1, printf(“n”)3、j<9, i<9-j, t=ai;ai=ai+1;ai+1=t;4、(low+high)/2, return mid, low=mid+1, high=mid-15、j<i, aij=aji6、xii, xi-1j-1+xi-1j7、!(si>=0&&si<=9), 0四、程序设计题main()float x,y=11.0;int i;for(i=5;i>1;i-)x=(y*i+1)/(i-1);y=x;printf("%f",x);专心-专注-专业