递归demo 。
有5个人坐在一起,问第5个人多少岁?他说比第4个人大2岁 。问第4个人岁数,他说比第3个人大2岁 。问第3个人,又说比第2人大两岁 。问第2个人,说比第1个人大两岁 。最后 问第1个人,他说是10岁 。请问第5个人多大?
程序分析:
利用递归的方法,递归分为回推和递推两个阶段 。要想知道第5个人岁数,需知道第4人的岁数,依次类推,推到第1人(10岁),再往回推 。
#includeint dfs(int n) {return n == 1 ? 10 : dfs(n - 1) + 2;}int main() {printf("第5个人的年龄是%d岁", dfs(5)); return 0;}
局部与全局
C语言中的变量,按作用域范围可分为两种,即局部变量和全局变量 。
变量存储类别
: C语言根据变量的生存周期来划分,可以分为静态存储方式和动态存储方式 。
C语言中存储类别又分为四类:
1、用关键字auto定义的变量为自动变量,auto可以省略,auto不写则隐含定为“自动存储类别”,属于动态存储方式 。如:
2、用修饰的为静态变量,如果定义在函数内部的,称之为静态局部变量;如果定义在函数外部,称之为静态外部变量 。如下为静态局部变量:
注意:静态局部变量属于静态存储类别,在静态存储区内分配存储单元,在程序整个运行期间都不释放;静态局部变量在编译时赋初值,即只赋初值一次;如果在定义局部变量时不赋初值的话,则对静态局部变量来说,编译时自动赋初值0(对数值型变量)或空字符(对字符变量) 。
3、为了提高效率,C语言允许将局部变量得值放在CPU中的寄存器中,这种变量叫“寄存器变量”,用关键字作声明 。例如:
: 注意:只有局部自动变量和形式参数可以作为寄存器变量;一个计算机系统中的寄存器数目有限,不能定义任意多个寄存器变量;局部静态变量不能定义为寄存器变量 。
4、用声明的的变量是外部变量,外部变量的意义是某函数可以调用在该函数之后定义的变量 。如:
内部函数与外部函数
静态变量只赋值一次
外部函数练习
hello.c
#include #include "test.c"//引用test.c文件extern void printLine()//这里定义的方法对吗?{printf("**************\n");}int main(){say();return 0;}
test.c
#include void printLine();static void say(){printLine();printf("I love imooc\n");printf("good good study!\n");printf("day day up!\n");printLine();}
对于hello.c来说,直接引入了test.c文件 。那么就可以调用testc中的方法say()
而对于test.c并没有引入,可以通过声明来调用另一个源文件中暴露出来的方法 。
综合练习
北京市出租车打车计费规则如下:
每公里单价计费2.3元起步价13元(包含3公里)晚上23点(含)至次日凌晨5点(不含)打车,每公里单价计费加收20% 。每次乘车加收1元钱的燃油附加税 。
小明每天上下班都要打车,公司和家的距离为12公里,上午上班时间为9点,下午下班时间为6点 。
请编写一个小程序计算小明每天打车的总费用 。
#include float taxifee(int clock,int miles){float money;if(miles<=3){money=14;printf("费用为14\n");}else{if(clock>=23 || clock<5){money=13+1+2.3*(miles-3)*1.2;printf("夜间车费为:%f\n",money);}else{money=13+1+2.3*(miles-3);printf("日间车费为:%f\n",money);}}return money;}int main(){printf("打的总费用:%.1f\n",taxifee(9,12)+taxifee(18,12));return 0;}
数组初体验
程序中也需要容器,只不过该容器有点特殊,它在程序中是一块连续的,大小固定并且里面的数据类型一致的内存空间,它还有个好听的名字叫数组 。可以将数组理解为大小固定,所放物品为同类的一个购物袋,在该购
- 关于如何开展这次班会的问题,关于职高班级开展主题班会
- 这里可以讨论数学吗,初等数学
- 2023年《中国500最具价值品牌》排行榜,这11家中国乳企上榜! 世界十大乳企
- 世界最危险的十大知名城市,你敢去旅游吗? 世界十大危险景点
- 在外国人眼里,这就是中国最火的6个旅游地,你去过几个? 中国之最你认识哪些
- 加水印软件是什么? 简单又好用
- “东北菜的灵魂”大豆,凭什么这么“能耐” 大豆历史之最
- 古今最豪放的诗词,我只服这12首,全是巅峰之作! 历史之最诗
- 老婆被人抢走了怎么办刘邦竟说出这样一句话
- 挑战吉尼斯纪录,长寿老人相聚园博园?这个贺州长寿文化节,玩得有点大 贺州挑战吉尼斯记录