您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > AI人工智能 > 2013年C语言程序设计试卷-A卷(正式用卷)
C语言程序设计试卷共12页第1页计算机学院2012-2013学年第2学期C语言程序设计考试试卷A卷(或B卷):A卷闭卷(或开卷):闭卷考试时间:2013年7月5日专业班级学号学生姓名题号一二三四五六七总分核对人题分10101010202020100得分注意:试卷后面附有运算符的优先级和结合性表。一、单项选择题(在下面每小题的A、B、C、D四个选项中,只有一个选项是正确的,请选择正确的选项并填写到括号内,选择正确得分。本大题共10小题,每小题1分,共10分。)1、以下为正确的标识符是【】A、forB、u.3C、3cD、DO2、以下为合法的整型常量是【】A、-1UB、01111001BC、ffffD、01383、下列数据中属于字符串常量的是【】A、'a'B、abcC、'123'D、a\b\c4、表达式-a+++b中记号(token)的个数是【】A、3个B、4个C、5个D、6个5、-3的16位补码是【】A、0xfffdB、0x1011C、0x7ffdD、0x00036、以下为正确的转义字符是【】A、'\'B、'\\'C、'\0x12'D、'\0f1'7、设有声明:enum{U,V,W=0,X,Y=0,Z}a;则值为1的枚举常量的个数是【】A、1个B、2个C、3个D、4个8、设有声明:【】unionU{longa;shortb;charc;chars[20];}v={0x01020304},*p=&v;则下列选项正确的是A、printf(%d\n,sizeof(v))输出4B、printf(%d\n,p-s[0])输出4C、printf(%d\n,v.c)输出1D、printf(%x\n,v.b)输出1029、设有声明和语句:FILE*fp;fp=fopen(c:\\abc.dat,r+);【】则下列选项正确的是A、打开文件的文件名为\abc.datB、打开的是二进制文件C、打开的是文本文件D、打开的文件只能进行读操作10、设有如下代码片段:【】inta[]={1,2,3,4,5},i;char*p=(char*)a;for(i=0;i3;i++)printf(%d,*((p+=sizeof(int))-sizeof(int)));printf(\n);则该代码片段的输出结果是A、12345B、123C、111D、234得分评卷人C语言程序设计试卷共12页第2页二、多项选择题(下面每小题的A、B、C、D备选项中,有两个或两个以上的选项是正确的,请选择正确的选项并填写到括号内。本大题共5小题,每小题2分,共10分。)1、设有声明:chars[]=abcdefg,*p=s,ch;则运算结果为’e’的选项有【】A、ch=s[4];B、*(p+4);C、*(s+4);D、*s2、设有声明:intx=10,y=20,*p=&x;下面选项中非法的表达式有【】A、y+=*p;B、*p+1=y;C、y+1=x;D、x=y+=10;3、设有声明:inta=5,b=10,t;则下面各表达式功能及结果都相同的有【】A、a+=b,b=a-b,a-=bB、a*=b,b=a/b,a/=bC、a^=b,b^=a,a^=bD、t=b,b=a,a=t4、设part.exe程序带形如intmain(intargc,char*argv[]){...}的【】main函数。则输入命令行:part.exeabc.datdef.datxyz.datuvw.dat时下面选项正确的有A、printf(%d\n,argc)输出5B、printf(%d\n,argc)输出4C、printf(%s\n,argv[1])输出abc.datD、printf(%c\n,argv[2][2])输出f5、设有以下说明:【】structT{unsignedshorta:1;unsignedshortb:2;unsignedshortc:3;unsignedshortd:4;unsignedshorte:6;}x,*p=&x;则下面对字段变量各成员赋值正确的有A、x.a=2B、p-b=3C、*p.c=4D、x.d=5三、填空题(本大题共10小题,每小题1分,共10分。)本大题的第1题至第5题请参考下面的说明,请计算出表达式的值和类型并填入各题前面的括号中,各题的表达式相互无关。以下程序假设在32位机上运行。charc1=’A’,c2;unsignedshorti=65535,j=2;shortintm=4,n=1;floatx=7.34,y=7.0;【】1、c2=c1+j【】2、m=i【】3、m^=nj【】4、nm&&(int)x==(int)y【】5、sizeof(int)+sizeof(c1)本大题的第6小题至第10小题请参考下面的说明,请计算出表达式的值并填入各题前面的括号中,各题的表达式相互无关。structT{inti;得分评卷人得分评卷人C语言程序设计试卷共12页第3页charc[20];char*pc;structT*next;}t2={2,“finalexam.”,t2.c,NULL},t1={1,“Thisisthe”,t1.c,&t2},*p=&t1;【】6、t1.i【】7、p-c[0]【】8、t1.next-i【】9、*++p-pc【】10、p-next-next=p,t2.next-i四、判断改错题(先判断下面各题中是否存在错误;如果存在错误,请改正之;否则不必改。本大题共5小题,每小题2分,共10分。)1、本小题的程序段如下:chars1[20]=abcde,s2[20];s2=s1;2、以下代码段接受从键盘输入的字符串,并输出:char*p;gets(p);printf(%s,p);3、定义一个带参的宏THR(x),它求x的三次方,#defineTHR(x)(x)*(x)*(x)4、输出2维数组元素m[1][2]的代码片段如下:intm[3][4],(*p)[4]=m;p=p+1;printf(%d,*p[2]);5、下面程序希望计算并输出2n。例如输入2,程序输出4;输入3,程序输出8。#includestdio.hintf(void);intmain(void){inti,n;scanf(%d,&n);得分评卷人C语言程序设计试卷共12页第4页for(i=1;in;i++)f();printf(2的%d次方是:%d\n,n,f());return0;}intf(){intf=1;returnf*=2;}五、简答题(本大题共5小题,每小题4分,共20分)1.写一个表达式,判断字符变量ch的值是否是字母。2.写一个表达式,将unsignedshortint型数x的高低字节对调。3.定义一个带参的宏ABS(e),用来求表达式e的绝对值。表达式e的类型可以是char、short、int或long,宏调用表达式的值为e的绝对值。4.用完全等效的新代码段替代以下代码,要求新代码段中不得使用转移语句。for(i=2;i*i=n;i++)if(!(m=n%i))break;5.设p是长度为3的函数指针数组,该数组中元素的类型为指向无参字符指针函数的指针。请写出相应的声明语句。得分评卷人C语言程序设计试卷共12页第5页六、阅读程序并写出其运行结果(本大题共5小题,每小题4分,共20分。)1、请写出下面程序的运行结果。#includestdio.hintf(intm){switch(m){case0:break;case1:m++;case2:m--;}returnm;}intmain(void){inti=0,a[]={2,1,0},m;while(m=f(a[i])){i++;printf(%d,m);}return0;}2、请写出下面程序的运行结果。#includestdio.hints(int*p,intn);intmain(void){inta[3]={1,2,7};printf(theresultis%d\n,s(a,3));return0;}ints(int*p,intn){if(n==0)return0;elsereturn(*p+s(p+1,n-1));}得分评卷人C语言程序设计试卷共12页第6页3、请写出下面程序的运行结果。#includestdio.h#includemath.hintf(intn);intmain(void){inti,a[3]={3,10,7},*p=a;for(i=0;i3;i++)if(f(p[i]))printf(%d\t,*(p+i));printf(\n);return0;}intf(intn){inti,m,flag=0;for(i=2;i=sqrt(n);++i)if(!(m=n%i))break;if(m)flag=1;returnflag;}4、请写出下面程序的运行结果。#includestdio.hvoidf(char*s,intc[]){charch;while(ch=*(s++)){if('a'=ch&&ch='z')c[ch-'a']+=1;elseif('A'=ch&&ch='Z')c[ch-'A']+=1;}}intmain(void){chara[]=Keepongoingnevergiveup;staticintcount[26],i;f(a,count);for(i=0;i26;i++)if(count[i]2)printf(%c\t,'A'+i);return0;}C语言程序设计试卷共12页第7页5、请写出下面程序的运行结果。#includestdio.htypedefstruct{intm;intn;}pair_t;intf(intx[],intn,ints,pair_t*r){inti,j;i=0,j=n-1;while(ij){if(x[i]+x[j]==s){r-m=i,r-n=j;return1;}if(x[i]+x[j]s)i++;elsej--;}return0;}intmain(void){inta[]={2,3,4,7,9,11,12,16},s=16;pair_tr;if(f(a,8,s,&r))printf(%d%d%d,a[r.m],a[r.n],s);elseprintf(Nosolution!);return0;}七、完善程序(本大题有,3小题,给出的都是部分程序,通过填空来完善程序。本大题共10空,每空2分,共20分。)1、本大题第①、②、③空请参阅下面的部分程序。[程序说明]下面的程序输出:BooksBooksareourfriends.请将下面程序中①、②、③处应该完善的内容填写在本小题后①、②、③后面的下划线处。#includestdio.hchar*copy(charto[],charfrom[]);char*mystrcat(char*t,char*s);intmain(void){chara[80],b[40]=Books,c[40]=areourfriends.;printf(%s\n,copy(a,b));得分评卷人C语言程序设计试卷共12页第8页printf(%s\n,①(a,c));return0;}char*copy(charto[],charfrom[])/*拷贝串from到串to*/{inti=0;while((to[i]=from[i])!='\0')②;returnto;}char*mystrcat(char*t,char*s)/*连接串s到串t的尾部*/{inti=0,j=0;while(t[i]!=0)i++;while(s[j]!=0)t[i]=s[j],i++,j++;t[i]=③;returnt;}①②③2、本大题第④、⑤、⑥空请参阅下面的部分程序。[程序说明]下面的程序首先用直接插入法对数组a排序,然后用二分查找法在a中找输入值y。请将下面程序中④、⑤、⑥应该完善的内容填写在本小题后④、⑤、⑥后面的下划线处。#includestdio.hintBinSe
本文标题:2013年C语言程序设计试卷-A卷(正式用卷)
链接地址:https://www.777doc.com/doc-2977210 .html