您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 精选C语言试卷(带答案).
2006-2007学年第二学期考试试卷A卷考试科目C语言程序设计考试方式闭卷完成时限2小时拟题人审核人批准人2007年7月5日机械、电气、信息、生化、轻工、经管、理学院2006年级各理工科专业说明:1.应将全部答案写在答卷纸对应的题号处;否则作无效处理;2.编程题应写明题号,若答卷纸不够,请写在背面,不要另添卷纸;3.考试完成后,必须将试卷与答卷同时交回。一、判断题(10小题,每题1分,共10分;用√表示正确,用×表示错误)1.在循环体内使用break语句和continue语句的作用相同。2.函数返回值的类型最终取决于函数定义时形参的类型。3.else语句一定要与if语句配对使用,程序中else语句的个数一定小于或者等于if语句的个数。4.从狭义角度讲,算法是解决一个问题采取的方法和步骤的描述。5.1/2的结果是0,所以1.0/2的结果也是0。6.a=b=c=5可以理解为a=(b=(c=5))。7.假设有语句inta[10]={1,2,3},*p;p=a;则p++完全等价于a++。8.for(;;)等价于while(1)语句。9.假定int类型变量占用两个字节,若有定义:intx[10]={0,2,4};,则数组x在内存中所占字节数是6。10.char*sp={welcome};可以写成char*sp=welcome;。二、单选题(16小题,每题1分,共16分)1.以下数组定义中错误的是:(A)intx[][3]={0};(B)intx[2][3]={{1,2},{3,4},{5,6}};题序一二三四五六总分得分第2页共13页(C)intx[][3]={{1,2,3},{4,5,6}};(D)intx[2][3]={1,2,3,4,5,6};2.设fp为指向某二进制文件的指针,且已读到此文件末尾,则函数feof(fp)的返回值为:(A)EOF(B)NULL(C)0(D)非0值3.有以下程序:main(){inty=10;while(y--);printf(“y=%d\n”,y);}程序执行后的输出结果是:(A)y=0;(B)y=-1;(C)y=1(D)while构成无限循环4.若有以下宏定义:#defineN2#defineY(n)(N+1)*n则执行语句intz;z=2*N+Y(5);后的值是(A)50(B)34(C)19(D)无定值5.以下叙述中错误的是:(A)c程序必须由一个或者一个以上的函数组成。(B)函数调用可以作为一个独立的语句存在。(C)若函数有返回值,必须通过return语句返回。(D)函数形参的值也可以传回给对应的实参。6.设有如下定义的变量uniondata{inti;charch;floatf;}b;则变量b占用内存的字节数是(假设int类型占2个字节,char类型占1个字节,float类型占4个字节):(A)4(B)5(C)6(D)7第3页共13页7.以下叙述中错误的是:(A)c程序中的#include和#define行均不是c语句(B)除逗号运算符外,赋值运算符的优先级最低(C)c程序中,“j++;”是赋值语句(D)c程序经过编译、连接步骤之后,才能形成一个真正可执行的二进制机器指令文件。8.能正确表示a和b同时为正或同时为负的逻辑表达式是:(A)(a=0||b=0)&&(a0||b0)(B)(a=0&&b=0)&&(a0&&b0)(C)(a+b0)&&(a+b=0)(D)a*b09.对于一个正常运行的c程序,以下叙述中正确的是:(A)程序的执行总是从main函数开始,在main函数结束。(B)程序的执行总是从程序的第一个函数开始,在main函数结束。(C)程序的执行总是从main函数开始,在程序的最后一个函数中结束。(D)程序的执行总是从程序中的第一个函数开始,在程序的最后一个函数中结束。10.设变量x和y均已经正确定义并赋值。以下if语句中,在编译时将产生错误信息的是:(A)if(x++);(B)if(xy&&y!=0)(C)if(x0)x--(D)if(y0){;}elsey++;elsex++;11.设已有定义:floatx;则以下对指针变量p进行定义且赋初值的语句中正确的是:(A)float*p=1024;(B)int*p=(float)x;(C)floatp=&x;(D)float*p=&x;12.有以下程序:main(){inti,j;for(i=1;i4;i++){for(j=i;j4;j++)printf(%d*%d=%d,i,j,i*j);printf(\n);}第4页共13页}程序运行后的输出结果是:(A)1*1=11*2=21*3=3(B)1*1=11*2=21*3=32*1=22*2=42*2=42*3=63*1=33*3=9(C)1*1=1(D)1*1=11*2=22*2=42*1=22*2=41*3=32*3=63*3=93*1=33*2=63*3=913.按照c语言规定的用户标识符命名规则,不能出现在标识符中的是:(A)大写字母(B)连接符(C)数字字符(D)下划线14.设有定义:intk=0;以下选项的四个表达式中与其他三个表达式的值不相同的是:(A)k++(B)k+=1(C)++k(D)k+115.有以下程序main(){charch[]=uvwxyz,*pc;pc=ch;printf(%c\n,*(pc+5));}程序运行后的输出结果是:(A)z(B)0(C)元素ch[5]的地址(D)字符y的地址16.有以下函数:intfun(char*s){char*t=s;while(*t++);return(t-s);}该函数的功能是:(A)比较两个字符串的大小(B)计算s所指向字符串占用内存字节的个数(C)计算s所指字符串的长度(D)将s所指字符串复制倒字符串t中16.有以下函数:第5页共13页intfun(char*s){char*t=s;while(*t++);return(t-s);}该函数的功能是:(A)比较两个字符串的大小(B)计算s所指向字符串占用内存字节的个数(C)计算s所指字符串的长度(D)将s所指字符串复制倒字符串t中三、基础填空题(14空,每空1分,共14分)1.以下程序的输出结果是。#includestring.hmain(){printf(“%d\n”,strlen(IBM\n012\n));}2.执行以下程序后的输出结果是main(){inta=10;a=(3*5,a+4);printf(a=%d\n,a);}3.排序是数据处理中最常见的问题,它是将一组数据按递增或者递减的次序排列。排列的算法很多。常用的算法有法和选择法。4.设有定义“charweb[20];”,要将字符串“”赋值给字符数组web的语句是。5.一个函数用于接收一个字符和一个整数,并返回一个字符,函数名为love_c,则该函数的原型说明为。6.c语言规定,简单变量作函数参数时,他和对应的形参之间的数据传递方式是。7.判断字符变量x是小写英文字母字符的C语言表达式是。8.程序中调用了库函数strcmp,必须包含头文件。9.若x=13,y=25,z=-17,则表达式((p=(xy)?x:y)z?p:z)的值为。10.下列程序段的的输出结果是。chara=010,b=10;第6页共13页printf(%d\n,a&b2);11.表达式中的类型转换分为两种:一种是隐式数据类型转换;另一种是数据类型转换。12.数组是顺序存储结构,它的存储分配方式是“静态”的。是一种动态的数据结构,它由若干个结点链接而成,与数组最大的不同是结点在内存中并不占据连续的存储空间。13.有定义:inta[][3]={1,2,3,4,5,6,8,9,10};则printf(%d,*(*(a+1)+2));语句的输出结果为。14.以下程序的输出结果是。main(){inta,b,c=240;a=c/100%9;b=(-1)&&(-1);printf(%d,%d\n,a,b);}四、程序填空题(10空,每空2分,共20分)1.下面程序运行后输入以-1结束的一批整数,输出其中的最大值。例如:输入-3-8-10-1后,输出:-3#includestdio.hvoidmain(){intmax,x;scanf(%d,&x);if(x!=-1){___(1)___;while(__(2)____){if(maxx)max=x;___(3)____;}printf(max=%d\n,max);}}第7页共13页(1)(A)x=max(B)max=x(C)x++(D)max=0(2)(A)x!=-1(B)max=0(C)x==-1(D)max!=-1(3)(A)max=max+1(B)x=x+1(C)scanf(“%d”,&x);(D)elsemax=-12.下面程序通过字符指针实现,将s1指向的字符串“Ihaveadream!”反向拷贝到s2中。#includestdio.h#includestdlib.hvoidmain(){char*s1=Ihaveadream!,*s2,*t;intlen;len=___(4)____;s2=(char*)calloc(len+1,sizeof(char));t=s2;while(*s1!=’\0’)s1++;do{s1--;len--;__(5)____;s2++;}while(len0);*s2=’\0’;s2=t;puts(s2);}(4)(A)strcpy(s1)(B)st(C)*s1(D)strlen(s1)第8页共13页(5)(A)*s1=*s2(B)*s2=*s1(C)&s2=&s1(D)&s1=&s23.建立一个链表,每个结点包括:学号、姓名、性别、年龄。#defineLENsizeof(structstudent)structstudent{charnum[6];charname[8];charsex[2];intage;structstudent*next;}stu[10];main(){structstudent*p,*pt,*head;inti,length,iage;printf(Inputlengthoflist(10).);scanf(%d,&length);/*建立链表*/for(i=0;ilength;i++){p=(structstudent*)malloc(LEN);if(i==0)___(6)___;elsept-next=p;pt=p;printf(“NO:”);scanf(“%s”,p-num);printf(“name:”);scanf(“%s”,p-name);printf(“sex:”);scanf(“%s”,p-sex);printf(“age:”);第9页共13页scanf(“%d”,&p-age);}___(7)_____;p=head;printf(“\nNO.namesexage\n”);while(__(8)___){printf(“%4s%8s%6s%6d\n”,p-num,p-name,p-sex,p-age);p=p-next;.}}(6)(A)head=pt=p;(B)p=pt=head;(C)head=p;(D)p=head;(7)(A)p-next=p;(B)head-next=NULL;(C)pt-next=NULL;(D)p-next=NULL;(8)(A)p!=NULL(B)p==NULL(C)head!=NULL(D)head==NULL4.一球从100米高度自由落下,每次落地后反弹跳回原高度的一半,再落下。求它再第10次落地时,共经过多少米?第10次反弹多高?main(){floatsn=100,hn=_(9)____;intn;for(n=2;n=10;n++){sn=sn+_(10)___;/*第n次落地时共经过的米数*/hn=hn/2;/*第n次反弹的高度*/}p
本文标题:精选C语言试卷(带答案).
链接地址:https://www.777doc.com/doc-4789049 .html