二级C语言选择题专项强化真题试卷45
选择题
1.有以下程序:
#include<stdio.h>
int f(int x,int y)
{return((y—x)*x);}
main()
{
int a=3,b=4,c=5,d;
d=f(f(a,b),f(a,c));
printf(\\(B)
A. 10
B. 9
C. 8
D. 7
解析:主函数中语句d=f(f(a,b),f(a,c));用函数的返回值做参数,所以首先计算f(a,b),代入a=3,b=4,得3,然后计算f(a,c),代入a=3,c=5得6,所以d=f(f(a,b),f(a,c));,即为计算d=f(3,6),值为9。
2.有以下程序:
#include<stdio.h>
main()
{
int a1,a2;char c1,c2;
scanf(\\(A)
A. 2a_34b<CR>
B. 12_a_34_b<CR>
C. 2_a 34_b<CR>
D. 2_a34_b<CR>
解析:该题可通过程序运行的输出结果判断输入情况。因为seanf()函数输入的形式是只有c1和a2之间有空格,没有别的符号,故运行程序后,输入的时候a1和c1之间、a2和c2之间没有空格,在输入c1后,应先输入一个空格,再输入a2,所以A选项符合题意。
3.以下选项中,能用作数据常量的是( )。(D)
A. 0115
B. 0118
C. 1—5e1.5
D. 115L
解析:C语言中实型常量有两种表示:小数形式和指数形式。在指数形式中,字母e(或E)之前必须要有数字,且e或E后面的指数必须为整数,故C项错;八进制整数常量以数字0开始,而不是0,故A项错。而在八进制数中的有效数字为0~7,故B项错。
4.有以下程序:
#include<stdio.h>
main()
{
int x,y,z;
x=y=1;
z=x++;y++;++y;
printf(\\(C)
A. 2 3 2
B. 2 3 3
C. 2 3 1
D. 2 2 1
解析:考查逗号表达式。逗号表达式的计算过程是分别计算所有表达式的值,并把最后一个表达式的值作为整个逗号表达式的值。x=y=1;将x、y初始化为1,逗号表达式z=x++,y++,++y;中先计算z=x++,得到x=2,z=1,计算y++,得y=2,再计算++y,得y=3。所以最终结果为x=2,y=3,z=1,答案选C。
5.有以下程序:
#include<stdio.h>
main()
{
int y=9;
for(;y>0;y——)
if(y%3==0)
printf(\\(D)
A. 875421
B. 963
C. 741
D. 852
解析:该程序的运行过程是y从9开始自减,每次判定y是否能被3整除,若是,则输出——y后的值,能被3整除的y值分别为9、6、3,所以答案选D。
6.以下关于宏的叙述错误的是( )。(C)
A. 宏替换不具有计算功能
B. 宏是一种预处理指令
C. 宏名必须用大写字母构成
D. 宏替换不占用运行时间
解析:宏名习惯采用大写字母,以便与一般变量区别,但是并没有规定一定要用大写字母。
7.有以下程序:
#include<stdio.h>
int fun(int n)
{int a;
if(n==1)return 1;
a=n+fun(n—1);
return a;
}
main()
{printf(\\(D)
A. 9
B. 14
C. 10
D. 15
解析:考查函数的递归调用。只需要一步一步递归调用函数即可,执行fun(5)=5+(4+(3+(2+fun(1))))=15,故D选项正确。
8.以下选项中可用做C程序合法实数的是( )。(B)
A. 3.0e0.2
B. .1e0
C. E9
D. 9.12E
解析:A选项中e后面的指数必须为整数,所以错误。C语言规定,E之前必须要有数字,所以C选项错误。E后面必须要有数字,且必须为整数,所以D选项错误。
9.以下选项中,与n=i++完全等价的表达式是( )。(A)
A. n=i,i=i+1
B. n+=i+1
C. i=i+1,n=i
D. n=++i
解析:运算符“++”放在变量后面时,表示变量先参与其他操作,再完成加1操作,故表达式n=i++的运算顺序是先将i赋值给n,再将i+1赋值给i,因此答案为A选项。
10.有以下程序:
#include
void fun(int a[],int n,int flag)
{ int i=0,j,t;
for(i=0;i<n一1;i++)
f10T(j=i+1;j<n;j++)
if(flag)
{if(a[i]<a[j])
{t:a[i];a[i]=a[j];a[j]=t;}
}
else
{if(a[i]>a[j])
{t=a[i];a[i]=a[j];a[j]=t;}
}
}
main()
{ int c[10]={7,9,10,8,3,5,1,6,2,4},i;
fun(c,4,1);
fun(c+4,6,0);
for(i=0;i<10;i++)printf(\\(C)
A. 7,8,9,10,6,5,4,3,2,1,
B. 10,9,8,7,6,5,4,3,2,1,
C. 10,9,8,7,1,2,3,4,5,6,
D. 1,2,3,4,5,6,7,8,9,10,
解析:fun()函数的作用是定义了冒泡法排序,flag控制升序(0)或者降序(1),n为参与排序的元素个数,a为数组的起始地址。因此,fun(a,4,1)函数即将数组的前4个数据降序排序,fun(a+4,6,0)函数是对数组的第4项后的6个元素进行升序排序。故结果为10,9,8,7,l,2,3,4,5,6。答案为C选项。
11.以下不能用于实型数据的运算符是( )。(A)
A. %
B. /
本文档预览:3600字符,共9181字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载