05.条件分支结构

if…else 结构

#include <stdio.h>
int main()
{
    if(条件判断语句)
    {
        statements;
    }else{
        statements;
    }
}

if …else-if 语句

#include <stdio.h>
int main()
{
    if(条件判断语句)
    {
        statements;
    }else if(条件判断语句){
        statements;
    }else if(条件判断语句){
        statements;
    }else{
        statements;
    }
}

else-if 语句可以有无限个

无论是if...else语句还是if...else-if语句,如果下面只有一条语句的话,花括号可以省略,但是一般不要这么做,一是为了整体美观,二是带有花括号可以增强程序的可读性

switch 语句

#include <stdio.h>
int main()
{
    switch(表达式)    
    {
       case 常量表达式1:
           语句1breakcase 常量表达式2:
           语句2break;
       case ......:
            语句n;
            break;
       default:
            语句;
            break;  
    }
}
  • switch语句中的定义变量无效,不会初始化,如果要定义,可以在case下放入{}里,当作复合语句处理,或者在switch之前定义,在case里初始化
  • switch 语句只可以执行casedefault,其他的语句完全不执行
  • break是指跳出当前循环,如果不加breakswitch会从符合的case依次往下执行
  • default语句可以放在switch任意位置,除了放在最后可以不加break,放在其他任何地方都要加break(否则参考第三条)

switch 两种基本应用场景

  • 菜单跳转
  • 键盘鼠标事件的监听响应

变量作用域

作用域

作用域就是有效范围

  • static修饰符修饰的变量,生命周期从程序运行到程序结束才死亡
  • 一般的变量和作用域有关,作用域结束,则死亡

作用域的划分

根据是否被作用域限定符{}包围,分为局部变量和全局变量

  • 全局变量:没有被{}包含的变量一般是全局变量,全局变量默认初始化为0

  • 局部变量:被{}包含的变量一般是局部变量,局部变量需要手动初始化

#include <stdio.h>

int globalNumber=9;		//全局变量,作用域为整个.c文件,本文件内都可以访问
int main()
{
    int iNumber=1;		//局部变量,作用域为main(),仅仅在main函数内调用有效
}
  • 相同作用域的变量不可以重名
  • C语言中变量的访问是按照就近原则,谁离它近,则谁生效
  • C++中使用::访问全局变量,C语言中没有,应当尽量避免

课后作业

1,编程题

  1. 从键盘上输入一个表示年份和月份两个整数,判断该年份是否是闰年,输出当前月份的天数。闰年判定条件:
    • (1)被4整除但不能被100整除;
    • 或(2)被400整除;
#include <stdio.h>
int main()
{
    int yNum, mNum, is366, monthDays;
    printf("请输入四位数年份,如2022:\n");
    scanf("%d", &yNum);
    printf("请输入月份,月份不标虚位,如8:\n");
    scanf("%d", &mNum);
    is366 = ((yNum % 4 == 0 && yNum % 100 != 0) || yNum % 400 == 0) ? 1 : 0;
   
     switch (mNum)
      {
         case 1:
         case 3:
         case 5:
         case 7:
         case 8:
         case 10:
         case 12:
             monthDays = 31;
             break;
         case 4:
         case 6:
         case 9:
         case 11:
            monthDays = 30;
            break;
         case 2:
             monthDays = is366 ? 29 : 28;
             break;
       	default:
             printf("错误!,检查输入!\n");
             return 0;
       }
       printf("%d年是%s,%d月有%d天\n", yNum, is366 ? "闰年" : "平年", mNum, monthDays);
       return 0;
   }
  1. 编写一个程序,输入某人的身高(cm)和体重(kg),按下式确定其体重是否为标准、过胖或过瘦。
    • (1)标准体重=身高-110;
    • (2)超过标准体重5kg (即大于5kg)为过胖;
    • (3)低于标准体重5kg (即小于5kg)为过瘦。
#include <stdio.h>
int main()
{
    
    double personHeight, personWeight, standardRule,standardWeight;
    printf("请输入你的身高,单位cm:\n");
    scanf("%lf", &personHeight);
    printf("请输入你的体重,单位kg:\n");
    scanf("%lf", &personWeight);
    
    standardRule = personHeight - 110;		//计算标准体重
    
    if (standardRule<=0)					//标准体重小于等于零则用户输入错误
    {
        printf("数据错误,检查输入!\n");
        return 0;
    
    }
    
     standardWeight = personWeight - standardRule;  //计算实际体重超过标准体重多少
    
     printf("你的身高为%.2lfcm,体重为%.2lfkg,标准体重为%.2lfkg,体重%s\n", personHeight, personWeight, standardRule, (standardWeight > 5) ? "过胖,注意锻炼!" : ((standardWeight< 5&&standardWeight>0) ? "标准,继续保持!": "过瘦,注意锻炼!"));
     return 0;
    
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值