全国高校计算机等级考试二级C.docx
《全国高校计算机等级考试二级C.docx》由会员分享,可在线阅读,更多相关《全国高校计算机等级考试二级C.docx(66页珍藏版)》请在冰豆网上搜索。
全国高校计算机等级考试二级C
全国高校计算机等级考试
1、设有语句:
intk,*p;以下能正确执行的赋值语句是(D)。
A、k=pB、k=&pC、P=KD、p=&k
2、以下运算符中优先级最高的运算符是(A)。
A、!
B、&&C、||D、<
3、求字符串长度的函数是(D)。
A、strcatB、strcpyC、strcmpD、strlen
4、下面程序段的运行结果是(A)。
charx[5]=“ab\0c\0”;
printf("%s",x);
说明:
“\0”中的“0”是数字零。
A、abB、abcC、ab\0D、ab\0c\0
5、若有说明语句:
inta[2][4];则对数组a元素的正确引用是(D)。
A、a[2]B、a[4]C、a[2][4]D、a[1][3]
6、C语言允许函数值类型缺省定义,此时该函数值隐含的类型是(B)。
A、float型B、int型C、long型D、double型
7、用数组名作为函数调用的实参时,传递给虚参的是(A)。
A、数组的首地址B、数组第一个元素的值C、数组中全部元素的值D、数组元素的个数
8、以下程序的输出结果是(D)。
#include
#defineF(y)8-y
voidmain(void)
{
intx,y;
y=F
(2);
printf(“y=%d”,y);
}
A、2B、y=2C、6D、y=6
9、以下程序的输出结果是(A)。
#include
struct
{
intx,y;
}a;
voidmain(void)
{
intx,y=50,z;
a.x=10;
a.y=20;
z=a.x+y;
printf(“%d”,z);
}
A、60B、10C、0D、20
10、语句fopen(“file.dat”,”r”);的功能是(A)。
A、按照“读”方式打开文件B、按照“写”方式打开文件
C、按照“读写”方式打开文件D、按照“追加”方式打开文件
11、关闭文件的语句是(D)。
A、freadB、fwriteC、fprintfD、fclose
12、下面求余数的运算符是(C)。
A、/B、^C、%D、~
13、下面对字符数组的描述中错误的描述是(C)。
A、字符数组可以存放字符串B、字符数组的字符可以整体输入、输出
C、可以在赋值语句中通过赋值运算符"="对字符数组整体赋值
D、可以用关系运算符对字符数组中的字符进行比较
14、下面正确的字符常量是(C)。
A、300B、'ab'C、'!
'D、"a"
15、下面关于main函数与其它子函数之间的位置关系的叙述中正确的是(C)。
A、main函数必须是程序中的第一个函数
B、main函数如果程序中有多个函数,则不能位于最前面
C、main函数可以在任何位置
D、main函数必须是程序中最后一个函数
16、设floatx=12.8,y=8.6;则(int)(x+y)的结果为(B)。
A、20B、21C、21.4D、22
17、一个C程序的执行是从(A)。
A、本程序的main函数开始,到main函数结束
B、本程序的第一个函数开始,到本程序的最后一个函数结束
C、本程序的main函数开始,到本程序的最后一个函数结束
D、本程序的第一个函数开始,到本程序main函数结束
18、以下关于函数的实参与虚参(又称形参)的叙述中不正确的说法是(B)。
A、实参可以是常量、变量或表达式B、虚参可以是常量、变量或表达式
C、虚参应与其对应的实参类型应当尽量一致
D、虚参为指针时,与其对应的实参只能是表示地址的表达式
19、下面关于注释语句的叙述中正确的叙述是(C)。
A、注释语句必须单独占用一行B、注释语句必须在语句行的末尾
C、注释语句可以跨行使用D、注释语句不能单独占用一行
20、以下表达式不等价的一组是(A)。
A、a!
=b与a=a!
bB、a|=b与a=a|bC、a+=b与a=a+bD、a-=b与a=a-b
21、若有以下类型说明语句:
chara;intb;floatc;doubled;则表达式a*b+d-c的运算结果的类型为(D)。
A、floatB、charC、intD、double
22、设C语言中,unsignedint型数据的取值范围为(A)。
A、0~65535B、0~32767C、1~65535D、1~32767
23、在任何时候,都能正确计算两个数之差的宏定义是(D)。
A、#defineSUB(x,y)(x-y)B、#defineSUB(x,y)(x)-(y)
C、#defineSUB(x,y)x-yD、#defineSUB(x,y)((x)-(y))
24、以下不正确的说法为(C)。
A、在不同函数中可以使用相同名字的变量B、虚参视同函数的局部变量
C、在函数内的复合语句中定义的变量在本函数范围内有效
D、在函数内定义的变量只在本函数范围内有效
25、!
E等价于(B)。
A、E!
=0B、E==0C、E!
=1D、E==1
26、字符串比较大小的函数是(C)。
A、strcpyB、strlenC、strcmpD、strcat
27、若有说明语句:
inta[][4]={1,2,3,4,5,6};,则数组的行数为(C)行。
A、6B、4C、2D、1.5
28、C语言规定,函数返回值的类型由(B)。
A、return语句中的表达式类型所决定B、在定义该函数时函数头所指定的函数类型所决定
C、调用该函数时的主调函数类型所决定D、调用函数时由系统临时决定
29、非指针型变量做实参时,它和对应虚参之间的数据传递方式是(B)。
A、地址传递B、单向值传递C、双向值传递D、由用户指定传递方式
*30、建立子函数的主要目的之一是(B)。
A、提高程序的执行效B、提高程序的可读性
C、减少程序所占磁盘空间D、减少程序所占内存空间
二、填空题
31、下面程序段用来打印出正整数n以内能被3整除的所有正奇数。
scanf("%d",&n);
if(n<0)n=-n;
for(i=1;iif(i%2!
=0&&i%3(==0))printf("%d",(i));
32、下面程序的功能是输出数组中相邻两个数的和能被10整除的所有“数对”以及“数对”的个数。
如:
对于下面的数组:
d[]={1,3,7,23,3,6,14,8,10}
将输出:
(3,7)(7,23)(6,14)3对
#include
voidmain(void)
{
intd[]={1,3,7,23,3,6,14,8,10,57,13,90};
inti,count,s
count=(0);/*count为“数对”的个数计数器*/
for(i=0;i<11;i++)
{
s=d[i]+(d[i+1]);/*计算相邻两个数的和*/
if(s%10==0)
{
printf(“(%d,%d)”,d[i],d[i+1]);
count=count+
(1);
}
}
printf(“%d对”,count);
33、下面程序的功能是将字符串s中所有的字符c删除。
#include
voidmain(void)
{
chars[80];
inti,j;
gets((s));/*输入字符串*/
j=(0);/*计数器初始化*/
for(i=0;s[i]!
='\0';i++)
if(s[i]!
='c')
{
s[j]=s[i]
j++;
}
s[j]=’\0’;/*写入字符串结束标志*/
puts(s);
34、下面程序的功能是从键盘输入的最多10个整数中,找出第一个能被7整除的数。
若找到,打印此数后
退出循环;若未找到,打印"notexist"。
#include
voidmain(void)
{
inti,a;
for(i=1;i<11;i++)
{
scanf("%d",(&a));/*输入一个整数*/
if(a%7==0)
{
printf("%d",a);
(break);/*退出循环*/
}
}
if((i)==11)printf("notexist\n");
}
35、以下程序的运行结果是:
(150)
#include
voidmain(void)
{
inti,s,d[10]={21,33,45,7,3,113,67,75,83,26};
s=0;
for(i=0;i<10;i+=2)
if(d[i]%3!
=0)s+=d[i];
printf("s=%d",s);
}
36、以下程序的运行结果是:
(5)
#include
#definesub(x,y)x-y
voidmain(void)
{
intx,y,z;
x=4;
y=3;
z=12-sub(x,y)
printf("z=%d",z);
}
37、以下程序的运行结果是:
(100)
#include
voidmain(void)
{
intx,*p;
p=&x;
*p=100;
printf("x=%d",x);
}
38、相同类型的数据之集合称为(数组)。
说明:
填写两个汉字。
39、字符串“abc\n”的长度是(4)。
说明:
填写一个阿拉伯数字。
40、若有定义:
inta[3][2]={2,4,6,8,10,12};,则*(a[1]+1)的值是(8)。
41、二进制运算表达式:
!
(10001101)的二进制值是(0)。
42、为了方便阅读程序,每行最好只书写(1)个语句。
说明:
填写一个阿拉伯数字。
43、与if语句配对构成双分支结构的关键字是(else)。
说明:
填写4个小写英文字母。
44、变量名的第一个字符必须是(字母)或下划线。
说明:
填写两个汉字。
45、字符常量要用(单)引号括起来。
说明:
填写一个汉字。
46、若有inta=6,x=5;则执行x+=a;后x的值为(11)。
47、表示另一个同类型变量之地址的变量称为(指针)变量。
说明:
填写两个汉字。
三、判断题(A、正确B、错误)
48、&&的优先级低于||的优先级。
B
49、若有定义intx,y;则执行x=2/4*2和y=2/4.0*2后x和y的值相同。
B
50、指针变量也应当遵循“先赋值后使用”的原则。
A
51、运算符“*”有时是单目运算符,有时又可能是双目运算符。
A
52、文件打开方式中的加号(如:
“r+”)表示按照追加方式打开文件。
B
53、C语言中,变量名中的英文字母一般不区分大小写。
B
54、逻辑表达式的值是一个非负整数。
A
55、break语句也能够结束由if……goto构成的循环。
B
56、联合(又称共用体)中各个元素的类型可以不相同。
A
57、结构变量所占内存字节数等于其各个成员所占内存字节数的和。
A
四、编程题
58、编写代码:
计算1至50中能被7整除的所有自然数的和。
将代码以cfile.cpp为名保存在C:
\ata\Temp\420201\454220040690\dit\GAE\ziti目录中。
#include
voidmain()
{
inti,s=0;
for(i=7;i<=50;i++)
if(i%7==0)s=s+i;
printf(“%d\n”,s);
}
59、编写代码:
从键盘中输入三个整数a,b,x,判断x是否等于a,b之和。
将代码以cfile.cpp为名保存在C:
\ata\Temp\420201\454220040690\dit\GAE\ziti目录中。
#include
voidmain()
{inta,b,x;
printf(“pleaseinputtwonumbera,b,x:
”);
scanf(“%d,%d,%d”,&a,&b,&x);
if(x==a+b)
printf(“\n%d+%dis%d”,a,b,x);
else
printf(“\n%d+%disnot%d”,a,b,x);
}
全国高校计算机等级考试
一、选择题
1、以下程序有语法性错误,有关错误原因的正确说法是( C )。
voidmain(void)
{
intS,k;
voidprt_char();
k=prt_char(G);
}
A、语句voidprt_char();有错,它是函数调用语句,不能用void说明。
B、变量名不能使用大写字母。
C、函数原型说明和函数调用语句之间有矛盾。
D、函数名不能使用下划线。
2、函数值作单向传递时以下正确的说法是( A )。
A、实参和与其对应的形参各占用独立的存储单元。
B、实参和与其对应的形参共用一个存储单元。
C、只有当实参和与其对应的形参同名时才共用存储单元。
D、形参是虚拟的,不占用存储单元。
3、若有宏定义#defineZ(x,y)x*y,则执行以下程序段后,z的值为( B )。
intz;
z=Z(3+5,4);
A、32B、23C、17D、20
4、若有宏定义如下:
#defineX5
#defineYX+1
#defineZY*X/2
则执行以下printf语句后,输出的结果为( D )。
inta;
a=Y;
printf("%d,",Z);
printf("%d\n",--a);
A、7,6B、12,6C、12,5D、7,5
5、执行以下程序后,m的值是( D )。
#defineMIN(x,y)(x)<(y)?
(x):
(y)
voidmain(void))
{
inti=12,j=8,m;
m=10*MIN(i,j);
printf("%d\n",m);
}
A、120B、80C、12D、8
6、下面判断正确的是( C )。
A、char*a="china";等价于char*a;*a="china";
B、charstr[10]={"china"};等价于charstr[10];str[]={"china"};
C、char*s="china";等价于char*s;s="china";
D、charc[4]="abc",d[4]="abc";等价于charc[4]=d[4]="abc";
7、以下对指针变量的操作中,不正确的是(C D )。
A、inta,*p,*q;p=q=&a;B、inta=6,*p,*q=&a;p=q;
C、inta,b=6,*p;p=&a;b=*p;D、inta,*p,*q;q=&a;p=*q;
8、以下运算正确的程序段是( D )。
A、charstr1[]="12345",str2[]="abcdef";strcpy(str1,str2);
B、charstr[10],*st="abcde";strcat(str,st);
C、char*st1="12345",*st2="abcde"";strcat(st1,st2)
D、charstr[10]="",*st="abcde";strcat(str,st);
9、以下程序的运行结果是( C )。
#include"stdio.h"
voidmain(void)
{
structdate
{
inty,m,d;
}today;
printf("%d\n",sizeof(structdate));
}
A、2B、3C、6D、出错
10、当说明一个共用体变量时系统分配给它的内存是( C )。
A、共用体中第一个成员所需内存量B、共用体中最后一个成员所需内存量
C、共用体成员中占内存量最大者所需的容量D、共用体中各成员所需内存量的总和
11、设有以下结构体类型数组的定义,且数组mini的10个元素都已赋值,若要将这些元素写到文件fp中,以下不正确的形式是( B )。
^structabc^{^inta;charb;floatc[4];^}^mini[10];(^表示换行)
A、fwrite(mini,10*sizeof(structabc),1,fp);B、fwrite(mini,5*sizeof(structabc),5,fp);
C、for(i=0;i<10;i++)^fwrite(mini,sizeof(structabc),1,fp);D、fwrite(mini,sizeof(structabc),10,fp);
*12、函数fgets(string,m,fp)的作用是( D )。
A、从fp所指向的文件中读取长度不超过m的字符串,存入由指针string指向的内存区域
B、从fp所指向的文件中读取长度为m的字符串,存入由指针string指向的内存区域
C、从fp所指向的文件中读取m个字符串,存入由指针string指向的内存区域
D、从fp所指向的文件中读取长度不超过m-1的字符串,存入由指针string指向的内存区域
13、一个C语言程序是由( B )。
A、一个主程序和若干子程序组成B、若干函数组成C、若干过程组成D若干子程序组成
14、下面四个选项中,均是合法整型常量的选项是( A )。
A、160-0xff011B、-0xcdf01a0xeC、-01986,0120668D、-0x48a2e50x
15、已知各变量的类型说明如下:
inti=8,k,a,b;
unsignedlongw=5;
doublex=1.42,y=5.2;
则以下符合C语言语法的表达式是( A )。
A、a+=a-=(b=4)*(a=3);B、a=a*3=2;C、x%(-3);D、y=float(i);
16、下面不正确的字符常量是( D )。
A、'\X17'B、'\70'C、'\\'D、"\n"
17、以下能正确定义整型变量x,y和z并为其赋初值5的语句是( C )。
A、intx=y=z=5;B、intx,y,z=5;C、intx=5,y=5,z=5;D、x=y=z=5;
18、以下C程序正确的运行结果是( C )。
(注:
_表示空格)
voidmain(void)
{
longy=-43456;
printf("y=%-8ld\n",y);
printf("y=%-08ld\n",y);
printf("y=%08ld\n",y);
printf("y=%+8ld\n",y);
}
A、y=_-43456^y=-_43456^y=-0043456^y=-43456
B、y=-43456^y=-43456^y=-0043456^y=+_-43456
C、y=-43456^y=-43456^y=-0043456^y=__-43456
D、y=_-43456^y=-0043456^y=00043456^y=+43456
19、根据题目中给出的数据的输入和输出形式,程序中输入输出语句的正确内容是( B )。
voidmain(void)
{
intx;floaty;
printf("enterx,y:
")
输入语句
输出语句
}
输入形式enterx,y:
23.4
输出形式x+y=5.40
A、scanf("%d,%f",&x,&y);printf("\nx+y=%4.2f",x+y);
B、scanf("%d%f",&x,&y);printf("\nx+y=%4.2f",x+y);
C、scanf("%d%f",&x,&y);printf("\nx+y=%6.1f",x+y);
D、scanf("%d%3.1f",&x,&y);printf("\nx+y=%4.2f",x+y);
20、若有以下变量说明和数据的输入方式,则正确的输入语句为( B )。
(注:
'_'代表空格)
变量说明:
floatx1,x2;
数据的输入方式:
4.25<回车>
3.5<回车>
A、scanf("%f,%f",&x1,&x2);B、scanf("%f%f",&x1,&x2);
C、scanf("%3.2f%2.1f",&x1,&x2);D、scanf("%3.2f%2.1f",&x1,&x2);
21、以下程序的输出结果是( B )。
voidmain(void)
{
intx=2,y=-1,z=2;
if(xif(y<0)z=0;
elsez+=1;
printf("%d\n",z)
}
A、3B、2C、1D、0
22、设有说明语句intx,a,b,c;则以下不合法的if语句是。
(C)
A、if(a==b)x++;B、if(a<=b)x++;C、if(a<>b)x++;D、if(a>=b)x++;
23、语句while(!
y);中的表达式!
y等价于( A )。
A、y==0B、y!
=1C、y!
=0D、y==1
24、下面程序段的运行结果是( A )。
inta=1,b=2,c=2,t;
while(a
printf("%d,%d,%d",a,b,c);
A、1,2,0B、2,1,0C、1,2,1D、2,1,1
25、若有如下语句
intx=3;
do
{
printf("%d\n",x-=2);
}
while(!
(--x));
则上面程序段( B )。
A、输出的是1B、输出的是1和-2C、输出的是3和0D、是死循环
26、有一堆零件(100到200之间),如果分成4个零件一组的若干组,则多2个零件;若分成7个零件一组,则多3个零件;若分成9个零件一组,则多5个零件。
下面程序是求这堆零件总数,请选择填空。
#include
voidmain(void)
{
inti;