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:
语句1;
break;
case 常量表达式2:
语句2;
break;
case ......:
语句n;
break;
default:
语句;
break;
}
}
- 在
switch
语句中的定义变量无效,不会初始化,如果要定义,可以在case
下放入{}
里,当作复合语句处理,或者在switch
之前定义,在case
里初始化 switch
语句只可以执行case
和default
,其他的语句完全不执行break
是指跳出当前循环,如果不加break
,switch
会从符合的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)被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;
}
- 编写一个程序,输入某人的身高(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;
}