C语言-选择·重复·跳转语句

本文详细介绍了C语言中的if语句和switch语句的使用,包括if语句的形式、else悬空问题及其解决方法,以及switch语句的结构和注意事项。通过示例代码展示了如何计算交易佣金和根据成绩显示等级。同时,提到了循环语句和跳转语句将在后续文章中进行讨论。
摘要由CSDN通过智能技术生成

目录

选择:if语句,switch语句

形式:

else悬空问题:

推荐替换:

练习:

switch语句:

重复:while循环语句,do语句,for循环语句 和 跳转·退出循环:continue、break、goto语句:


选择:if语句,switch语句

形式:

        if语句几乎没有什么知识点,if语句后面不加";"

if(表达式){

    if(表达式){语句}
    else if(…){语句}
    else{语句}
}
else if(表达式){
    if(){语句}
    else{语句}
}

…

else{
    if(){语句}
    else{语句}
}

        在上面的语句里,圆括号的表达式值非零,则执行该{}里的语句,否则跳过。

        注:else没有圆括号括起来的表达式

else悬空问题:

        else悬空即else语句的数量比if语句数量少,此时else语句属于哪一个if语句呢?

        if (y != 0)

                if(x != 0)  result = x/y;

        else  printf("error");

看起来else语句好像和if (y != 0)并列,缩进格式暗示它属于if (y != 0),但是C语言规定else语句属于离它最近的且还未和其他else语句匹配的if语句,在这里属于if(x != 0)语句。将语句用{}括起来将不会出现这一问题。

推荐替换:

        if语句可以用  表达式1 ?表达式2:表达式3 来代替

练习:

#include <stdio.h>
#include<stdlib.h>
//选择语句·计算佣金

int main(void) 
{ 
    float commission, value;//commission:佣金,value:交易额

    printf("Enter value of trrade:  ");
    scanf("%f",&value);

    if(0<value && value < 2500.00f){
        //记得把数字都写成浮点数形式
        commission = 30 + .017f * value;
    }
    else if (value >= 2500.00f && value < 6250.00f )
    {
       commission = 56 + .0066f * value;
    }
    else if (value >= 6250.00f && value < 20000.00f )
    {
       commission = 76 + .0034f * value;
    }
    else if (value >= 20000.00f && value < 50000.00f )
    {
       commission = 100 + .0022f * value;
    }
    else if (value >= 50000.00f && value < 500000.00f )
    {
       commission = 155 + .0011f * value;
    }
    else {
        commission = 255 + .0009*value;
    }
    
    printf("commission: $%.2f\n",commission);
    return 0; 

}  

/**
    Enter value of trrade:2435
    commission: $71.40   
*/

switch语句:

if语句可以替换为switch语句。
case 常量表达式:语句 这里的常量表达式不可以包含变量和函数调用。
5, 5 + 10 都属于常量表达式 ✅

一定要有break语句,如果想多个分支共享代码从而忽略break,则应该明确指出这里故意忽略了break语句。以防止别人或者自己再加上break语句来修正“错误”。

可加注释:/* FALL THROUGH*/ 

下面两个是一样的:

//级联式if语句根据成绩的等级显示出相应的英语单词
    if (grade == 4)
        printf("Excellent");
    else if (grade == 3)
        printf("Good");
    else if (grade == 2)
        printf("Average");
    else if (grade == 1)
        printf("Poor");
    else if (grade == 0)
        printf("Failing");
    else
        printf("Illegal grade");
//switch语句等价于前面的级联式if语句

switch (grade)
{
case 4:printf("Excellent");//case 4 即grade = 4
    break;
case 3:printf("Good");
    break;
case 2:printf("Average");
    break;
case 1:printf("Poor");
    break;
case 0:printf("Failing");
    break;
default:printf("Illegal grade");
    break;
}
//多个分支放置在同一组语句的前面:
switch (grade)
{
case 4:
case 3:
case 2:
case 1:printf("Passing");
    break;
case 0:printf("Failing");
    break;
default:printf("Illegal grade");
    break;
}

//或者这样:
switch (grade)
{
case 4:    case 3:    case 2:    case 1:
    printf("Passing");
    break;
case 0:printf("Failing");
    break;
default:printf("Illegal grade");
    break;
}
//在这种情况下,4,3,2,1 都会输出 Passing

重复:while循环语句,do语句,for循环语句 和 跳转·退出循环:continue、break、goto语句:

另开一篇来写:

http://t.csdn.cn/oE7az

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wmpreturn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值