一、选择题(每小题1分,共40分)
(1)计算机能直接执行的程序是( )。
A.源程序
B.目标程序
C.汇编程序
D.可执行程序
(2)以下叙述中正确的是( )。
A.c语言规定必须用main作为主函数名,程序将从此开始执行
B.可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行
C.c语言程序将从源程序中第一个函数开始执行、
D.main的各种大小写拼写形式都可以作为主函数名,如MAIN,Main等
(3)以下选项中可用做c程序合法实数的是( )。
A.3.0e0.2
B..1e0
C.E9
D.9.12E
(4)下列定义变量的语句中错误的是( )。
A.int jnt;
B.double int_;
C.char For;
D.float US$;
(5)表达式:(im)((double)9/2)一9%2的值是( )。
A.0
B.3
C.4
D.5
(6)设变量均已正确定义,若要通过
scaIIf(”%d%c%d%c”,&al,&el,&a2,&c2);
语句为变量al和a2赋数值l0和20,为变量cl和c2赋字符x和Y。以下所示的输入形式中正确的是( )。(注:口代表空格字符)
(7)以下选项中不能作为c语言合法常量的是( )。.
A.0.1e+6
B.’cd’.
C.”、a”
D.’\011
(8)if语句的基本形式是:if(表达式)语句,以下关于“表=迭式”值的叙述中正确的是( )。
A.必须是逻辑值
B.必须是整数值
C.必须是正数
D.可以是任意合法的数值
(9)有如下嵌套的if语句:
以下选项中与上述if语句等价的语句是( )。
k=(a
B.B.:((b>C.?b:
c.;B.k=(a
D.k=(a
(10)有以下程序:
程序执行后的输出结果是( )。
A.1
B.2
C.4
D.死循环
(11)有以下程序:
程序运行后的输出结果是( )。
A.Afternoon
B.ftemoon
C.Morning
D.oming
(12)有以下程序,程序中库函数islower(ch)用以判断ch中的字母是否为小写字母:
程序运行后的输出结果是( )。
A.ab cd EFg!
B.Ab Cd EFg!
C.ab cd EFG!
D.aB cD EFG!
(13)有以下程序:
程序运行后的输出结果是( )。
A.0
B.9
C.6
D.8
(14)有以下程序:
程序执行后的输出结果是( )。
A.55.
B.50
C.45
D.60
(15)有以下结构体说明、变量定义和赋值语句:
则以下scanf函数调用语句有错误的是( )。
scanf(”%s”,s[0].name);
B.scanf(”%d”,&s[0].age);
C.scanf(”%c”,&(ps一>sex));
D.scanf(”%d”,ps一>age):
(16)若有以下语句:typedef struct S{int 9;char h;}T;以下叙述中正确的是( )。
A.可用s定义结构体变量
B.可用T定义结构体变量
C.S是struct类型的变量
D.T是struct S类型的变量
程序运行后的输出结果是( )。
A.1002,ZhangDa,1202.0
B.1002,ChangRon9。1202.0
C.1001,ChangRon9,1098.0
D.1001,ZhangDa,1098.0
(18)设有宏定义:
#define IsDIV(k,n)((k%1"1==1)?1:O)且变量m已正确定义并赋值,则宏调用:
IsDIV(m,5)&&IsDIV(m,7)为真时所要表达的是( )。
判断m是否能被5和7整除
B.判断m被5和7整除是否都余l
C.判断m被5或者7整除是否余1
D.判断m是否能被5或者7整除
(19)有以下程序:
程序运行后的输出结果是( )。
A.3
B.1
C.2
D.0
(20)有以下程序:
程序运行后的输出结果是( )。
A.1 2
B.1 4
C.123 4
D.123 456
一、选择题
(1)D【解析】计算机能直接执行的程序是二进制的可执行程序,扩展名为.exe。所以选择D选项。
(2)A【解析】C语言中的主函数只能是main()函数,不能任意指定,所以B选项错误。C语言从主函数main()开始,到主函数main()结束,所以C选项错误。主函数必须写成小写的main,不能混淆大小写,所以D选项错误。
(3)B【解析】A选项中e后面的指数必须为整数,所以错误。C语言规定,E之前必须要有数字,所以c选项错误。E后面必须要有数字,且必须为整数,所以D选项错误。
(4)D【解析】C语言规定,变量命名必须符合标识符的命名规则。D选项中包含了非法字符“$”,所以错误。标识符由字母、数字或下划线组成,且第一个字符必须是大小写英文字母或者下划线,而不能是数字。大写字符与小写字符被认为是两个不同的字符,所以For不是关键字for。
(5)B【解析】先将整型数据9强制转换成doub1e型,然后除以2得到的结果与doub1e型保持一致,即为4.5,然后将4.5强制转换成整型数据4,然后计算9%2的值为1,最后计算4一1的值为3,所以选择B选项。
(6)C【解析】输入数据的格式必须与scanf()的格式控制串完全匹配,如果A、B、c选项中在数字10后面均输入了空格,则会将空格赋给变量c1,而不是把x赋给c1,所以选择C选项。
(7)B【解析】要想表示字符串常量应该用双引号表示,即“cd”,单引号用于表示字符常量,所以B选项中的表示方法错误。
(8)D【解析】if语句中的表达式可以是任意合法的数值,如常量、变量表达式。所以D选项正确。
(9)B【解析】题目中嵌套语句的含义是当a&1t;b且a&1t;c成立,则将a的值赋给k。如果a&1t;b成立而a&1t;c不成立将e的值赋给k。如果a&1t;b不成立而b&1t;c成立,将b的值赋给k。如果如果a&1t;b不成立且b&1t;c也不成立,将c的值赋给k。判断条件表达式只有B选项可以表示这个含义。
(10)A【解析】一一k先自减再使用,所以第一次判断条件即为whi1e(4),条件为真,执行打印k的值k=4—3,结果为1;第二次判断条件即为whi1e(0),条件为假,结束循环,打印回车换行符。所以选择A选项。
(11)A【解析】本题主函数中定义了一个指针数组a,可以将它看成一个以字符指针为元素的一维数组。和一般的一维数组名能赋给同类型指针变量一样,该字符指针数组也可以赋给指向字符指针的指针,所以数组名a可以用做函数fun()的实参。在fun()函数中,++P操作使形参P往后移动一个字符指针的位置,即指针a[1]的位置。故最后通过础nd()函数输出的字符串为“Afternoon”。因此A选项正确。
(12)D【解析】调用缸函数后,实参数组名s1传给形参指针P,P也指向数组s1。m函数的功能是遍历字符数组中的所有字符,如果某一个字符是空格并且前一个字符是小写字母的话,就把前一个字符转换为大写。程序中语句P[i一1]=P[i—1]一ga’+-A‘;即P[i一1]=P[i一1]一32,意思是将P[i一1]中的字符转换为大写。因此D选项正确。
(13)C【解析】主函数中调用f函数,同时将数值3传递给变量x,执行条件不满足条件if(x==0I1X==1);跳过re—turn(3);,直接执行语句Y=X}X—f(x一2);这里f(x一2)为函数的递归调用,再次诃用f函数,此时x=1,判断条件成立,返回3给f(1),Y=3}3—3=6,最后将6返回主函数,并进行输出。因此c选项正确。
(14)D【解析】内部静态变量是始终存在的,当函数被调用退出后,内部静态变量会保存数据,再次调用该函数时,以前调用时的数值仍然保留着。m(a,5)的值是15,再次调用后Ⅲm=15,所以fun(b,4)=45,s=45+15=60。因此D选项正确。
(15)D【解析】本题考查结构体的相关知识,题目中需要输入一个变量,scanf要求参数为指针,而D选项中ps一>age为一个变量,不是指针,所以错误。
(16)B【解析】本题考查typ1edef重新声明一种结构体类型,那么T为结构体类型,而不是结构体变量,所以B选项正确。
(17)B【解析】本题考查结构体变量的引用以及作为函数参数,题目虽然看似复杂,其实比较容易,f函数的参数是结构体变量,然后对参数重新赋值并返回,所以该题目的答案为B选项。
(18)B【解析1本题考查逻辑运算符的相关概念,逻辑与若要为真,那么两边都要为真,即m都能被5和7整除都余1,所以选项B正确。
(19)A【解析】本愿考查位运算符以及相关运算,‘为按位或,&为按位与,部么a'b为3,再与c按位与仍然为3,所以答案为A选项。
(20)D【解析】fprintf()函数向文本文件输出数据,将输出的内容按格式输出翻硬盘的文本文件中。执行两次fprintf后。文件中的内容为。123 456”,所以D选项正确。
2017年计算机二级《C语言》考前试题及答案7.doc