国家二级C语言(C语言程序设计)机试模拟试卷12
选择题
1.有以下计算公式
(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>=0?x :-x);
解析:由题意可知计算公式的含义是:当x大于等于0时,y值等于x的算术平方根;当x小于0时,y值等于x的相反数的算术平方根。所以选项B用一个完整的if else语句表达了计算公式的含义;选项C用两个if语句表达了计算公式的含义;选项D在求平方根函数的后面用x≥0?x:-x条件表达式来表达了计算公式的含义。选项A没有用C语言语句正确的表达计算公式的含义。
2.有以下程序 #include main() { int x; scanf(\\(D)
A. 不等于10的整数\\t
B. 大于3或等于10的整数
C. 小于3的整数\\t
D. 大于3且不等10的整数
解析:题目中,虽然else和第二个if不在同一行上,但等价于在同一行上,因此,程序的意思是当x大于3且不等于10时打印出来。
3.有以下程序
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。
4.下列条件语句中,输出结果与其他语句不同的是(A)
A. if ( a==0 ) printf(\\
B. if ( a==0 ) printf(\\
C. if ( a!=0 ) printf(\\
D. if ( a ) printf(\\
解析:选项B、C、D这三条语句都是在变量不等于0的情况下,输出x;等于0的情况下输出y,而选项A则正好相反。
5.若有以下程序
#include<stdio.h>
main() {
int a=1,b=2,c=3,d=4;
if ((a=2) || (b=1)) c=2;
if ((c==3) && (d=-1)) a=5;
printf(\\(B)
A. 2,1,2,-1
B. 2,2,2,4
C. 5,1,2,-1
D. 1,2,3,4
解析:代码中有两条并列的if语句,第一条if语句执行,(a=2) || (b=1)值为1,由于逻辑或表达式,根据其短路运算规则,a=2,b=2,即b值不变执行if分支c=2。并列的if语句中表达式(c==3) && (d=-1)为逻辑与表达式,c==3不成立,不考虑d=-1表达式,d为5.逻辑表达式值为0,不执行相应if分支。
6.若有以下程序
#include<stdio.h>
main() {
int a=1,b=2,c=3,d=4, r=0;
if (a!=1) ; else r=1;
if (b==2) r+=2;
else;
if (c!=3) r+=3;
else;
if (d==4) r+=4;
printf(\\(C)
A. 10
B. 6
C. 7
D. 3
解析:程序代码中有四条并列的if语句,第一条if表达式a!=1不成立,执行else分支,r=1;第二条if表达式b==2成立,执行r+=2,r=3;第三条if语句c!=3不成立,执行else分支,分支为空语句;第四条if分支d==4成立,执行该if分支语句,r+=4,r=7。
7.若有以下程序
#include<stdio.h>
main() {
int a=1,b=2,c=3,d=4;
if ((a=2) && (b=1)) c=2;
if ((c==3) || (d=-1)) a=5;
printf(\\(D)
A. 2,1,2,-1
B. 2,2,2,4
C. 1,2,3,4
D. 5,1,2,-1
解析:代码中有两条并列的if语句,第一条if语句,逻辑与表达式(a=2) && (b=1)中,a=2,则执行b=1,得到该逻辑与表达式值为1,执行分支语句c=2;第二条if语句(c==3) || (d=-1),c==3不成立,执行d=-1,而后得出整个逻辑与表达式值为1,执行分支语句a=5。
8.若有以下程序
main() {
int a=1,b=2,c=3,d=4, r=0;
if (a!=1) ;
else r=1;
if (b==2) r+=2;
if (c!=3); r+=3;
if (d==4) r+=4;
printf(\\(B)
A. 7
B. 10
C. 6
D. 3
解析:程序代码中有四条并列的if语句,第一条if表达式a!=1不成立,执行else分支,r=1;第二条if表达式b==2成立,执行r+=2,r=3;第三条if语句c!=3不成立,执行语句r+=3,r=6;第四条if分支d==4成立,执行该if分支语句,r+=4,r=10。
9.以下叙述中正确的是(C)
A. if语句只能嵌套一层
B. 不能在else子句中再嵌套if语句
C. if子句和else子句中可以是任意的合法的C语句
D. 改变if-else语句的缩进格式,会改变程序的执行流程
解析:含else子句的if语句的格式为
if(表达式) 语句1
else 语句2
其中if 和else是C语言的关键字。“语句1”称为if子句,“语句2”称为else子句,这些子句只允许为一条语句,若需要多条语句时,则应该使用复合语句 ,对于if和else语句的嵌套原则是比较自由的。
10.有以下程序
main() {
int x=1, y=0, a=0, b=0;
switch ( x ) {
case 1: switch(y) {
case 0: a++; break;
case 1: b++; break; }
case 2: a++; b++; break;
case 3: a++; b++; }
printf(\\(C)
A.
本文档预览:3600字符,共9708字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载