您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > AI人工智能 > C语言程序设计试卷-A卷(正式用卷)
C语言程序设计试卷共12页第1页计算机学院2008-2009学年第2学期C语言程序设计考试试卷A卷(或B卷):A卷闭卷(或开卷):闭卷考试时间:2009年6月23日专业班级学号学生姓名题号一二三四五六七总分核对人题分10101010202020100得分一、单项选择题(在下面每小题的A、B、C、D四个选项中,只有一个选项是正确的,请选择正确的选项并填写到括号内,选择正确得分。本大题共10小题,每小题1分,共10分。)1、ENUM是【A】A、合法标识符B、C语言的关键字C、合法的字符串D、既不是C语言的关键字,也不是合法的字符串或标识符2、下列数据中属于合法字符常量的是【A】DA、'\'B、'\xag'C、'45'D、'\''3、下列数据中合法的浮点型常量是【C】A、E+10B、2E+1.5C、2E-10D、0x2.5E104、下列数据中与256等值的数为【A】BA、0256B、0400C、0x400D、0x2565、以下叙述中正确的是【B】A6、局部变量说明为static存储类型,其生存期将得到延长B、全局变量说明为static存储类型,其作用域将被扩大C、任何存储类型的变量在未赋初值时,其值都是不确定的D、形参可以使用的存储类型说明符与局部变量完全相同6、-127的16位补码的十六进制表示是【A】A、0xff81B、0x807fC、0xff80D、0x80807、对于下面的数组声明,正确的是【D】BA、intx[][5];B、chart[]={‘a’,’b’,’c’,’\0’};C、intn=5,a[n];D、chars[5]=“abcde”;8、若有以下的说明和语句,则在执行for语句后,*(*pt+2)表示的数组元素是【D】intt[3][3],(*pt)[3],k;for(k=0;k3;k++)pt=t+k;A、t[1][2]B、t[2][0]C、t[2][1]D、t[2][2]9、已知枚举类型定义:enuma{ONE=5,TWO=3,THREE};则THREE的值的是【B】CA、1B、2C、4D、010、设有以下说明和语句,则表达式z.y.a2的值的是【D】Cstructpacked{unsignedshorta1:2;unsignedshorta2:2;unsignedshorta3:4;unsignedshorta4:8;};得分评卷人C语言程序设计试卷共12页第2页union{shortx;structpackedy;}z;z.x=0xabab;A、11B、3C、2D、10二、多项选择题(下面每小题的A、B、C、D备选项中,有两个或两个以上的选项是正确的,请选择正确的选项并填写到括号内,多选、少选、错选均不得分。本大题共5小题,每小题2分,共10分。)1、以下选项可作为C语言合法整型常量的是:【ABD】ABCA、0xf9B、100UC、0XABCDE12LD、02872、对于下面关于数组声明,正确的是:【BCD】A、intc[2,3];B、intb[’b’-’a’];C、intx,a[x][3];D、chard[11]=abc\ndef\n;3、设有声明:intk[2],*p1=k,*p2=p1;下面能够正确执行的语句有:【CD】BDA、k=p1;B、p2=k+1;C、p1=p2;D、*p1*=*p2;4、设有说明:structT{intn[2];char*s;}t[2]={{{1,0},xy},{{0,1},yx}},*p=t;下面表达式之值为’x’(或其ASCII码值为120)的是:【CD】BCDA、*(*p).sB、*++(++p)-sC、p-s[p-n[0]]D、(*++p).s[*(*p).n]-15、链表具备的特点是【ABC】ABDA、链表由一系列包含数据域和指针域的结点组成B、插入和删除不需要移动任何元素C、可随机访问任意一个结点D、所需存储空间与其长度成正比三、填空题(本大题共10小题,每小题1分,共10分。)本大题的第1题至第5题请参考下面的说明,请计算出表达式的值并填入各题后面的括号中,各题的表达式相互无关。shortx[]={-1,0,1},*p=x;unsignedshorty=8;【8】1、*(p+1)?y+x[1]:y-x[1]【65535】2、y=~x[1]【17】3、x[2]|0x10【4】4、yx[2]【7】5、~(*p3)本大题的第6题至第10题请参考下面的说明,请计算出表达式的值并填入各题前面的括号中,各题的表达式相互无关。得分评卷人得分评卷人C语言程序设计试卷共12页第3页structT{charc;char*s;intx;}a[]={{'A',123,0},{'B',321,1}},*p=a;【】6、(++p)-x【】7、p-c+(p+1)-x【】8、*(++p)-s【】9、++p-s[1]【】10、*p++-s++四、判断改错题(先判断下面各题中是否存在错误;如果存在错误,请改正之;否则不必改。本大题共5小题,每小题2分,共10分。)1、计算数学表达式(b2-4ac)/2对应的程序段如下:floata,b,c,delta;scanf(%f%f%f,&a,&b,&c);delta=(b*b-4*a*c)*(1.0/2);printf(%f,delta);2、本小题的程序段如下:Int想,*p1=&x;scanf(%d,p1);printf(%d\n,*p1);3、创建一个含有30个元素的动态数组table,元素类型为structREC的程序段如下:structREC{charname[8];charsex;intscore;}*table;table=(structREC*)malloc(sizeof(30*structREC));4、本小题的程序段如下:constchar*sp[2]={abc,123};sp[0]=ABC;得分评卷人C语言程序设计试卷共12页第4页5、将变量x按位左移n位的宏定义为:#defineROL(x,n)((x)=(n))五、简答题(本大题共5小题,每小题4分,共20分)1、设有声明intx=1,y=2,t;请写出一个C表达式将x、y值交换。T=x,x=y,y=t2、请写一个C表达式,其结果是3个整型变量a、b、c中数值居中的那个变量的值。ab?(bc?B:(ac?c:a)):(ac?a:(bc?b:c)3、请写一个C表达式,将整数k的高字节作为结果的低字节,整数p的低字节作为结果的高字节,拼成一个新的整数。k8|p84、请解释声明语句char*(*(*pa)[8])(int(*)(int));所声明标识符pa的数据类型。Pa是指向8个元素函数指针数组的指针;函数指针数组中每个元素所指向函数返回值的类型为char*,函数指针数组中每个元素所指向函数的形参为指向一个返回值类型为int、含有一个int参数的函数指针,5、设a是有2个元素的函数指针数组,数组中每个元素所指向的函数带有一个数组指针类型的形参,该形参指向有3个元素的整型数组,而函数返回值的类型与该形参类型相同;请写出相应的声明语句。int(*(*a)[2](int(*)[3]))[3];得分评卷人C语言程序设计试卷共12页第5页六、阅读程序并写出其运行结果(本大题共5小题,每小题4分,共20分。)1、请写出下面程序的运行结果。#includestdio.hintx=10;voidmain(void){printf(x=%d\n,x++);{intx=1;printf(x=%d\n,x++);}printf(x=%d\n,x++);}x=10x=1x=112、请写出下面程序的运行结果。#includestdio.hvoidfun(intn){staticx=1;x*=n;printf(x=%d\n,x);}voidmain(void){inti;for(i=1;i8;i++)if(i%2)continue;elsefun(i);}x=2x=8x=48得分评卷人C语言程序设计试卷共12页第6页3、请写出下面程序的运行结果。#includestdio.hchar*strmins(char*,char*);voidmain(void){chara[80]=,b[]=abcde;printf(%s\n,strmins(strmins(a,b),b));}char*strmins(char*s,char*t){inti,m=0,n=0;while(*(s+m++));m--;while(*(t+n))n++;for(i=m;i=m/2;i--)*(s+i+n)=*(s+i);for(i=0;in;i++)*(s+i+m/2)=*(t+i);returns;}4、请写出下面程序的运行结果。#includestdio.h#defineCHAR_BIT8typedefunsignedshortintUINT16;voidbit_print(int);voidbit_print(intx){UINT16i;UINT16n=sizeof(UINT16)*CHAR_BIT;UINT16mask=1(n-1);for(i=1;i=n;++i){putchar(!(x&mask)?'0':'1');x=1;if(!(i%CHAR_BIT)&&in)C语言程序设计试卷共12页第7页putchar('');}putchar('\n');}voidmain(void){UINT16x[3]={7,3,1},i,n=0;for(i=0;i3;i++){switch(i){case0:bit_print(x[n++]);break;case1:bit_print(x[n++]);default:bit_print(x[n]);}}}5、请写出下面程序的运行结果。#includestdio.hchar*f1(char*,char*);char*f2(char*,char*);voidmain(void){char*(*fp_ary[2])(char*,char*)={f1,f2};chara[80],b[]=Cisverypowerfultoolforprogramming!\n;char*p,c[]=Generallyspeaking,\n,d[80];p=(*fp_ary[0])(d,b);printf(%s,p);(*fp_ary[0])(a,c);printf(%s,a);p=(*fp_ary[1])(a,p);printf(%s,p);}char*f1(char*p1,char*p2){C语言程序设计试卷共12页第8页char*p=p1;while(*p++=*p2++);returnp1;}char*f2(char*p1,char*p2){char*p=p1;while(*p++);p--,p--;f1(p,p2);returnp1;}七、完善程序(本大题有2小题,给出的都是部分程序,通过填空来完善程序。本大题共10空,每空2分,共20分。)1、本大题第①、②、③、④、⑤空请参阅下面的部分程序。[程序说明]下面是通过命令行方式输入若干数字串,再将数字串转换成为对应的整数,然后对其进行排序和查找操作的部分程序test2009,请对其进行完善。如:在C:\提示符下输入test20096123810257136885并回车,程序对应的运行结果如下:61238102571368855681236387185102find=2请将下面程序中①、②、③、④、⑤空处应该完善的内容填写在本小题后①、②、③、④、⑤后面的下划线处。#includestdio.hintatoi(char*);voidshellsort(inta[],intn);intBinarySearch(inta[],intx,intn);/*atoi是将数字串转换为对应整数的函数*/intatoi(char*s){intj=0,num=0;for(;*(s+j)!='\0
本文标题:C语言程序设计试卷-A卷(正式用卷)
链接地址:https://www.777doc.com/doc-2908322 .html