2015年计算机二级考试《C语言》提高练习题五份(5)
1[单选题] 下述程序的输出结果是( )。
A.8B.7C.12D.9
参考答案:B
参考解析:根据判断本题共进行3次for循环,第l次执行for循环,p[1][0]=p[1][0]-1=3;第2次执行for循环,p[1][1]=p[1][1]-1=4;第3次执行for循环,p[l][2]=1,最后输出的是a[0][1]+a[1][1]+a[1][2]=2+4+1=7。
2[单选题] 有以下程序
程序的运行结果是
A.14B.20C.10D.16
参考答案:A
参考解析:*(*(P+m)+k)系统默认为指针指向数组中第[m][k]个元素,因此,在for循环中,n+=*(*(P+m)+k);执行的是将数组x[0][1]和x[1][1]累加后赋值给n,最后进行输出,答案为A选项。
3[单选题] 以下选项中合法的常量是( )
A.999B.2.7eC.OXabD.123E 0.2
参考答案:C
参考解析:A选项中含有非法的空格,所以错误。c语言中十六进制常量以0x开头,所以C正确。实型常量中e的前后必须均有数据,且其后必须为整数,所以B和D错误。
4[单选题]有以下程序
若运行时从键盘上输入OPEN THE DOOR<回车>,程序的输出结果是
A.0PEN THE DOOR
B.oPEN tHE dOOR
C.open the door
D.Open The Door
参考答案:C
参考解析:字符串输入函数gets的功能是从标准输入设备键盘上输入一个字符串。首先使指针变量P指向字符串的首字母,while循环语句中对字符串的每个字符进行fun函数操作。fun函数的功能是,将字符串中的大写字母变小写字母。将处理结果返回主函数,主函数通过putehar()字符输出函数进行输出。因此C选项正确。
5[单选题] 有以下程序
程序的输出结果是
A.0B.1C.9D.10
参考答案:B
参考解析:本题考查宏定义,宏定义只是做个简单的替换。执行SQR(k+m)/SQR(k+m)=k+m*k+m/k+m}k+m=15/2,a/=SQR(k+m)/SQR(k+1TI)的结果为1,选项B正确。
6[简答题]下列给定程序中函数fun()的功能是:用递归算法计算斐波拉契数列中第n项的值。从第l项起,斐波拉契数列为:1,1,2,3,5,8,13,21,…
例如,若给n输入7,则该项的斐波拉契数值为13。
请改正程序中的错误,使它能得出正确结果。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构!
试题程序:
参考解析:
(1)错误:switch(g);
正确:switch(g)
(2)错误:case 1:case2:return 1;
正确:case 1;case 2:return 1;
【解析】此题考查C语言的语法规则,switch(表达式)后不应该带有“;”,case语句常量后应该是“:”。switch语句的一般形式如下:
7[单选题] 有三个关系R、S和T如下:
其中关系T由关系R和s通过某种操作得到,该操作为( )。
A.选择B.投影C.交D.井
参考答案:D
参考解析:关系T中包含了关系R与s中的所有元组,所以进行的是并的运算。
8[单选题] 若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是( )。
A.函数的形参和实参分别占用不同的存储单元
B.形参只是形式上的存在,不占用具体存储单元
C.同名的实参和形参占同一存储单元
D.函数的实参和其对应的形参共占同一存储单元
参考答案:A
参考解析:本题重点考察的是函数的形参和实参。I在定义函数时函数名后面括弧中的变量名称为“形式参数”l(简称形参),在主调函数中调用一个函数时,函数名后面括弧1中的参数(可以是—个表达式)称为“实际参数”(简称实参)。f C语言规定,实参变量对形参变量的数据传递是“值传递”,即单向传递,只由实参传给形参,而不能由形参传回来给实参。在内存中,实参单元与形参单元是不同的单元。因此A选项正确。
9[单选题] 若有定义语句:int a=3,b=2,c=1;以下选项中错误的赋值表达式是( )。
A.a=(b=4)=3;B.a=b=c+1;C.a=(b=4)+c;D.a=1+(b=c=4);
参考答案:A
参考解析:不能将变量或常量赋给一个表达式,所以A选项中(b=4)=3是错误的。
10[单选题]
程序运行后的输出结果是( )。
A.Qian,f,350,Sun,f,350
B.Qiamf,350,Qian,f,350
C.Qian,f,350,Sun,m,370
D.Zha0,m,290,Sun,m,370
参考答案:A
参考解析:c语言函数参数传递大致分为:1、值传递过程中。被调函数的形参作为被调函数的局部变量处理,即在内存的堆栈中开辟空间以存放由主调函数放进来的实参的值,从而成为了实参的一个拷贝。值传递的特点是被调函数对形参的任何操作都是作为局部变量进行,不会影响主调函数的实参变量的值。2、地址传递过程中,被调函数的形参虽然也作为局部变量在堆栈中开辟了内存空间,但是这时存放的是由主调函数放进来的实参变量的地址。被调函数对形参的任何操作都被处理成间接寻址,即通过堆栈中存放的地址访问主调函数中的实参变量。正因为如此,被调函数对形参做的任何操作都影响了主调函数中的实参变量。结构体中nanle是数组,做实参传递,会退化为指针,因此调用f(),b.nanle发生修改,其他的成员,传递的是拷贝,不会被修改。因此输出Sun,f,350。故答案为A选项。