网站首页 语言 会计 互联网计算机 医学 学历 职场 文艺体育 范文
当前位置:学识谷 > 计算机 > 计算机二级

2017计算机二级C语言巩固练习

栏目: 计算机二级 / 发布于: / 人气:2.93W

成绩的取得离不开我们平时的努力,以下是本站小编为大家整理的2017计算机二级C语言巩固练习题,希望对大家的学习起到帮助!

2017计算机二级C语言巩固练习

1.下列说法正确的是( )。

A.在C语言中,可以使用动态内存分配技术定义元素个数可变的数组

B.在c语言中,数组元素的个数可以不确定,允许随机变动

C.在C语言中,数组元素的数据类型可以不一致

D.在C语言中,定义一个数组后.就确定了它所容纳的元素的个数

2.表达式“~0x11”的值是( )。

A.0xFFEE

B.0x71

C.0x0071

D.0xFFF1

3.下列程序的输出结果是( )。

main()

{ int p[8]={11,12,13,14,15,16,17,18},i=0,j =0;

while(i++<7)

if(p[i]%2)j+=p[i];

printf("%dn",j);

}

A.42

B.45

C.56

D.60

4.下列程序的输出结果是( )。

#included stdi0.h>

#included string.h>

void fun(int b[])

{ static int i=0;

do

{ b[i]+=b[i+1];

}while(++i<2);

}

main()

{ int k,a[5]={1,3,5,4,9};

fun(a);

for(k=0;k<5;k++)printf("%d",a[k]);

}

A.13579

B.48579

C.48549

D.48999

5.有以下程序:

main()

{ int a=1,b=3,C=5,*P;

int*p1=&a,*p2=&b,*p3=&c;

*p=*p1*(*p2);

}

执行后的输出结果是( )。

A.1

B.2

C.3

D.4

6.有以下程序:

fun(int x)

{ int P;

if(x==0 || x==l)return(3);

p=x-fun(x-2);

return p;

}

main()

{printf("%dn",fun(7));}

程序执行后的输出结果是( )。

A.7

B.3

C.2

D.0

7.下述程序的运行结果是( )。

#included stdio.h>

#included strin9.h>

main()

{ char*s1="abDuj";

char*s2="ABdUG";

int t;

t=strcmp(s1,s2);

printf("%d",t);

}

A.正数

B.负数

C.零

D.不确定的值

8.下列程序中c的二进制值是( )。

char a=2,b=4,c;

c=a^b>>2;

A.00000011

B.00010100

C.00011100

D.00011000

9.函数fseek()的正确调用形式是( )。

k(位移量,起始点,文件类型指针);

k(文件类型指针,位移量,起始点);

k(文件类型指针,起始点,位移量);

k(起始点,位移量,文件类型指针);

10.下列叙述正确的是( )。

A.C语言中的文件是流式文件,因此只能顺序存取数据

B.打开一个已存在的文件并进行了写操作后,原有文件中的全部数据必定被覆盖

C.在一个程序中当对文件进了写操作后,必须先关闭该文件然后再打开,才能读到第1个数据

D.当对文件的读(写)操作完成之后,必须将它关闭,否则可能导致数据丢失

11.为了避免在嵌套的条件语句if else中产生二义性,C语言规定,else子句总是与( )配对。

A.缩排位置相同if

B.其前面最近的if

C.其后面最近的if

D.同一行上的if

12.设有下列程序段:

char str[]="HelloWorld":

char* plr;

ptr=str:

执行上面的程序段后,*(ptr+10)的值为( )。

A.’ ’

B.’0’

C.不确定的值

D.’0’的地址

13.有以下程序:

void swap(char*x,char*y)

{ char t;

t=*x;*x=*y;*y=t;

}

main()

{ char*s1="abe",*s2="123":

swap(s1,s2);

printf("%s,%sn",s1,s2);

}

程序执行后的输出结果是( )。

A.123,abe

.123

C.1bc,a23

D.321,cba

14.下列程序的运行结果是( )。

#include

main()

{ static char a[]="Languagef",b[]="programe":

char*p1,*p2;int k;

p1=a;p2=b;

for(k=0;k<=8;k++)

if(*(p1+k)==*(p2+k))

printf("%c",*(p1+k)):

}

ram

D.有语法错

15.下列程序的运行结果为( )。

#define MAX(x,y)(x)>(y)?(x):(y)

main()

{ int a=2,b=3,C=1,d=3,t:

printf("%dn",(MAX(a+h,c+d))*100):

}

