弹剑狂歌临绝塞,云海苍茫人远,挽冰河洗涤尘丝乱,对孤盏独酌月光寒。C语言笔试试题第1页共20页一行白雁遥天暮,几点黄花满地秋。二级C语言笔试试卷(A)2007年1注意事项:1.一、二题为客观题,请将答案涂在机读答题卡上2.三、四、五、六题为主观题,请将答案做在答题纸上一、单项选择题。(每小题1分,共20分)1.在C程序的函数调用时,主调函数中的实参和被调函数中的形参()。(A)个数、次序必须相同,但数据类型可以不考虑(B)个数、次序和对应参数的数据类型都应该相同(C)个数、次序和数据类型均可以不相同(D)对应参数数据类型应相同,但个数和次序可以不考虑2.如a为int型,则与表达式a等价的C语言关系表达式是()(A)a0(B)a!=0(C)a==0(D)a03.循环语句for(a=0,b=0;(b!=45)||(a5);a++);的循环次数是()(A)4(B)3(C)5(D)无数多次4.设有字符数组a,则正确的输入语句是()。(A)gets('a');(B)scanf(%c,a);(C)scanf(%s,a);(D)gets(a);5.enumcolor{red,green,yellow=5,white,black};定义了一枚举类型。编译程序为值表中各标识符分配的枚举值依次为()。(A)1、2、3、4、5(B)0、1、5、2、3(C)0、1、5、6、7(D)3、4、5、6、76.运行完下列程序后,在屏幕上的内容是()。voidmain(){inta=0;a+=(a=12);printf(%d\n,a);}(A)0(B)6(C)12(D)247.若x,y为实数类型的变量,要判断x,y相等,最好使用下列关系表达式()。(A)x==y(B)x-y==0(C)fabs(x-y)1e-8(D)labs(x-y)1e-88.若有以下的定义、说明和语句,则值为101的表达式是()。structCW{inta;int*b;}*p;intx0[]={11,12},x1[]={31,32};structCWx[2]={100,x0,300,x1};p=x;(A)*p-b(B)p-a(C)++(p-a)(D)(p++)-a9.以下程序的输出结果是()。intx=3,y=4;voidmain(){intx,y=5;x=y++;printf(%d,x);}(A)3(B)4(C)5(D)610.在C语言中,函数默认的存储类型为()。(A)auto(B)register(C)static(D)extern11.有定义:floaty,*p=&y;,假定变量y在内存中所占地址为100~103。那么p的值为()。(A)100(B)101(C)102(D)10312.有定义:inta[10],n,*p1=a,*p2=&a[9];,则正确的赋值语句为()。(A)n=p2-p1;(B)n=p2*p1;(C)n=p2+p1;(D)n=p1/p2;13.调用strlen(abcd\0ef\ng\0)的结果为()。(A)4(B)5(C)8(D)1014.执行下面程序中输出语句后,a的值是()。#includestdio.hmain(){inta;printf(%d\n,(a=3*5,a*4,a));}(A)65(B)20(C)15(D)10弹剑狂歌临绝塞,云海苍茫人远,挽冰河洗涤尘丝乱,对孤盏独酌月光寒。C语言笔试试题第2页共20页一行白雁遥天暮,几点黄花满地秋。15.若有定义inta,b,x;且变量都已正确赋值,下面选项中合法的if语句是()。(A)if(a==b)x++;(B)if(a=b)x++;(C)if(ab)x++;(D)if(a=b)x++;16.执行下面的程序后,变量a的值是()。#includestdio.h#defineSQR(X)X*Xvoidmain(){inta=10,k=2,m=3;a/=SQR(m)/SQR(k);printf(%d\n,a);}(A)10(B)1(C)5(D)017.若变量t为double类型,表达式(t=1,t+5,t)的值是()。(A)1(B)6.0(C)1.0(D)618.在C语言中,下面关于数组的描述中正确的是()。(A)数组的大小是固定的,但可以有不同类型的数组元素(B)数组的大小是可变的,但所有数组元素的类型必须相同(C)数组的大小是固定的,所有数组元素的类型必须相同(D)数组的大小是可变的,可以有不同的类型的数组元素19.下述程序的输出结果是()。#includestdio.hvoidmain(){inta,b,c=241;a=c/100%9;b=-1&&-1;printf(%d,%d\n,a,b);}(A)2,0(B)2,1(C)6,1(D)0,-120.若有以下说明和语句,则下列引用方式中不正确的是()。structworker{intno;char*name;}work,*p=&work;(A)work.no(B)(*p).no(C)p-no(D)work-no二、基本概念选择填空题(本大题后面有若干备选项,请选择合适的备选项并将其号码填入各小题的空白处。每空2分,共10分)1.在C语言中,函数一般由两个部分组成,它们是函数首部和①。2.任何程序都可调用标准函数exit(),当它被调用时就②程序的执行。3.一个C语言程序在可以被执行之前,需要经过的4个处理程序是:编辑程序、预处理程序、编译程序和③。4.在C语言中无固有的输入和输出语句,但是用C语言编写的程序可以用函数调用的形式来实现输入、输出,这些函数由④提供。5.C标准库函数rewind的作用是⑤。备选项:(A)主函数(B)函数体(C)函数首部(D)用户自定义函数(E)终止(F)使读写指针指向文件的开头(G)标准I/O库/系统(H)连接程序(J)判断文件指针是否指向文件末尾三、程序填空题。(每空2分,共20分)。1.下面程序的功能是从键盘上输入一行字符,将其中的小写字母转换为大写字母后输出。请填空完善程序。#includestdio.hvoidmain(){charc;while((c=①)!='\n')if(c='a'&&c='z')printf(%c,c-32);}2.下面程序的功能是从当前目录下的文本文件“f1.txt”中读取前10个字符,依次显示在屏幕上;如果文本文件中不足10个字符,则读完为止;请填空完善程序。#includestdio.hvoidmain(){FILE*fp;inti;charc;if(②==NULL){printf(Can'topenthisfile!\n);弹剑狂歌临绝塞,云海苍茫人远,挽冰河洗涤尘丝乱,对孤盏独酌月光寒。C语言笔试试题第3页共20页一行白雁遥天暮,几点黄花满地秋。return;}for(i=0;i10;i++){if(feof(fp))break;c=fgetc(fp);putchar(c);}fclose(fp);}3.下面程序的功能是输出数组中的各字符串,请填空完成程序。#includestdio.hvoidmain(){char*a[]={abcd,12345,efghijk,67890};char③;intj=0;p=a;for(;j4;j++)④;}4.下面函数mfc用于求取两个正整数的最大公因子,请填空完善函数。intmcf(inta,intb){inttemp;while(b){temp=⑤;a=b;b=temp;}returna;}5.下面程序的功能是将字符串str的内容颠倒过来并输出,请填空完善程序。#includestdio.hvoidmain(){charstr[]={abcdefg},*p1,*p2,ch;p1=p2=str;while(*p2!='\0')p2++;⑥;while(p1p2){ch=*p1,*p1=*p2,*p2=ch;⑦;p2--;}puts(str);}6.下面函数yh的功能是构成一个杨辉三角形,请填空完成该函数。#includestdio.h#defineN11voidyh(inta[][N]){intj,k;for(j=1;jN;j++){a[j][1]=1;a[j][j]=⑧;}for(⑨;jN;j++)for(k=2;kj;k++)a[j][k]=⑩+a[j-1][k];}四、阅读程序题(每小题5分,共30分1.下面程序的输出结果是()。#includestdio.hvoidmain(){voidfun(int*k);intw=5;fun(&w);}voidfun(int*k){(*k)++;printf(%d\n,*k++);}2.下面程序的输出结果是()。#includestdio.hvoidmain(){charch[2][5]={1234,5678},*p[2];intj,k,s=0;for(k=0;k2;k++)p[k]=ch[k];for(k=0;k2;k++)for(j=0;p[k][j]'0'&&p[k][j]='9';j+=2)s=10*s+p[k][j]-'0';printf(s=%d\n,s);}3.下面程序的输出结果是()。#includestdio.hintfunc(int,int);voidmain(){intk=4,m=1,p;p=func(k,m);printf(%d,,p);p=func(k,m);printf(%d\n,p);}intfunc(inta,intb){staticintm=1,n=2;n+=m+1;m=n+a+b;弹剑狂歌临绝塞,云海苍茫人远,挽冰河洗涤尘丝乱,对孤盏独酌月光寒。C语言笔试试题第4页共20页一行白雁遥天暮,几点黄花满地秋。returnm;}4.下面程序的输出结果是()。#includestdio.hvoidmain(){inta[10]={1,2,3,4,5,6,7,8,9,10},k,s,i;doubleave;for(k=s=i=0;i10;i++){if(a[i]%2)continue;s+=a[i];k++;}if(k!=0){ave=s/k;printf(%d,%f\n,k,ave);}}5.在下列程序中,若输入为:todayisMonday!CR,则输出结果是()。#includestdio.hvoidmain(){chars[40],c,*str=s;intnum=0,word=0;gets(str);while((c=*str++)!='\0'){if(c=='')word=0;elseif(word==0){word=1;num++;}}printf(%dwords\n,num);}6.下列程序的输出结果是()。#includestdio.hunsignedf(unsignednum){unsignedk=1;do{k*=num%10;num/=10;}while(num);returnk;}voidmain(){intx=35,y=550;printf(%d,%d\n,f(x),f(y));}五、编程序。(每小题10分,共20分)1.函数delspace的功能是删除一个字符串中所有的空格。例如,输入字符串为Thisisastring,则输出结果为Thisisastring。测试用主函数如下所示,请编制函数delspace。#includestdio.h#includestring.hvoidmain(){char*delspace(char*str);chars[81],*ds;gets(s);ds=delspace(s);printf(\nResult:%s\n,ds);}2.已知两个3位数abc和cba之和为1333(即abc+cba=1333),编程序求出3个数字a、b和c。二级C语言笔试试卷(A)2007年2注意事项:1.一题为客观题,请将答案涂在机读答题卡上2.请将二、三、四、五题的答案做在答题纸上一.单项选择题。(每