循环语句和数组

 

for循环语句:

循环就是让一段代码反复执行,达到你想要的效果

for是一种比较灵活且比较危险(与其他循环相比)的循环

一般使用一个变量来引导for循环的运行,这个变量叫做循环变量 i

for([1];[2];[3])

{

[4];

}

1、给循环变量赋值,C99标准才可以在for内定义循环变量 -std=gnu99

for内定义的循环变量,只能在for循环内使用

2、判断循环变量是否到达边界,判断为真时执行4,为假结束循环

4、被反复执行的代码,也叫做循环体

3、改变循环变量,防止出现死循环,一般是对循环变量自加或自减

1 2 4 3 2 4 3 2....

大括号:

1、建议上下对齐

2、循环体如果只有一行代码,大括号可以省略

但是不利于代码的扩展,一般的商业代码要求大括号不能省略

for的多种写法:

 

for(;;)

{

        //死循环

}

int i=0;

for(; i<10; i++)

{

}

for(int i=0; i<10;)

{

        printf("---\n");

        i++;

}

 

    

while语句:

while(条件) //当条件为真时,执行循环体,否则结束循环

{

//循环体

}

while相当于for循环的精简版本 for(;条件;)

for循环负责明确知道循环次数的问题

while负责解决只知道结束条件而不确定循环次数的问题

do while

do{

//循环体

}while(条件); 注意:分号不能少

先执行循环体,在判断循环条件,该循环至少执行一次

适合先干活,再判断的特殊情况

循环嵌套:

循环语句中包含循环语句

外层循环执行一次,内存循环执行n次

跳转语句:

goto 可以在函数内任意跳转

标签名:

goto 标签名;

goto可能会破坏已经设计好的分支或循环语句,因此绝大多数公司禁止使用

在驱动编程时特别适合处理异常

break

1、在switch语句中,可以关闭执行开关

2、在循环语句中,可以跳出一层循环

continue

结束本次循环,直接进入下一次循环

return

1、返回一个数据给函数的调用者

2、结束函数的执行,跳转到调用该函数的位置

 

数组:

什么是数组: 变量的组合,是一种批量定义变量的方式

定义: 类型 数组名[数量];

int num1,num2,num3,num4,num5;

int arr[5];

使用:数组名[下标];

下标:从零开始 范围:0~数量-1

遍历:与for循环配合使用,使用循环变量i作为数组的下标

初始化: 类型 数组名[数量] = {1,2,3,4,5,...};

1、数组与普通变量一样默认值是随机的,为了安全要对数组进行初始化

2、这种初始化语法只能在定义语句时使用,而且只能逐个赋值,不能整体赋值

3、初始化数据过多,编译器会产生警告并丢弃多余的数据

4、初始化数据不够,编译器会自动补0

5、初始化时数据可以省略,只写大括号,相当于给所有成员初始化为0

6、初始化时数组的长度可以省略,编译器会自动统计数组元素的个数并告诉数组

sizeof(arr)/sizeof(arr[0]) = 数组的元素个数

数组的总字节数/数组元素的字节数 = 数组的元素个数

 

数组的越界:C语言为了程序的运行效率是不会检查数组的下标是否越界

数组越界的后果:

1、一切正常

2、段错误

3、脏数据

 

二维数组:

一维数组相当于把变量排成一排,通过编号来访问

二维数组相当于把变量排成矩阵,通过行号和列号来访问

定义: 类型 数组名[行数][列数];

int arr[3][5];

[0,0][0,1][0,2][0,3][0,4]

[1,0][1,1][1,2][1,3][1,4]

[2,0][2,1][2,2][2,3][2,4]

使用:数组名[行下标][列下标]; arr[1][2]

行下标: 0~行数-1

列下标: 0~列数-1

遍历:需要与双层for循环配合,外层一般负责遍历行,内层一般负责遍历列

for(int i=0; i<行数; i++)

{

for(int j=0; j<列数; j++)

{

printf("%d ",arr[i][j]);

}

printf("\n");

}

初始化:

类型 数组名[行数][列数] = {{第一行},{第二行},{第三行},...};

 

变长数组:

定义数组时使用变量来作为它的长度,在代码编译期间数组的长度是不确定,当执行到数组定义语句时它的长度才确定下来,一旦确定就无法改变

优点:可以根据实际情况来确定数组的长度,达到节约内存的目的

缺点:因为初始化在编译时完成,而此时变长数组的长度并不确定,因此不能初始化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值