流程控制语句:
1、条件分支
if(条件){语句1;}
else if(条件) {语句2;}
...
else {语句n;}
例子:
#include <stdio.h>
int main()
{
int money= 0;
printf("请输入要存取的金额:\n");
scanf("%d",&money);
if(money< 10000)
{
printf("先生,请耐心排队\n");
}
//else后面没有条件
else
{
printf("先生,这边请\n");
}
return 0;
}
2、多分支结构
switch(变量/表达式) //变量/变达式结果类型只能是整型或者char型
{
case 常量/字面量:语句1;[break;]
....
[default:语句n;]//位置无关
}
main()
{
int fs;
scanf("%d",&fs);
switch(fs)
{
case 0 :printf("e");break;
case 1 :printf("e");break;
default:printf("cuo");/
}
}
注意:
分支之间的顺序不是固定的,但是不能有重复的分支....
switch语句是穿透的, 也就是说当程序判断某个case的条件为真后,它将在执行该case所带的的语句块之后不再对后面的case的条件进行判断而直接执行
3、循环
while(条件) {循环体;}
do{循环体;}while(条件); 一般用于至少执行一次的情况
for(语句1;语句2;语句3) {循环体;
例子:
int main()
{
Int a[]=newint[10];
for (int i=0,i<10;i++) //C99 允许 C89不允许
a[i]= 0;
}
数组:
数组的定义
数据类型 数组名[数组的长度];
例如:
int nums[10]; 表示定义了一个可以保存10个int类型数据的名为nums的数组
数组名代表整个数组的首地址
变长数组(C99支持)
例子:
int num = 0;
printf("请输入数组的长度:\n");
scanf("%d",&num);
//使用变量定义数组
int arr[num];
数组的初始化
(1)全部初始化
int nums[5] = {11,22,33,44,55};
(2)部分初始化
int nums[5] = {11}; 剩余的元素默认初始化为0
int nums[5] = {0}; 一般用于将数组中所有的元素初始化为0
int nums[5] = {}; 将数组中所有元素初始化为0,不推荐使用
(3)指定初始化
int nums[5] = {[2] = 33}; 将数组中第三个元素初始化为33
(4)数组的遍历
for(i = 0; i < n; i++)
{
printf("%d",nums[i]);
}
必须通过下标进行一个个遍历
数组的下标越界访问问题
由于定义的数组有自己的大小,
如int num[5], num 这个数组管理的范围最大值就是 sizeof(int)*5 ,当使用下标进行访问是时候,若下标的范围超过管理范围则就会产生越界问题,有时候会产生段错误,因为越界访问的内存有别的数据,访问权限不归你,所以产生段错误
二维数组——实际上是一维数组,分成等比例几分,内存连续
二维数组的定义
数据类型 数组名[行数][列数]
例子:
int arr[3][4]; 表示定义了一个3行4列的二维数组
注意:
二维数组在内存中是按照行主序进行排列的
二维数组的初始化
全部初始化
int arr[2][3]; 看做具有两个元素的数组,而每一个元素又是一个具有三个元素的一维数组
int arr[2][3] = {{11,22,33} ,{44,55,66}};
部分初始化
int arr[2][3] = {{11,22},{33}}; 剩余元素默认初始化为0
表格方式显示:
11 22 0
33 0 0
int arr[2][3] = {{0}}; 表示将二维数组中所有元素初始化为0
int arr[2][3] = {0}; 也可以初始化为0
指定初始化
int arr[2][3] = {[0][2]=33}; 将第一行中第三个元素初始化为33
本文详细介绍了C语言中的流程控制语句,包括条件分支、多分支结构和循环,并解释了不同类型的数组及其初始化方法。
1047

被折叠的 条评论
为什么被折叠?



