4.5 习题(王晓云 主编)

文章详细分析了C语言中if语句的使用,包括错误示例、逻辑判断的真假处理、条件运算符以及switch-case结构的应用。同时,提供了填空题和运行结果题,帮助读者深入理解条件判断和逻辑运算在程序设计中的作用。
摘要由CSDN通过智能技术生成

一、选择题

1. 下面( ) 是错误的if 语句(设int x,a,b;)B

A)if (a=b) x++;

B)if (a=<b) x++;

C)if (a-b) x++;

D)if (x ) x++;

解析:关系运算符错误,if(a<=b)x++;
2. 以下程序片段( )。D

void main ( )

{

int x=0,y=0,z=0;

if (x=y+z) printf(“***”);

else printf(“###”);

}

A)有语法错误,不能通过编译

B)输出:***

C)可以编译,但不能通过连接,所以不能运行

D)输出:###

解析:“0”为假命题,非零为真命题。
3. 对下述程序,( )是正确的判断。A

void main ( )

{

int x,y;

scanf(“%d,%d”,&x,&y);

if (x>y) x=y;y=x;

else x++;

y++;

printf(“%d,%d”,x,y);

}

A)有语法错误,不能通过编译

B)若输入3 和4,则输出4 和5

C)若输入4 和3,则输出3 和4

D)若输入4 和3,则输出4 和5

解析:else没有与之对于的语句if。
4. 当a=1,b=3,c=5,d=4 时,执行完下面一段程序后x 的值是( )。B

if (a<b)

if (c<d) x=1;

else

if (a<c)

if (b<d) x=2;

else x=3;

else x=6;

else x=7;

A)1

B)2

C)3

D)4

解析:
if (a<b)
    if (c<d) x=1;//不执行
    else
        if (a<c)
            if (b<d) x=2;//满足执行x=2;后续不再执行
            else x=3;
            else x=6;
            else x=7;
5. 若int i=10;执行下列程序后,变量i 的正确结果是( )。D

switch (i)

{

case 9: i+=1 ;

case 10: i+=1 ;

case 11: i+=1 ;

default : i+=1 ;

}

A)10

B)11

C)12

D)13

解析:switch-case语句且无break语句,执行到程序结束。

二、填空题

1. 在C 语言中,对于if 语句,else 子句与if 子句的配对原则是else与它前面最近的一个if配对

2. 以下两条if 语句可合并成一条if 语句为________。
if(a<=b)
{
    x=1;
    printf("# # # # x=%d\n",x);
}
else
{
    y=2;
    printf("* * * * y=%d\n",y);
}

if(a<=b) x=1;

else y=2;

if(a>b) printf(“* * * * y=%d\n”,y);

else printf(“# # # # x=%d\n”,x);

3. 在C 语言中提供的条件运算符”?:”的功能是根据条件判断值,从两种选择对象中,选取一个作为整个运算的结果

4. 条件表达式a?b:c,其中a,b,c 是三个运算分量,当运算分量a 的值为真,则 值为b
否则 为C

以下程序根据考试成绩的等级打印出百分制分数段:从键盘上输入一个成绩等级grade,按

下列原则输出其百分制成绩:grade 为a,百分制成绩为85~100;grade 为b,百分制成绩

为70~84;grade 为c,百分制成绩为60~69;grade 为d,百分制成绩为<60;grade 为其

他字符,则输出error!。请完善该程序。

#include <stdio.h>
void main()
{
    ________//int grade;
    grade=getchar();
switch(________)//switch(grade)
    {
    case 'a':printf("85~100\n");break;
    case 'b':printf("70~84\n");break;
    case 'c':printf("60~69\n");break;
    case 'd':printf("<60\n");break;
    ______:printf("error!\n");  //default
    }
}

三、运行结果题

1. 写出以下程序的运行结果:
void main()
{
    int a = 0, b = 0, c = 0;
    if (++a > 0 || ++b > 0) ++c;
    printf("% d, % d, % d" , a, b, c);
}
2. 写出以下程序的运行结果:
void main()
{
    int x;
    x = 5;
    if (++x > 5) printf("x = % d", x);
    else printf("x = % d", x--);
}

3. 写出以下程序的运行结果:
{
    int x = 1, y = 1, z = 1;
    y = y + z; x = x + y;
    printf(" % d", x < y ? y : x);
    printf(" % d", x < y ? x++ : y++);
    printf(" % d", x);
    printf(" % d", y);
}
4. 写出以下程序的运行结果:
{
    int a = 2, b = 7, c = 5;
    switch (a > 0) {
    case 1: switch (b < 0) {
    case 1: printf("@"); break;
    case 2: printf("!"); break;
    }
    case 0: switch (c == 5) {
    case 1: printf(" * "); break;
    case 2: printf("#"); break;
    default: printf("#"); break;
    }
    default: printf(" & ");
    }
    printf("\n");
}

四、编程题(见其他文章)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值