- 相关推荐
2016最新计算机二级笔试题及答案
本文为大家提供的是计算机二级的考试试题,希望能帮助到大家!
1)设a、b和c都是int型变量,且a=3、b=4、c=5,则下面的表达式中,值为0的表达式是_______。
A)‘a’&&‘b’ B)a<=b C)a||+c&&b-c D)!((a
1)D
知识点:几种运算符的使用
评析:选项A:‘a’&&‘b’是字符a与b的相与,故不为0。
选项B:a<=b,由题中变量赋值可知,结果为l。
选项c:a||+c&&b-c,此表达式先做算术运算b-c,结果为一1.而+c属于单目运算符,由于c初值为5,经过单目运算符运算后,还是5,下面再进行逻辑与的运算,即5&&-1结果为1(因为c语言中除O代表假外,其他任一个数都代表真),最后a||l,结果为1。
选项D:!((a
2)设有如下程序
#include
main()
{
int **k,*j,i=100;
j=&i; k=&j;
printf("%d\n",**k);
}
上述程序的输出结果是_______。
A)运行错误 B)100 c)i的地址 D)j的地址
2)B
知识点:指针变量的引用
评析:j=&i,j的值就是i的地蚍,*j=100,将j的地址赋给k,这时*k=j,那么,**k=*j,而*j=100,所以**k=100,最后的打印结果应当为100。
3)设有以下语句,其中不是对a数组元素的正确引用的是:_______(其中0≤i
int a[10]={0,l,2,3,4,5,6,7,8,9,},*p=a;
A)a[p-a] B)*(&a[i]) C)p[i] D)*(*(a+i))
3)D
知识点:通过指针引用数组元素
评析:观察程序可知.a实际上就是数组a的首地址,所以“*(a+i)”表示的就是数组a中的第i个元素的值,进而,我们可以知道*(*(a+i))必然不是对a数组元素的正确引用。
4)有以下程序:
#include
main(){
char c[6];
int i=0:
for(;i<6;c[i]=getchar(),i++);
for(i=0;i<6;i++)putchar(c[i]);
printf("\n");
}
如果从键盘上输入:
ab<回车>
c<回车>
def<回车>
则输出结果为________。
A)a B)a C)ab D)abcdef
b b c
c c d
d d
e
f
4)C
知识点:字符数据的输入、输出
评析:1.getchar()
此函数的作用是从终端(或系统隐含指定的输入设备)输入一个字符。请注意:getchar()只能接受一个字符(回车符也算是一个字符)。getchar函数得到的字符可以赋给一个字符变量或整型变量,也可不赋给任何变量,作为表达式的一部分。
2.putchar()
此函数的作用是向终端输出一个字符,也可以输出控制字符,如回车符•使输出的当前位置移到下一行的开头。
本题在输入字符时,ab和c后面的回车符分别赋给了c[2]和c[4],所以,正确答案为C。
5)下面程序
#include
#include
main()
{ char*p1:"abc",*p2="ABC",str[50]= "xyz";
strcpy(str+2,strcat(p1,p2));
printf("%s\n",str);
}
的输出是_______。
A)xyzabcABC B)zabcABC
C)yzabcABC D)xyabcABC
5)D
知识点:字符串的连接和拷贝
评析:strcat(字符数组l,字符数组2)的作用是连接两个字符数组中的字符串,把字符串2接到字符串l的后面,结果放在字符数组l中,本题中strcat(p1,p2)函数将*pl和*p2指向的两个串连接了起来,将字符串abcABC放到了*pl所指向的存储单元中:而strcpy(字符数组1,字符串2)函数将字符串2复制到字符数组1中去,本题将字符串abcABC复制到了str+2所指向的存储单元中,即将原str数组中的字符z及z向后的所有字符覆盖,所以在打印输出时,str的值已经等于“xyabcABC”。
6)下面程序
int aa[3][3]={{2},{4},{6}};
main()
{ int i,*p=&aa[0][0];
for(i=0;i<2;i++){
if(i==0)aa[i][i+1]=*p+l;
else ++p;
printf("%d",*p);
}
}
的输出是_______。
A)23 B)26 C)33 D)36
6)A
知识点:for循环语句
评析:观察题目,可以发现,*p=&aa[0][O]语句实际是将数组aa的首地址赋给了指针变量p,将i的值带入for循环中,i=0时,aa[0][1]=3,*p=2;*p输出的是指针所指向的数组值,此时p所指向的是aa[0][0],输出2,而i=l时执行了++p操作,使指针向后移动指向了aa[0][l],所以在输出*p时应为3。
7)下面程序
main()
{ int x=100,a=10,b=20,okl=5,ok2=0;
if(a
if(b!=15)
if(!okl)x=1;
else if(ok2)x=10;
X=-1;
Ptintf("%d\n",x);
}
的输出是_______。
A)-1 B)0 C)1 D)不确定的值
7)A
知识点:判断语句的循环嵌套
评析:第一个判断值为真,过渡到下一个判断,第二个判断为真,过渡到第三个判断……如此循环,在打印输出语句的前一行,程序给变量x赋了值,为一l,所以,无论前期如何变化,最后的x值依然为一l。
8)下面程序
main()
{
int x=32:
printf("%d\n",x=x<<1);
}
的输出是_______。
A)100 B)160 C)120 D)64
8)D
知识点:位运算
评析:<<是c语言中规定的左移运算符,例如,a=a<<2,这个语句即是将a的二进制数左移两位,左移一位相当于该数乘以2,左移两位相当于该数乘以2的2次方。所以,x<<1=32*2-64。
9)以下程序的输出结果是________。
#include
#define FUDGE(y) 2.84+y
#define PR(a) printf("%d",(int))(a))
#define PRINT l(a) PR(a);putchar(‘\n’)
main()
{ int x=2;
PRINT l(FUDGE(5)*X);
}
A)1l B)12 C)13 D)15
9)B
知识点:带参数的宏定义
评析:在程序中如果有带实参的宏,则按#define命令行中指定的字符串从左到右进行置换,如果串中包含宏中的形参,则将程序语句中相应的实参代替形参,如果宏定义中的字符串中的字符不是参数字符,则保留,这样就形成了置换的字符串。
根据以上原则,我们将实参带入已经定义的宏中,可以得出答案,最后打印出来的是“12”。
10)以下程序段给数组所有的元素输入数据,请选择正确答案填入:
#include
main()
{
int a[10],i=0;
while(i
:
:
}
A)a+(i++) B)&a[i+l] C]a+i D]&a[++i]
10)A
知识点:格式输入函数scanf()
评析:因为a实际上就是数组a的首地址,而a+x则是数组中第x个元素的地址,所以在四个选项中,选项B和C只能输入一个数据,选项D不能给a[0]输入数据,只有选项A可以完成给数组所有的元素输入数据的任务。
11)字符(char)型数据在微机内存中的存储形式是________。
A)反码 B)补码
C)EBCDIC码 D)ASCII码
11)D
知识点:字符数据在内存中的存储形式
评析:将一个字符常量放到一个字符变量中,实际上并不是把该字符本身放到内存单元中去,而是将该字符的ASCII码值放到存储单元中。
12)下面程序的输出是________。
typedef union
{ long x[2];
int y[4];
char z[8];
}MYTYPE;
MYTYPE them;
main()
{ printf("%d\n",sizeof(them));}
A)32 B)16 C)8 D)24
12)C
知识点:共用体的长度
评析:sizeof(x)是一个标准c函数,它的返回值是x型的数据结构占用的内存字节数。题目中定义了一个共用体,共用体变量在内存中所占的长度等于最长的成员的长度,所以共用体MYTYPE需要8个字节的存储空间,由它定义的变量的长度当然也是8。
13)不能把字符串:“Hello!”赋给数组b的语句是________。
A)char b[10]={‘H’,‘e’,‘l’,‘l’,‘0’,‘!’};
B)char b[10]={‘h’,‘e’,‘l’,‘l’,‘0’,‘!’};
C)char b[10];strcpy(b,"Hello!");
D)char b[10]="Hello!";
13)B
知识点:给数组赋值
评析:在c语言中,大写字母和小写字母被认为是两个不同的字符,因此,“hello!”和“Hello!”是两个不同的字符串。
14)下面程序的输出是________。
main()
{ int x=3,y=6,a=0;
while(x++!=(y—=1))
{ a+=1;
if(y
}
printf("x:%d,y:%d,a=%d\n",x,y,a);
}
A)x=4.v=4,a=1 B)x=5,y=5,a=1
C)x=5,y=4,a=3 D)x=5,y=4,a=l
14)D
知识点:运算符
评析:注意在x++中x值的引用时,这里应当是先引用,后自加,具体执行过程如下:
第一次while循环:x=3与y=5比较,条件为真,执行a=a+1=1;此时,x的值己为4,判断y
第二次while循环:x=4与y=4比较,条件为假,此时x的值已为5,退出while循环,执行printf。
15)下面程序的输出是_______。
main()
{char*s:"12134211";
int vl=0,v2=0,V3=0,v4=0,k;
for(k=0;s[k];k++)
switch(s[k])
{ default:V4++;
case‘1’:vl++:
case‘3’:v3++:
case‘2’:v2++:
}
printf("vl=%d,v2=%d,v3=%d,v4=%d\n",vl,v2,v3,V4);
}
A)vl=4,v2=2,v3=l,v4=1 B)vl=4,V2=9,V3=3,V4=l
C)vl=5,v2=8,v3=6,v4=1 D)vl=8,V2=8,V3=8,v4=8
15)C
知识点:switch()语句
评析:当switch后面括弧内的表达式的值与某一个case后面的常量的表达式的值相等时,就执行此case后面的语句,若所有的case中的常量表达式的值都没有与表达式的值匹配的,就执行default后面的语句。本题中,for循环的条件是s数组的数组元素值,只要将数组的值一一代入程序逐步求解即可。
16)下面程序的输出是_______。
main()
{int k=ll;
printf("k=%d,k=%o,k=%x\n",k,k,k);
}
A)k=11.k=12,k=ll B)k=ll,k=13,k=13
C)k=ll,k=013,k=0xb D)k=ll,k=13,k=B
16)D
知识点:格式字符
评析:在c语言格式字符的输出中,“%d”是以带符号的十进制形式输出整数,即k=ll:“%o”是以8进制无符号形式输出整数(不输出前导符0),即k=13:“%x”是以16进制无符号形式输出整数(不输出前导符0x),即k=B。
17)以下叙述中正确的是_______。
A)c语言比其他语言高级
B)C语言可以不用编译就能被计算机识别执行
c)c语言以接近英语国家的自然语言和数学语言作为语言的表达形式
D)C语言出现的最晚,具有其他语言的一切优点
17)C
知识点:c语言风格
评析:计算机语言分为低级语言、汇编语言和高级语言,c语言属于高级语言,但并不是说c语言比其他语言高级,所以选项A错误;除了低级语言外,其他各种语言都必须编译成能被计算机识别的二进制数才能执行,选项B错误;c语言出现于1972年到1973年问,并不是出现最晚的语言,所以选项D也是错误的。
18)下列可用于c语言用户标识符的一组是_______。
A)void define WORD B)a3_b3 _123 Car
C)For -abc IFCase D)2a D0 sizeof
18)B
知识点:c语言的标识符
评析:c语言规定标识符只能由字母、数字和下划线3种字符组成,且第一个字符必须为字母或下划线,所以排除c和D。c语言还规定标识符不能为c语言的关键字,从而选项A是错误的,因为void为关键字。
19)请选出正确的程序段________。
A)int*p B)int*s,k;
Scanf("%d",p); *s=100;
……
C)int*s,k: D)int*s,k;
Char*p,c; char*p,e;
s=&k; s=&k;
p=&c; p=&c;
*p=‘a’; s=p;
…… *s=l;
……
19)C
知识点:指针变量
评析:本题的A和B犯了一个同样的错误,即指针变量p定义后并没有指向具体的变量。也就是说,p中没有确定的地址值,它的值是不可预见的,所指向的单元也是不可预见的,因此不能进行赋值操作。另外,在选项D中,s是int指针变量,p是char型指针变量,所指向的内存单元所占用的字节数是不同的,因而不能将字符指针变量p的值赋给整型指针变最s。
【最新计算机二级笔试题及答案】相关文章:
计算机二级模拟试题及答案03-22
计算机二级VFP试题及答案10-22
计算机二级《VFP》试题及答案03-11
计算机二级考试《Java》试题及答案03-30
计算机二级考试WEB试题及答案10-22
计算机二级模拟试题含答案10-23
计算机二级考试MySQL试题及答案10-23
计算机二级考试Java试题及答案12-04
计算机二级考试word试题及答案03-19