内容正文:
C 语言程序设计
2023
翻转课堂实用教程
第8章 函数
函数
8.1
变量的作用域及存储类型
8.2
结构化程序设计
8.3
8.2 作用域及存储类型
1
2
3
4
导入全局变量
导入案例
变量的作用域
变量的存储类型及生存期
知识点
作用域及存储类型
案例分析
案例分析
作用域及存储类型
课堂练习题
练习题
导入全局变量
案例8.2.1 编写函数来统计新冠病毒感染者和疑似感染者的人数,并在main函数中调用该函数,输出这些人数。
每天会涉及三种输入数据:
新增疑似感染者人数 新增由疑似转为确诊人数 新增的痊愈者人数
possInfected confirmed cured
程序先获取一个编号(-1表示输入数据,-2表示结束处理),若是-1,获取数据值,调用update函数计算最新的新冠病毒感染者人数和疑似感染者人数。
totalCon totalPoss
直到获取编号-2时便结束处理。
新冠病毒感染者都是由疑似感染者转过来的
这两个数据是update函数的运算结果,但函数只有一个返回值。如何解决呢?
导入全局变量
案例8.2.1代码(1)
定义totalCon、totalPoss为全局变量
#include<stdio.h>
//在函数外定义的变量,称为全局变量
int totalCon,totalPoss;
void update(int possInfected,int confirmed,int cured){
totalCon = totalCon -cured + confirmed;
totalPoss = totalPoss - confirmed + possInfected;
}
int main(){
int possInfected,confirmed,cured,actionId;
//totalCon = 0,totalPoss =0;
printf("请输入操作编号(-1:输入数据,-2:结束处理)
");
scanf("%d",&actionId);
导入全局变量
案例8.2.1代码(2)
while(actionId != -2){
printf("请依次输入新增疑似感染者人数、新增由疑似转为确诊人数,新增的痊愈者人数:
");
scanf("%d %d %d",&possInfected,&confirmed,&cured);
update(possInfected,confirmed,cured);
if(totalCon<0 || totalPoss<0 )
printf("输入的数据不正确!
");
else
printf("最新感染人数为%d,最新疑似感染者人数为%d
",totalCon,totalPoss);
printf("请输入操作编号(-1:输入数据,-2:结束处理)
");
scanf("%d",&actionId);
}
return 0;
}
导入全局变量
案例8.2.1运行结果
请输入操作编号(-1:输入数据,-2:结束处理)
-1↙
请依次输入新增疑似感染者人数、新增由疑似转为确诊人数,新增的痊愈者人数:
3 0 0↙
最新感染人数为0,最新疑似感染者人数为3
请输入操作编号(-1:输入数据,-2:结束处理)
-1↙
请依次输入新增疑似感染者人数、新增由疑似转为确诊人数,新增的痊愈者人数:
3 3 0↙
最新感染人数为3,最新疑似感染者人数为3
请输入操作编号(-1:输入数据,-2:结束处理)
-1↙
请依次输入新增疑似感染者人数、新增由疑似转为确诊人数,新增的痊愈者人数:
10 3 3↙
最新感染人数为3,最新疑似感染者人数为10
请输入操作编号(-1:输入数据,-2:结束处理)
-2↙
定义totalCon、totalPoss为全局变量,有两个主要作用:
①既实现了在update函数操作其值,又实现了在main函数中操作其值;
②又解决函数多运算结果返回的问题。
1.变量的作用域
变量仅能在一定的范围内能被使用,这个范围称为变量的作用域。
变量的作用域由定义变量的位置决定。
8.2.1作用域与存储类型知识点
(1)局部变量
(2)全局变量
1.变量的作用域
(1)局部变量
定义在函数中的或者复合语句中的变量,为局