A.500

B.5

C.4

D.400

  参考答案及解析

1.D。【解析】在C语言中,数组元素的个数是确定的,不允许随机变动,数组定义好后,它所能容纳的元素的个数也就确定了,并且同一个数组中所有元素都是同一类型。

2.A。【解析】本题主要考查按位求反运算:十六进制整型常量的形式是以数字Ox开头的十六进制字符串;位求反运算的规则是:将二进制表示的运算对象按位取反,即将1变0,将0变1。

3.B。【解析】C语言中,数组的下标默认为0,因此数组P的下标从0开始,所以p[8]的范围为0~7。第l次循环i=0,执行循环,得出i=1,因此p[i]为p[1]=12,12%2= 0,不执行后面的语句;接着进行第2次循环,此时i=1,小于7执行循环,并且i自加,得i=2,因此p[i]为p[2]=13,13%2=1,执行后面的语句;依此类推最后退出循环。最后j 的值为:j=13+15+17=45。

4.C。【解析】本题考查do-while循环,在fun函数中,首先定义了静态变量i=0,do-while循环要实现的.功能是以b[0]=b[0]+b[1],b[1]=b[1]+b[2],其他元素不变的规则重新给b数组赋值。在主函数中,通过调用fun函数,按上面的规则对数组a重新赋值,最后输出数组a。

5.C。【解析】本题中指针p1、p2、p3指向a、b、c值所存放的地址空间,然后再将指针变量*p1、*p2中值的乘积赋给指针变量*P,即赋给变量c,输出c的值3。

6.C。【解析】在函数funlint x)中,有个if语句判断,如果参数x等于0或1时,返回值,否则进入下面的p=x-fun (x-2)递归函数。当在主函势中调用fun(7)时,其过程为:“fun(7)=7-fun(5)=7-(5一fun(3))=7-(5-(3-fun (1)))=7-(5-(3—3))=7-5=2”,所以最后的输出结果为2。

7.A。【解析】本题考查符符串比较函数和两个字符串比较的原则这两个知识点。

(1)两字符串比较的原则是依次比较两个字符串同一位置的一对字符,若它们的ASCII码值相同,则继续比较下一对字符,若它们的ASCII码值不同,则ASCII码值较大的字符所在的字符串较大;若所有字符相同,则两个字符串相等;若一个字符串全部i个字符与另一个字符串的前i个字符相同,则字符串较长的较大

(2)strcmp(s1,s2)的返回值,当str1str2,返回值为正数。

8.A。【解析】本题主要者查右移运算和按位异或。把b化为二进制数为00000100,右移两位后为00000001,a的二进制为00000010,两者异或为00000011。

9.B。【解析】指针函数fseek()的调用形式为:fseek (fp,offset,position);fseek函数参数说明:“fp”是指向该文件的文件型指针;“offset”为位移量,是指从起始点position 到要确定的新位置的字节数。以起点为基准,向前移动字节数。“position”为起始点,指出以文件的什么位置为基准进行移动,position的值用整型常数表示,“0”表示文件的开头,“1”表示文件的当前位置,“2”表示文件的末尾。

10.D。【解析】在C语言巾,文件的存取方式有两种:顺序存取和直接存取。如果以“a”的方式对已打开的文件进

行写操作后,则原文件中内容将保存,新的数据写在原有内容之后。如果以“a+”的方式勾读和写操作而打开文件,则可以对文件进行读写,而且在读和写操作之间不必关闭文件,可以从头开始读。当对文件的读(写)操作完成之后,必须将它关闭。

11.B。【解析】C语言规定,在if…else语句中,else总是与它前面的最近的if配对。

12.A。【解析】本题主要考查字符数组和指针,在c语言中,字符型数组在存放字符串时会自动在末尾加上’ ’,所以数组str有11个元素;ptr指向数组str的首地址,ptr+ 10是指向str[10],*(ptr+10)是引用str[10]的值。

13.C。【解析】本题考查swap函数,它的作用是把x、Y 所指的内容互换,其他的不变,因此当执行完调用函数后,仅仅’a’与’1’互换,其他的没有变。

14.A。【解析】本题考查指针用法,if语句的功能是判断两个数组中的字符是否相同,如果相同则输出。

15.A。【解析】本题考查带参数宏的定义,运算符:(x) >(y)?(x):(y)当表达式为真时输出X,否则输出Y,调用(MAX(a+b,c+d))*100时,(a+b=5)>(c+d=4),输出a+b=5,所以x=5*100。