一、选择题
1.能正确表示a≥10或a≤0的关系表达式是( C
)。
A.a>=10ora<=0 B. a>=10|a<=0
C .a>=10||a<=0 D. a>=10&&a<=0
2.判断逻辑值为“真”的最准确叙述是(D
)
A.1 B.大于0的数
C.非0的整数 D.非0的数
3.已知“int x=10,y=20,z=30;”,则执行
if((x>y)
z=x;x=y;y=z;
语句后,x、y、z的值是( B
)。
A.x=10,y=20,z=30 B. x=20,y=30,z=30
C. x=20,y=30,z=10 D. x=20,y=30,z=20
4. 已知“int a=5,b=1,c=0;”,则执行
if(a=a+b)printf(“****\n”);
else printf(“####\n”);
语句后输出结果是( C
)
A.有语法错误,不能编译
B.能通过编译,但不能通过连接
C.输出****
D.输出####
5.以下选项中,两条条件语句语义等价的是(B
)。
A.if(a=3)printf(“%d\n”,a);
if(a==3) printf(“%d\n”,a);
B. if(a-3)printf(“%d\n”,a);
if(a!=3) printf(“%d\n”,a);
C. if(a)printf(“%d\n”,a);
if(a==0) printf(“%d\n”,a);
D. if(a-3)printf(“%d\n”,a);
if(a==3) printf(“%d\n”,a);
6.已知“int k=8;”,则执行
if(k<=0)
if(k==0)printf(“####\n”);
else printf(“&&&&\n”);
else printf(“****\n”);
语句后,输出结果是( C
)。
A.#### B.&&&&
C.**** D.有语法错误,无输出结果
二、填空题
if…else
结构在条件为“真”时执行一个动作,条件为“假”时执行另一个动作。- 执行switch结构中的
break
语句能够立即退出该结构。 - **
switch
**结构用来测试某个特定的变量或表达式是否等于每一个假设的整常数值。 - 已有定义“int a,b,c;”,且a=b=c=1,执行
if(a++||++b) c++;
语句后,b的值是1
。
三、写出下列程序的运行结果
题1
#include<stdio.h>
void main()
{ int a=10, b=20,c=30,d;
d=++a<=10||b-->=20||c++;
printf("%d,%d,%d,%d\n",a,b,c,d);
}
运行结果为:11,19,30,1
题2
#include<stdio.h>
void main()
{ int p,a=5;
if(p=a!=0)
printf("%d\n",p);
else printf("%d\n",p+2);
}
运行结果为:1
题3
#include<stdio.h>
void main()
{
int x=1,y=2,z=3;
if(x--) y++,z++;
else y--;z--;
printf("%d,%d,%d\n",x,y,z);
}
运行结果为:0,3,3
四、程序填空题
1.下面程序从键盘输入字符,若是数字字符,则转换成数字显示出来。
#include<stdio.h>
void main()
{
int c;
c=getchar();
if( c>='0'&&c<='9' ) c=c-'0';
printf("%d\n",c);
}
2. 以下程序从键盘输入一个3位以内的正整数,若为3位数,则输出3,若为2位数,输出2,否则输出1。
#include<stdio.h>
void main()
{
int a;
printf("输入一个3位以内的整数a\n");
scanf("%d",&a);
if( a/100>0 )
printf("3\n");
else if( a/10>0 )
printf("2\n");
else
printf("1\n");
}
五、编写程序
1. 编写程序,计算以下公式的值,取两位小数,a和x从键盘输入。要求使用if语句完成。
源程序:
#include<stdio.h>
#include<math.h>
void main()
{
float a,x,y;
printf("a=");
scanf("%f",&a);
printf("x=");
scanf("%f",&x);
if(fabs(x)==a)y=0;
else
y=1/(2*a)*log(fabs((a+x)/(a-x)));
printf("y=%.2f\n",y);
}
输 入:a= 5
x= 2
运行结果:y=0.08
2. 编写程序,求以下函数的值。如果x≥100或x<36,则输出y无定义的信息。要求使用switch语句实现。
源程序:
#include <stdio.h>
#include<math.h>
void main()
{
float x,y;
printf("x=");
scanf("%f",&x);
switch((int)sqrt(x))
{
case 9: y=x+2;break;
case 8: y=2*x+3;break;
case 7: y=3*x+4;break;
case 6: y=4*x+5;break;
}
if(x>=100||x<36)
printf("y无定义!\n");
else
printf("y=%.2f\n",y);
}
输 入:x= 69
运行结果:y=141.00
3. 编写程序,输入4个整数,要求按由大至小的顺序输出。
源程序:
#include<stdio.h>
void main()
{
int a,b,c,d,t;
printf("输入四个整数:");
scanf("%d,%d,%d,%d",&a,&b,&c,&d);
if(a<b)t=a,a=b,b=t;
if(a<c)t=a,a=c,c=t;
if(a<d)t=a,a=d,d=t;
if(b<c)t=b,b=c,c=t;
if(b<d)t=b,b=d,d=t;
if(c<d)t=c,c=d,d=t;
printf("四个整数的大小顺序为:%4d,%4d,%4d,%4d\n",a,b,c,d);
输 入:18,15,24,48
运行结果:四个整数的大小顺序为: 48 24 18 15