2015年计算机二级《C语言》最新章练习题
C.Qian,f,350,Qian,f,350
D.Qian,m,290,Qian,f,350
参考答案:D
参考解析:本题中考查结构体中变量的引用,a结构体中Flame被修改为Qian,所以本题答案为D。
2以下叙述中正确的是
A.如果函数带有参数,就不能调用自己
B.所有函数均不能接受函数名作为实参传入
C.函数体中的语句不能出现对自己的调用
D.函数名代表该函数的入口地址
参考答案:B
参考解析:本题考查函数调用相关知识,B选项中函数可以接受函数名作为实参传人,引用函数名也是指针,C、A选项是错误的,因为递归函数就能调用自己。
3若有以下程序
A.6B.18C.10D.24
参考答案:D
参考解析:第一次h循环。n的值为0,所以从default后面的语句开始执行,s+=4,s+=1,s+=2,s+=3,s的值为10。在进入第二次for循环,n的值为1,所以执行s+=1,s+=2,s+=3,s的值为16。在进入第三次for循环,n的值为2,所以执行s+=2,s+=3,s的值为21。在进入第四次for循环,n的值为3,所以执行s+=3,s的值为24。
4若有以下程序
A.1,14,3B.0,14,3C.0,18,3D.0,14,6
参考答案:B
参考解析:本循环的条件判断时只要a为0就退出循环体,初始值a的值为6,满足条件执行完循环体,b的值为6,a-=++C即a=a-(++C),所以a的值为5,c的值为1。第二次循环后b的值为11,a的值为3,c的值为2。第三次也是最后循环后,a的值为0,b的值l4,c的值为3。
5有以下程序
程序运行后的输出结果是
A.108B.68C.99D.60
参考答案:D
参考解析:该题首先给二维数组赋值a[3][4]={{1,3,5,7}{9,11,13,15}{17,19,21,23}};(*P)[4]=a指针P指向二维数组a的首地址,接下来执行for循环,首先i=0,j=0时k=k+*(}(P+O)+0)=1(a[O][0]);然后i_0,j=1时k=k+}(}(P+0)+1)=4(a[0][1]);然后j=2时,跳出j的循环,执行i的循环i=1,j=0时k=k+*(*(P+1)+O)=13(a[1][0]);依次类推一直到i-3时跳出全部循环。循环语句在这里的功能是累加二维数组第1列和第2列的元素,累加结果为60。
6若有以下程序
A.5,6,0B.6,0,0C.6。6,1D.5,6,1
参考答案:C
参考解析:本题重点考查C语言中for语句和逻辑表达式,for语句的一般形式为:for(表达式1;表达式2;表达式3)语句其循环中的“表达式1(循环变量赋初值)”、“表达式2(循环条件)”和“表达式3(循环变量增量)”都是选择项,即可以缺省,但“;”不能缺省。该题目中省了“表达式1(循环变量赋初值)”和“表达式3(循环变量增量)”。for(;a&&(b==0);){b+=a s a-=e++;}相当于while(a&&(b==0)){b+=a;a-=c++;}。因此c选项正确。
7有以下程序
程序运行后输出结果是
A.0,2B.0,3C.1,3D.1,2
参考答案:D
参考解析:本题重点考查while语句,变量a和b分别赋初值为-2和1,while语句的语义是:计算表达式的值,当值为真(非O)时,执行循环体语句。a++即a参与运算后,a的值再自增1。++b即b自增1后再参与其它运算。当表达式的值为0时,退出循环,最后输出a和b的值为1和2。因此D选项正确。
8以下关于宏的叙述错误的是
A.宏名必须用大写字母构成
B.宏替换具有计算功能
C.宏替换不具有计算功能
D.宏替换不占用运行时间
参考答案:A
参考解析:宏名习惯采用大写字母,以便与一般变量区别,但是并没有规定一定要用大写字母,因此,答案为A选项。
9以下叙述中正确的是
A.两个字符串可以用关系运算符进行大小比较
B.函数调用strlen(s);会返回字符串S实际占用内存的大小(以字节为单位)
C.C语言本身没有提供对字符串进行整体操作的运算符
D.当拼接两个字符串时,结果字符串占用的内存空间是两个原串占用空间的和
参考答案:C
参考解析:本题考查字符串处理函数strien、strcat、strcmp。B选项中strlen返回的是字符串s实际占用内存大小加上结尾符,A选项中不能用关系运算符进行大小比较,可以使用strcmp。D选项当使用连接函数strcat时,内存空间会减少一个字符位置。
10有以下程序
程序运行后的输出结果是
A.#N#B.#F#C.MMMD.MO#
参考答案:A
参考解析:for语句中把array数组首地址值赋给ptr,ptr++表示每次执行完循环体后,ptr指向下一数组元素,当指针指向值为0时,输出#,否则´M´再加上指针对应数组值进行输出,当* ptr=1时,´M´+l=´N´,结果输出为#N#,答案为A选项。
11有以下程序
程序的输出结果是
A.10B.9C.8D.7
参考答案:B
参考解析:首先注意for循环的控制条件,当b>=20或者a>100则跳出for循环,也即b<20且a<=100时执行for循环;第一次进入循环a=1,b=1均满足循环条件,但b%3==1条件满足,故执行b=b+3,得到b=4,注意有continue,所以后面语句不执行,直接跳转到a++这个语句,所以第一次循环完之后a=2,b=4;进入第二轮循环,b%3==1也是满足的,故再次b=b+3,此轮循环执行之后a=3,b=7,进入下一轮。此后和前面循环同理,都是b%3==1满足,因为每次都是加3,而之后又去模3,且都跳过for后面语句直接执行a++,所以,一直循环到b=22跳出for循环。此时a为8。综合起来就是,每次循环b增加3,a增加1,且当b>22时跳出循环。结束程序。所以b从1增加到22,有(22-1)/3=7,所以a=1+7=8.因此B选项。
12下列关系表达式中,结果为。假”的是
A.3<=4B.(3<4)==1C.(3+4)>6D.(3 !=4)>2
参考答案:D
参考解析:B选项中。关系表达式(3<4)==1即1==1,结果为真;C选项中,(3+4)>6即7>6,结果为真;A选项中,3<=4结果为真。D选项中,(3 !=4)>2即1>2,结果为假。因此D选项正确。
13有以下程序
程序运行后的输出结果是
A.5 6 1 2B.3 4 5 6C.1 2 5 6D.5 6 3 4
参考答案:D
参考解析:funl函数中的a、b为局部变量,fun2函数中的a.b为全局变量。执行funl函数后输出5,6;执行完fun2后a变为3,b变为4,所以结果为3,4。D选项正确。
14若有以下程序
执行时若输入:
Fig flower is red.<回车>
则输出结果是
A.Fig flower is red.is blue.
B.Fig flower is red.
C.Fig floweris red.
D.Fig floweris
参考答案:B
参考解析:本题考查字符数组的赋值以及字符串的处理函数,本题中输入字符串Fig flower is red时,首先是将前10个字符赋值给字符数组a,然后执行gets(B.后,将后续字符存放到b中,当输出时,首先输出字符数组a,然后输出字符串b,所以结果为B选项。
15有以下程序
程序运行后的输出结果是
A.wowB.fwoC.twoD.fix
参考答案:B
参考解析:考查二维数组元素的引用。当i为0时,代码处理结果为第一个字符串的第一个字符与第四个字符串的第一个字符调换,当i为1时,代码处理结果为第而个字符串的第一个字符与第五个字符串的第一个字符调换,所以a[1]为fwo。