全国计算机等级考试二级C语言笔试试题及答案Word格式文档下载.docx
《全国计算机等级考试二级C语言笔试试题及答案Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《全国计算机等级考试二级C语言笔试试题及答案Word格式文档下载.docx(14页珍藏版)》请在冰豆网上搜索。
(11)以下叙述中正确的是
A.构成C程序的基本单位是函数
B.可以在一个函数中定义另一个函数
C.main()函数必须放在其它函数之前
D.所有被调用的函数一定要在调用之前进行定义
(12)以下选项中合法的实型常数是
A.5E2.0
B.E-3
C..2E0
D.1.3E
(13)以下选项中合法的用户标识符是
A.long
B._2Test
C.3Dmax
D.A.dat
(14)已知大写字母A的ASCII码值是65,小写字母a的ASCII码是97,则用八进制表示的字符常量‘\101’是
A.字符AB)字符aC)字符eD)非法的常量
(15)以下非法的赋值语句是
A.n=(i=2,++i);
B)j++;
C.++(i+1);
D)x=j>
0;
(16)设a和b均为double型变量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是
A)6.500000B)6
C.5.500000
D.6.000000
(17)已知i、j、k为int型变量,若从键盘输入:
1,2,3<
回车>
,使i的值为1、j的值为2、k的值为3,以下选项中正确的输入语句是
A.scanf(“---”,&
i,&
j,&
k);
B.scanf(“%d%d%d”,&
C.scanf(“%d,%d,%d”,&
D.scanf(“i=%d,j=%d,k=%d”,&
(18)与数学式子对应的C语言表达式是
A.3*x^n(2*x-1)
B.3*x**n(2*x-1)
C.3*pow(x,n)*(1/(2*x-1))
D.3*pow(n,x)/(2*x-1)
(19)设有定义:
longx=-123456L;
,则以下能够正确输出变量x值的语句是
A)printf(“x=%d\n”,x);
B.printf(“x=\n”,x);
C)printf(“x=?
L\n”,x);
D)printf(“x=%LD\n”,x);
(20)若有以下程序:
main()
{intk=2,i=2,m;
m=(k+=i*=k);
printf(“%d,%d\n”,m,i);
}
执行后的输出结果是
A.8,6
B.8,3
C.6,4
D.7,4
(21)已有定义:
intx=3,y=4,z=5;
,则表达式!
(x+y)+z-1&
&
y+z/2的值是
A.6
B.0
C.2
D.1
(22)有一函数,,以下程序段中不能根据x值正确计算出y值的是
A.if(x>
0)y=1;
B.y=0;
elseif(x==0)y=0;
if(x>
elsey=-1;
elseif(x<
0)y=-1;
C)y=0;
D)if(x>
=0)
if(x>
=0);
0)y=1;
elsey=0;
elsey=-1;
(23)以下选项中,与k=n++完全等价的表达式是
A.k=n,n=n+1
B.n=n+1,k=n
C.k=++n
D.k+=n+1
(24)以下程序的功能是:
按顺序读入10名学生4门课程的成绩,计算出每位学生的平均分并输出,程序如下:
{intn,k;
floatscore,sum,ave;
sum=0.0;
for(n=1;
n<
=10;
n++)
{for(k=1;
k<
=4;
k++)
{scanf(“%f”,&
score);
sum+=score;
}
ave=sum/4.0;
printf(“NO%d:
%f\n”,n,ave);
}
上述程序运行后结果不正确,调试中发现有一条语句出现在程序中的位置不正确。
这条语句是
A.sum=0.0;
B.sum+=score;
C.ave=sun/4.0;
D.printf(“NO%d:
(25)有以下程序段
intn=0,p;
do{scanf(“%d”,&
p);
n++;
}while(p!
=12345&
3);
此处do—while循环的结束条件是
A.P的值不等于12345并且n的值小于3
B.P的值等于12345并且n的值大于等于3
C.P的值不等于12345或者n的值小于3
D.P的值等于12345或者n的值大于等于3
(26)有以下程序
{inta=15,b=21,m=0;
switch(a%3)
{case0:
m++;
break;
case1:
switch(b%2)
{default:
case0:
printf(“%d\n”,m);
程序运行后的输出结果是
(27)C语言中,函数值类型的定义可以缺省,此时函数值的隐含类型是
A.void
B.int
C.float
D.double
(28)若有说明:
intn=2,*p=&
n,*q=p;
,则以下非法的赋值语句是
A.p=q;
B.*p=*q;
C.n=*q;
D.p=n;
(29)有以下程序
floatfun(intx,inty)
{return(x+y);
}
{inta=2,b=5,c=8;
printf(“%3.0f\n”,fun(int)fun(a+c,
B.,a-
C.);
程序运行后的输出结果是
A.编译出错
B.9
C.21
D.9.0
(30)有以下程序
voidfun(char*c,int
{*c=*c+1;
d=d+1;
printf(“%c,%c,”,*c,
D.;
{chara=’A’,b=’a’;
fun(&
b,a);
printf(“%c,%c\n”,a,
B.;
A)B,a,B,a
B.a,B,a,B
C.A,b,A,b
D.b,B,A,b
(31)以下程序中函数sort的功能是对a所指数组中的数据进行由大到小的排序
voidsort(inta[],intn)
{inti,j,t;
for(i=0;
i
for(j=i+1,j
if(a[i] }
{intaa[10]={1,2,3,4,5,6,7,8,9,10},i;
sort(&
aa[3],5);
for(i=o;
i<
10;
i++)print(“%d,”,aa[i]);
printf(‘\n”);
A)1,2,3,4,5,6,7,8,9,10
B.10,9,8,7,6,5,4,3,2,1,
C.1,2,3,8,7.6.5.4.9,10
D.1,2,10,9,8,7,6,5,4,3
(32)有以下程序
intf(intn)
{if(n==1)return1;
elsereturnf(n-1)+1;
{inti,j=0;
for(i=i;
3;
i++)j+=f(i);
printf(“%d\n”,j);
A.4
B.3
C.2
D.1
(33)有以下程序
{chara[]={‘a’,‘b’,‘c’,‘d’,‘e’,‘f’,‘g’,‘h’,‘\0’};
inti,j;
i=sizeof(a);
j=strlen(a);
printf(“%d,%d\b”i,j);
A)9,9B)8,9C)1,8D)9,8
(34)以下程序中函数reverse的功能是将a所指数组中的内容进行逆置。
voidreverse(inta[],intn)
{inti,t;
{t=a[i];
a[i]=a[n-1-i];
a[n-1-i]=t;
{intb[10]={1,2,3,4,5,6,7,8,9,10};
inti,s=0;
reverse(b,8);
for(i=6;
i++)s+=b[i];
printf(“%d\n”,s);
A.22
B.10
C.34
D.30
(35)有以下程序
{intaa[4][4]={{1,2,3,4},{5,6,7,8},{3,9,10,2},{4,2,9,6}};
inti,s=0
4;
i++)s+=aa[i][1];
printf(“%d\n”,s);
A.11
B.19
C.13
D.20
(36)有以下程序
#include
{char*p=“abcde\Ofghjik\0”;
printf(“%d\n”,strlen(p));
A.12
B.15
C.6
D.5
(37)程序中头文件typel.h的内容是:
#defineN5
#defineM1N*3
程序如下:
#define“type1.h”
#defineM2N*2
{inti;
i=M1+M2;
printf(“%d\n”,i);
程序编译后运行的输出结果是:
A.10
B.20
C.25
(38)有以下程序
{FILE*fp;
inti=20,j=30,k,n;
fp=fopen(“d1.dat”“w”);
fprintf(fp,“%d\n”,i);
fprintf(fp,“%d\n”j);
fclose(fp);
fp=fopen(“d1.dat”,“r”);
fp=fscanf(fp,“%d%d”,&
k,&
n);
printf(“%d%d\n”,k,n);
A.2030
B.2050
C.3050
D.3020
(39)以下叙述中错误的是
A.二进制文件打开后可以先读文件的末尾,而顺序文件不可以
B.在程序结束时,应当用fclose函数关闭已打开的文件
C.在利用fread函数从二进制文件中读数据时,可以用数组名给数组中所有元素读入数据
D.不可以用FILE定义指向二进制文件的文件指针
(40)有以下程序
main(intargc,char*argv[])
{inti,len=0;
for(i=1;
i printf(“%d\n”,len);
程序编译连接后生成的可执行文件是ex1.exe,若运行时输入带参数的命令行是:
ex1abcdefg10<
则运行的结果是:
B.17
C.12
D.9
(41)有以下程序
intfa(intx)
{returnx*x;
intfb(intx)
{returnx*x*x;
intf(int(*f1)(),int(*f2)(),intx)
{returnf2(x)-f1(x);
i=f(fa,fb,2);
A.-4
B.1
(42)有以下程序
inta=3;
{ints=0;
{inta=5;
s+=a++;
s+=a++;
printf(“%d\n”,s);
A.8
C.7
D.11
(43)有以下程序
voidss(char*s,chart)
{while(*s)
{if(*s==t)*s=t-‘a’+’A’;
s++;
{charstr1[100]=“abcddfefdbd”,c=’d’;
ss(str1,c);
printf(“%s\n”,str1);
A.ABCDDEFEDBD
B.abcDDfefDbD
C.abcAAfefAbA
D.Abcddfefdbd
(44)有以下程序
structSTU
{charnum[10];
floatscore[3];
};
{structstus[3]={{“20021”,90,95,85},
{“20022”,95,80,75},
{“20023”,100,95,90}},*p=s;
inti;
floatsum=0;
3,i++)
sum=sum+p->
score[i];
printf(“%6.2f\n”,sum);
A.260.00
B.270.00
C.280.00
D.285.00
(45)设有如下定义:
strucksk
{inta;
floatb;
}data;
int*p;
若要使P指向data中的a域,正确的赋值语句是
A.p=&
a;
B.p=data.a;
C.p=&
data.a;
D.*p=data.a;
(46)有以下程序
structNODE
{intnum;
structNODE*next;
{structNODE*p,*Q,*R;
p=(structNODE*)malloc(sizeof(structNODE));
q=(structNODE*)malloc(sizeof(structNODE));
r=(structNODE*)malloc(sizeof(structNODE));
p->
num=10;
q->
num=20;
r->
num=30;
next=q;
q->
next=r;
printf(“%d\n”,p->
num+q->
next->
num);
C.30
D.40
(47)若有以下说明和定义
typedefint*INTEGER;
INTEGERp,*q;
以下叙述正确的是
A.P是int型变量
B.p是基类型为int的指针变量
C.q是基类型为int的指针变量
D.程序中可用INTEGER代替int类型名
(48)有以下程序
{unsignedchara,b,c;
a=0x3;
b=a|0x8;
c=b<
<
1;
printf(“%d%d\n”,b,c);
A.–1112
B.–6–13
C.1224
D.1122
(49)有以下程序
{char*p,*q;
p=(char*)malloc(sizeof(char)*20);
q=p;
scanf(“%s%s”,p,q);
printf(“%s%s\n”,p,q);
若从键盘输入:
abcdef<
,则输出结果是:
A.defdef
B.abcdef
C.abcd
D.dd
(50)以下程序中函数f的功能是将n个字符串按由大到小的顺序进行排序。
voidf(charp[][10],intn)
{chart[20];
for(j=i+1;
j
if(strcmp(p[i],p[j])<
0)
{strcpy(t,p[i]);
strcpy(p[i],p[j]);
strcpy(p[j],t);
{charp[][10]={“abc”,“aabdfg”,“abbd”,“dcdbe”,“cd”};
inti;
f(p,5);
printf(“%d\n”,strlen(p[0]));
A.6
B.4
C.5
D.3
二、填空题(每空2分,共40分)
请将答案分别写在答题卡中序号为【1】至【20】的横线上,答在试卷上不得分。
1、计算机软件分为系统软件和应用软件,操作系统属于[1]。
2、在DOS环境下,代表键盘和显示器的设备文件名为[2]。
3、支持Internet基本服务的协议是[3]。
4、从Windows环境进入MS-DOS方式后,返回Windows环境的DOS命令为[4]。
5、某微型机的运算速度为2MIPS,则该微型机每秒执行[5]条指令。
6、设有定义:
intn,*k=&
n;
以下语句将利用指针变量k读写变量n中的内容,请将语句补充完整。
scanf(“%d,”[6]);
printf(“%d\n”,[7]。
);
7、以下程序运行后的输出结果是[8]。
main()
{intx=10,y=20,t=0;
if(x==y)t=x;
x=y;
y=t;
printf(“%d,%d\n”,x,y);
8、以下程序运行后的输出结果是[9]。
{intx=15;
while(x>
10&
x<
50)
{x++;
if(x/3){x++;
elsecontinue;
printf(“%d\n”,x);
9、有以下程序:
{charc;
while((c=getchar())!
=’?
’)putchar(--c);
程序运行时,如果从键盘输入:
Y?
N?
,则输出结果为[10]。
10、以下程序运行后的输出结果是[11]。
voidfun(intx,inty)
{x=x+y;
y=x-y;
x=x-y;
printf(“%d,%d,”,x,y);
{intx=2,y=3;
fun(x,y);
printf(“%d,%d\n”,x,y);
11、以下函数的功能是计算s=1+++……+,请填空。
doublefun(intn)
{doubles=0.0,fac=1.0;
inti;
for(i=1,i<
=n;
i++)
{fac=fac[12];
s=s+fac;
returns;
12fun函数的功能是:
首先对a所指的N行N列的矩阵,找出各行中的最大的数,再求这N个最大值中的最小的那个数作为函数值返回。
请填空。
#defineN10