您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > AI人工智能 > 2012年C语言程序设计试卷A卷(正式用卷)
C语言程序设计试卷共11页第1页计算机学院2011-2012学年第2学期C语言程序设计考试试卷A卷(或B卷):A卷闭卷(或开卷):闭卷考试时间:2012年6月27日专业班级学号学生姓名题号一二三四五六七总分核对人题分10101010202020100得分注意:试卷后面附有运算符的优先级和结合性表。一、单项选择题(在下面每小题的A、B、C、D四个选项中,只有一个选项是正确的,请选择正确的选项并填写到括号内,选择正确得分。本大题共10小题,每小题1分,共10分。)1、下列选项中,不是合法标识符的是【】A、INTB、_123C、testD、2nd2、已知ch是字符变量,下面正确的表达式是【】A、ch='120'B、ch='\xFF'C、ch='\08'D、ch='\’3、执行语句for(i=1;i++4;);后,变量i的值是【】A、3B、4C、5D、不定4、设有变量声明语句shorta=-5;则变量a的二进制补码形式是【】A、1000000000000101B、1111111111111101C、1111111111111011D、11111111111110105、与声明:charstr[10]={‘a’,’b’,’c’,’\0’};相等的声明是【】A、charstr[10]=“abc\0”;B、char*str=“abc”;C、charstr[]=“abc”;D、charstr[10]=“abc”;6、下面程序段运行的结果是【】chars[6]={'x','y','z','\0','1','2'}puts(s);A、'x''y''z'B、xyzC、xyz12D、乱码。7、int(*p)[5];定义的是【】A、p是一个指针数组,该数组中的每一个元素都是一个整型指针;B、p是一个数组的指针,该指针指向一个长度为5的整型数组;C、p是一个函数指针,该指针指向一个参数为5的函数;D、p是一个指针函数,该函数的返回值为一个整型指针;8、假设变量说明为:intk=1;则语句k--||k,k++;运算完后,k的值是【】A、-1B、0C、1D、29、已知宏定义:#defineMy*y+3*y则表达式s=3*M+4*M+y*M编译预处理后的结果是【】A、s=3*(y*y+3*y)+4*(y*y+3*y)+y*(y*y+3*y);B、s=3*(y*y)+3*y+4*(y*y)+3*y+y*(y*y)+3*y;C、s=3*y*y+3*y+4*y*y+3*y+y*y*y+3*y;D、s=3*(y*y)+(3*y)+4*(y*y)+(3*y)+y*(y*y)+(3*y);10、以下scanf函数调用选项中,错误的是【】得分评卷人C语言程序设计试卷共11页第2页structT{charname[20];intage;intsex;}a[5],*pa=a;A、scanf(%s,a[0].name);B、scanf(%d,&pa[0].age);C、scanf(%d,&(pa-age));D、scanf(%d,pa-age);二、多项选择题(下面每小题的A、B、C、D备选项中,有两个或两个以上的选项是正确的,请选择正确的选项并填写到括号内,多选、少选、错选均不得分。本大题共5小题,每小题2分,共10分。)1、以下表达式中,能正确根据表达式C=(F-32)59,由华氏温度F计算出摄氏温度C(设C、F均为float类型)的有【】A、C=5/9*(F-32)B、C=(F-32)*5/9B、C=5*(F-32)/9D、C=(F-32)/9*52、以下声明正确的有【】A、intI,k=5,*j;B、intm,b[m];C、intz[10]={0,1,2,3,4};D、charstr[]=abccdmnkj;3、以下表达式中,表达式等价的有【】A、x/=2B、x1C、x=x/2D、x=1/2*x4、若有定义intname[5][10];则下面的表达中,代表地址的有【】A)nameB)name[0]C)&name[1]D)name[0][0]5、以下关于外部变量说法正确的有【】A、程序开始运行时,系统首先就为外部变量在静态区分配存储空间;B、整个程序运行结束后,被外部变量占用的存储单元才被收回;C、外部变量的生命周期是永久的,存在于整个程序的执行期间;D、如果定义时,没有对外部变量显示初始化,其缺省初值为0;三、填空题(本大题共10小题,每小题1分,共10分。)本大题的第1题至第5题请参考下面的说明,请计算出表达式的值和类型并填入各题前面的括号中,各题的表达式相互无关。charc1='\x41',c2;shortintm=3,n=6,i=0x35F7,j=0xF315;floatx=12.0,y=20.0;【】1、m+++n,m+n++,++n【】2、c2=c1+n-m【】3、m=~(i&j2)【】4、m%5&&n%7【】5、n+y本大题的第6小题至第10小题请参考下面的说明,请计算出表达式的值并填入各题前面的括号中,各题的表达式相互无关。typedefunionlongChar{得分评卷人得分评卷人C语言程序设计试卷共11页第3页longld;unsignedcharlarr[4];}longType;longTypel1,l2;structT{longid;intitype;unsignedchar*s;}a[]={{100,1,l1.larr},{101,2,l2.larr}},*p=a;longk;charc;l1.ld=0x01020304,l2.ld=0x0a0b0c0d;【】6、k=p-id+1;【】7、c=p-s[3]2;【】8、c=*((p+1)-s);【】9、c=!(p-itype==1)?*p-s:*((*p).s+2);【】10、c=(++p-s)[1];四、判断改错题(先判断下面各题中是否存在错误;如果存在错误,请改正之;否则不必改。本大题共5小题,每小题2分,共10分。)1、本小题的程序段如下:chars1[20];s1=china;2、以下代码依次给数组a的每一个元素赋值:inti=0,a[5];while(i++5)scanf(%d,&a[i]);3、定义完成计算多项式f(x)=x2+3x+5的宏。#definef(x)x*x+3*x+5得分评卷人C语言程序设计试卷共11页第4页4、本小题的程序段如下:intp1=1,p2=2;int*arr[2]={p1,p2};5、命令行的格式为:mycode12345根据命行参数计算1+2+3+4+5的代码片段如下:ints=0;for(i=0;iargc;i++)s+=atoi(argv[i]);printf(%d\n,s);五、简答题(本大题共5小题,每小题4分,共20分)1、叙述#defineM10和constintM=10;的区别。2、写一个表达式取shortint类型变量x的奇数位和shortint类型变量y的偶数位(从低位至高位编号为0,1,2,…,15),合并后赋给shortint类型变量z。3、请写一个C表达式,当整型变量x和y的值都大于0或都小于0时,表达式取值为1;当整型变量x和y的值有一个等于0时,表达式取值为0;否则表达式取值为-1。4、已知宏MAX3(a,b,c)已经定义且可以求出整型变量a,b,c的最大值,请以此为依据定义一个求4个整型变量a,b,c,d最大值的宏MAX4(a,b,c,d)。得分评卷人C语言程序设计试卷共11页第5页5、声明语句:char*(*(*p)(void))(char*,char*);中p的含义是什么?六、阅读程序并写出其运行结果(本大题共5小题,每小题4分,共20分。)1、请写出下面程序的运行结果。#includestdio.hvoidfun(int*,int);voidmain(void){intx=2,y=5,i;for(i=1;i3;i++)fun(&x,y);printf(x=%d,y=%d\n,x,y);}voidfun(int*m,intn){staticintv=0;*m=v+=n++;return;}2、请写出下面程序的运行结果。#includestdio.hvoidmain(){longa[10]={12,43,56,32,17,16,8,7,10,55},m,n;inti;m=n=0xFFFFFFFF;for(i=0;i10;i++)if(a[i]m){n=m;m=a[i];}elseif(a[i]n)n=a[i];得分评卷人C语言程序设计试卷共11页第6页printf(m=%ld,n=%ld\n,m,n);}3、请写出下面程序的运行结果。#includestdio.hvoidfun1(char*s){if(*s){fun1(s+1);putchar(*s);}elseputchar('~');}voidmain(){fun1(\n!gnikrowsieh);}4、请写出下面程序的运行结果。#includestdio.hinta[]={1,2,3,4,5,6,7,8,9,10,11};intbsearch(int*a,intx,inty,intv){intm;while(xy){m=x+(y-x)/2;if(*(a+m)==v)returnm;elseif(*(a+m)v)y=m;elsex=m+1;}return-1;}voidmain(void)C语言程序设计试卷共11页第7页{intloc;loc=bsearch(a,0,sizeof(a)/sizeof(int),6);if(loc!=-1)printf(a[%d]=%d\n,loc,a[loc]);elseprintf(notfound!!!\n);loc=bsearch(a,0,sizeof(a)/sizeof(int),bsearch(a,0,sizeof(a)/sizeof(int),3));printf(a[%d]=%d\n,loc,a[loc]);return;}5、请写出下面程序的运行结果。#includestdio.h#includestring.hvoidfun2(char*s1,char*s2){intlen1=strlen(s1),len2=strlen(s2);char*pc0=s1+len1-len2+1,*pc1,*pc2;for(;s1pc0;s1++){pc2=s2;while(*pc2&&*(s1+(pc2-s2))==*pc2)pc2++;if(!*pc2){pc1=s1,pc2=s1+len2-1;while(pc1pc2)*pc1=*pc1^*pc2,*pc2=*pc1^*pc2,*pc1=*pc1++^*pc2--;}}}voidmain(){chars1[20]=abcxyzabcxyz123xy2z,s2[20]=xyz;fun2(s1,s2);puts(s1);}C语言程序设计试卷共11页第8页七、完善程序(本大题有2小题,给出的都是部分程序,通过填空来完善程序。本大题共10空,每空2分,共20分。)1、本大题第①、②、③、④空请参阅下面的部分程序。[程序说明]任意的正整数,根据其各位的数字重新排列,得到一个最大的数字。其输入输出结果如下输入:1879657输出:9877651输入:-9878输出:-7889显然,当输入的整数是正数时,需将各位数字转换为数字字符然后按照降序排序,反之将按照升序排序。请将下面程序中①、②、③、④处应该完善的内容填写在本小题后①、②、③、④后面的下划线处,用来完善该程序。#includestdio.h#defineUP1#defineDOWN0voidsort(chars[],intn,intflag){/*根据flag的值对s进行升序或降序排列*/inti,j;for(i=0;in-1;i++)for(j=0;jn-i-1;j++)if(①)s[j]=s[j]^s[j+1],s[j+1]=s[j]^s[j+1],
本文标题:2012年C语言程序设计试卷A卷(正式用卷)
链接地址:https://www.777doc.com/doc-3032035 .html