C语言_02_流程、循环、函数、数组

流程、循环、函数、数组

一、流程控制语句
1. 顺序循环
1.程序默认的执行流程; 2.顺序为从上至下
2. 分支结构

​ 程序执行过程中存在岔路。

Ⅰ. if语句;
Ⅱ. switch语句;

在这里插入图片描述

(1)计算结果只能是整数/字符;
(2)case后面只能是字面量,不能是变量;
(3)对于代码书写来说,如果情况比较多,case不容易书写,但是在处理结果时,switch不会顺序进行情况对应,而是直接找到对应的情况,效率更高;
(4)case穿透:不遇到break就不会停止,但是只会找到对应的情况后向下穿透。
Ⅲ. for循环

​ 初始化语句、条件判断语句和条件控制语句都写在for()的括号里面。

Ⅳ. while循环

​ 条件判断语句写在while()的括号里面,初始化语句写在循环体之前,条件控制语句写在循环体内。

for循环与while循环的不同:
	因为定义在循环体内,控制for循环的变量在循环体外面就不能再使用;
	因为定义在循环体外,控制while循环的变量在循环体外仍可以使用。
	
* 	知道循环的次数或循环的范围 -> 用for循环(格式会更清晰);
	不知道知道循环的次数或循环的范围,只知道循环结束的条件 -> 用while循环
Ⅴ. do…while循环

在这里插入图片描述

补充1. 无限循环

​ 无限循环一般用while(1)循环,且下面不能再写其他代码,因为不会被执行。

补充2. 循环嵌套

​ 要先确定内循环做了什么,外循环就是将内循环重复执行N次。

##思考(重点)
  1. ​ 在需要使用循环处理问题的时候,首先要找到循环结束的条件,然后看使用哪种循环合适。

    知道循环的次数,使用for循环;不知道次数,只知道结束的条件,用while循环
    
  2. ​ 处理问题时,要先对问题进行拆解,再去具体思考怎么写,之后想到多少写多少。

    如回文数问题:
    	首先我们要得到每一位的数字,然后再倒序排列:于是思考如何得到每一位的数字,写出对应的代码;
    	其次思考如何把得到的数字进行排布。
    
二、跳转控制语句
Ⅰ. break;

​ 跳转到单层循环的外部;

​ 不能单独书写,写在switch或者循环中。

Ⅱ. continue;

​ 结束本次循环,进行下次循环;

​ 只能写在循环中。

Ⅲ. goto;

​ 可以跳转到任意标号位置;一般用于跳出循环嵌套。

三、函数

​ 一个独立的功能,提高了代码的复用性、可维护性。

复用性:当我们需要实现一个功能时,调用函数即可。
可维护性:当我们代码出现问题时,在函数内部排查问题即可。因为当我们书写函数、使用函数时,就已经将问题范围缩小在了函数内部。

------定义函数时三个思考:

  1. 做什么事情? 函数体
  2. 需要什么? 形参
  3. 调用处需不需要返回值? 返回值类型
四、数组

​ 容器,存储同种数据类型的多个值。

1. 数组内是连续的空间
2. 一旦定义,长度不可变(可以在定义时不确定数组长度,但赋值后,数据值的个数就是数组的长度,不能再进行添加)
//定义
int arr[5] = {1, 2, 3, 4, 5};
int arr[5] = {1, 2, 3, 4};		//元素不够,自动填充默认值
int arr[] = {1, 2, 3, 4, 5};	//定义时不规定长度,赋值后长度不再变化
//修改元素
arr[4] = 10;
1. 内存地址

​ 存储数据的位置的编号。

​ 作用:快速管理内存空间,快速获取数据。

arr[0]:其中arr代表数组的首地址,[0]为索引,对于内存地址来说就是偏移量。
获取变量地址:&变量名
1. 通过变量的首地址,可以确定变量中存储的数据(一个变量不止占用一个地址)。
   同时数据类型也是重要的,比如int类型占4个字节,short类型占2个字节,那一个变量占用的地址数量就不一样。
2. 索引代表的就是偏移量,所以数组的索引是从0开始,表示偏移0个单位。
2. 注意事项

(1)定义数组时,arr为完整的数组;

函数中使用时,arr只是一个记录数组首地址的变量,即数组作为函数的参数,**传递的是数组的首地址。**因此,使用长度之前,要在主函数中先测量出再传递给函数。

in arr[] = {1, 2, 3, 4, 5}
printf("%zu\n", sizeof(arr));	//结果为 4*5=20
getlength(arr);					//结果为 8

void getLength(int arr[])
{
    printf("%zu\n", sizeof(arr));
}

(2)不要索引越界。最小索引:0;最大索引:长度 - 1。

(3)用到数组随手写出长度,常会使用:

int len = sizeof(arr) / sizeof(arr[0]);
3. 数组常见算法(待学习)

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值