国家二级C语言机试(C语言程序设计)模拟试卷32
选择题
1.以下是if语句的基本形式:
if(表达式)语句
其中“表达式”(D)
A. 必须是逻辑表达式
B. 必须是关系表达式
C. 必须是逻辑表达或关系表达
D. 可以是任意合法的表达式
解析:本题考查if语句,C语言中if语句中的表达式可以是任意合法的表达式。
2.有以下程序
main(){int a=0,b=0,c=0,d=0;
if(a=1)b=1;
c=2;
else d=3;
printf(\\(C)
A. 0,0,0,3
B. 1,1,2,0
C. 编译有错
D. 0,1,2,0
解析:if语句的格式为;
ifr表达式)语句1
else 语句2
if和else是C语言的关键字。“语句1”称为if子句,“语句2”称为else子句,这些子句只允许为一条语句,若需要多条语句时,则应该使用复合语句。因此题目“if(a=1)b=1;c=2;else d=3;”,if分支有两条语句,没构成复合语句。
3.有以下程序
main(){int x=1,y=0;
if(!x)y++;
else if(x~0)
if(x)y+=2;
else y+=3;
printf(”%d\11”,y);}
程序运行后的输出结果是(B)
A. 2
B. 0
C. 1
D. 3
解析:x=l,if和else if的条件都不满足,故y值不改变输出。
4.若变量已正确定义,在if(W)pfintf(”%d\11”,k);中,以下不可替代W的是(C)
A. ch=getchar(1
B. a–b+c
C. ab+c
D. a++
解析:在if()语句的括号是一个合法的C语言表达式即可,如果表达式的值为0,则不执行if语句,否则执行if语句,而在选项C中,符号不是C语言的合法运算符,如果要表达a大于或小于b+c可用a!b+c或(a>b+c)‖(a<b+c)来表达,而不能使用ab+c。所以它不是一个合法的C语言表达式。
5.有以下程序段
int a,b,c;
a=10;b=50;c=30;
if(a>b)a=b,b=c;c=a;
printf(\\(C)
A. a=10 b=50 c=30
B. a=10 b=30 c=10
C. a=10 b=50 c=10
D. a=50 b=30 c=50
解析:本题的程序段首先定义三个整型变量a,b,c,并且其初始值分别等于10.50,30,然后判断a>b是否成立,如果条件成立,则把b的值赋给a,把c的值赋给b。由a和b的初始值可知,此条件表达式不成立,所以a和b的值保持不变。再执行下一条语句,把a的值赋给c,所以c的当前值等于10,最后由输出语句输出变量a,b,c的当前值,分别为10,50,10。
6.设有定义: int a=1,b=2,c=3;以下语句中执行效果与其它三个不同的是
A
解析:在C语言中,用分号表示一条语句的结束,用{}把几条语句放在一块表示一个语句块,其整体表示一个功能。因而在题目给出的四个选项中,选项B、C)、D)表示的功能相同,而选项A表示的是一条if语句,两条赋值语句。
7.if语句的基本形式是:if(表达式)语句,以下关于“表达式”值的叙述中正确的是
C
解析:在if语句中,表达式可以是任意合法的数值。当其值为非零时,执行if语句,为0时执行else语句。
8.有如下嵌套的if语句if(a<b)
if(a<c)k=a:
else k=c;
else
if(b<c)k=b;
else k=c;
以下选项中与上述if语句等价的语句是(D)
A. k=(a<b)?((bc)?b:c);
B. k=(a<c)?b:c;
C. k=(a<c)?a:c;
D. k=(a<b)?((a<c)?a:c):((b<c)?b:c);
解析:嵌套的if else语句的含义是,在变量a的值小于变量b的值,同时,变量a的值小于变量c的值时,把变量a的值赋给变量k。在变量a的值小于变量b的值,同时,变量a的值大于等于变量c的值时,把变量c的值赋给变量k。在变量a的值大于等于变量b的值,同时,变量b的值小于变量c的值时,把变量b的值赋给变量k。在变量a的值大于等于变量b的值,同时,变量b的值大于等于变量c的值时,把变量c的值赋给变量k。
9.有以下计算公式
(A)
A. y=sqrt(x);if(x<0)y=sqrt(-x);
B. if(x>=0)y=sqrt(x);else y=sqrt(-x);
C. if(x>=0)y=sqrt(x);if(x<0)y=sqrt(-x);
D. y=sqrt(x>=07x:-x);
解析:由题意可知计算公式的含义是:当x大于等于0时,y值等于x的算术平方根;当x小于0时,y值等于x的相反数的算术平方根。所以选项B用一个完整的if else语句表达了计算公式的含义:选项C用两个if语句表达了计算公式的含义;选项D在求平方根函数的后面用x≥0?x:-x条件表达式来表达了计算公式的含义。选项A没有用C语言语句正确的表达计算公式的含义。
10.有以下程序#include main(){int x;scanf(\\(D)
A. 不等于10的整数
B. 大于3或等于10的整数
C. 小于3的整数
D. 大于3且不等10的整数
解析:题目中,虽然else和第二个if不在同一行上,但等价于在同一行上,因此,程序的意思是当x大于3且不等于10时打印出来。
11.有以下程序
main(){int a=1,b=2,c=3,d=0;
if(a==1&&b++=2)
if(b!=2‖c-!=3)
printf(\\(C)
A. 1,3,2
B. 1,2,3
C. 1,3,3
D. 3,2,1
解析:a,b,c,d初始值分别为1,2,3,0。嵌套的if语句中,第一个if中,表达式a==1&&b++==2值为1,执行嵌套的if分支,此时“b=3,b!=2”成立,由于运算符是‖,不管后面一个表达式的值是不是1,其整个表达式的值总是1,“c–!=3”表达式不执行,最后打印出a,b,c的值是1,3,3。
12.下列条件语句中,输出结果与其他语句不同的是(A)
A. if(a==0)prin
本文档预览:3600字符,共11386字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载