四、控制语句
1.选择控制语句
1、if 语句
1)
if()
{
语句1;
语句2;
}
如果条件成立执行大括号里的所有语句, 不成立的话大括号里的语句不执行
2)
if(条件表达式)
{
}
else
{
}
如果 if 的条件成立, 执行 if 后面{}内的语句, 否则执行 else 后的语句
3)
if(条件表达式 1)
{
}
else if(条件表达式 2)
{
}
else if(条件表达式 3)
{
}
else
{
}
从上往下判断, 一旦有成立的表达式, 执行对应的复合语句,下边的就不再判断了, 各个条件判断是互斥的
2、switch 语句
switch(表达式) //表达式只能是字符型或整型的(short int int long int)
{
case 常量表达式1:语句1;break;
case 常量表达式2:语句2;break;
default: 语句3; break;
}
注意: break 的使用,无break,向下依次执行,直到break为止。
2.循环控制语句
1、for循环
for(表达式1;表达式2;表达式3)
{
循环体
}
break
for(表达式1;表达式2;表达式3)
{
if(1)
{
break; //结束break所在的循环,不是跳出if
}
循环体
}
continue
for(表达式1;表达式2;表达式3)
{
if(1)
{
continue; //结束当前所在的循环,进入下一次循环
}
循环体
}
goto
跳转至标签(标签名:)处往下执行
printf("test0\n");
printf("test1\n");
goto tmp;//跳转至已有标签处
printf("test222222222222222222\n");
printf("test3333333333333333\n");
tmp://标签
printf("test6\n");
/*
test0
test1
test6
*/
循环嵌套
int i,j;
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
printf("i=%d,j=%d",i,j);
}
}
//外层循环一次,内层完整循环一次
2、while循环
1)
while()
{
}
进入 while 循环的时候, 首先会判断条件表达式是否为真, 为真进入循环体, 否则退出循环
do
{
} while();
先执行循环体里的代码, 然后去判断条件表达式是否为真, 为真再次执行循环体, 否则退出循环
五、数组
1.数组的概念
数组是若干个相同类型的变量在内存中有序存储的集合。
int a[10];//定义了一个整型的数组 a, a 是数组的名字, 数组中有10 个元素,
//每个元素的类型都是 int 类型, 而且在内存中连续存储。
2.数组的分类
按元素类型分类
1) 字符数组
即若干个字符变量的集合, 数组中的每个元素都是字符型的变量
char s[10]
2)短整型的数组
short int a[10];
a[0]=4;
a[9]=8;
3) 整型的数组
int a[10];
a[0]=3;
a[0]=6;
- 长整型的数组
long int a[5];
5) 浮点型的数组(单浮点、 双浮点)
float a[6];
a[4]=3.14f;
double a[8];
a[7]=3.115926;
6) 指针数组
char *a[10];
int *a[10];
7) 结构体数组
struct stu boy[10];
按维数分类
一维数组
int a[30];
类似于一排平房
二维数组
int a[2][30];
可以看成一栋楼房 有多层, 每层有多个房间, 也类似于数学中的矩阵 二维数组可以看成由多个一维数组构成的。 有行, 有列,
多维数组
int a[4][2][10];//80个元素
三维数组是由多个相同的二维数组构成的
int a[5][4][2][10];
3.数组的定义
定义一个数组, 在内存里分配空间
1、一维数组的定义
格式:
数据类型+数组名+[数组元素个数];
int a [10];
char b[5];//定义了5个char类型变量的数组b
//5个变量分别为 b[0],b[1],b[2],b[3],b[4]
在数组定义的时候可以不给出数组元素的个数, 根据初始化的个数来定数组的大小
2、二维数组的定义
格式:
数据类型+数组名+[行的个数] [列的个数]
int a[4][5];//定义了20个int类型的的变量
/*
a[0][0] ,a[0][1],a[0][2] ,a[0][3] ,a[0][4];
a[1][0] ,a[1][1],a[1][2] ,a[1][3] ,a[1][4];
a[2][0] ,a[2][1],a[2][2] ,a[2][3] ,a[2][4];
a[3][0] ,a[3][1],a[3][2] ,a[3][3] ,a[3][4];
*/
二维数组在定义的时候, 可以不给出行数, 但必须给出列数,
二维数组的大小根据初始化的行数来定
3、多维数组的定义
int a[3][4][5];
4.数组的初始化
1、一维数组初始化
a、 全部初始化
int a[5]={2,4,7,8,5};
//即:a[0]=2;a[1]=4;a[2]=7;a[3]=8;a[4]=5;
b、 部分初始化
int a[5]={2,4,3};//初始化赋值不够后面补 0
//即:a[0]=2;a[1]=4;a[2]=3;a[3]=0;a[4]=0;
注意: 只能省略后面元素, 可以不初始化, 不能中间的不初始化
2、二维数组初始化
按行初始化:
a、 全部初始化
int a[2][2]={{1,2},{4,5}};
//a[0][0]=1; a[0][1] = 2;
//a[1][0]=4;a[1][1]=5;
b、 部分初始化
int a[3][3]={{1,2},{1}};
//a[0][0] = 1;a[0][2] =0;
逐个初始化:
a、全部初始化:
int a [2][3]={2,5,4,2,3,4};
//{{2,5,4},{2,3,4}}
b、部分初始化:
int a[2][3]={3,5,6,8};
//{{3,5,6},{8,0,0}}
5.数组元素的引用
1、 一维数组元素的引用方法
数组名 [下标]; //下标代表数组元素在数组中的位置
int a[5];
//a[0] a[1] a[2] a[3] a[4];
2、二维数组元素的引用方法
数组名[行下标] [列下标];
int a [4][5];
/*
a[0][0] ,a[0][1],a[0][2] ,a[0][3] ,a[0][4];
a[1][0] ,a[1][1],a[1][2] ,a[1][3] ,a[1][4];
a[2][0] ,a[2][1],a[2][2] ,a[2][3] ,a[2][4];
a[3][0] ,a[3][1],a[3][2] ,a[3][3] ,a[3][4];
*/
3、字符数组
char c1[] ={‘c’ ,’ ’ ,’ p’ ,’ r’ ,’ o’ ,’ g’ };//占6字节
char c2[] = “c prog” ;//占7字节
//字符串方式赋值比用字符逐个赋值要多占 1个字节,用于存放字符串结束标志‘\0’
char a[][5] = {
{‘B’ ,’ A’ ,’ S’ ,’ I’ ,’ C’ },
{‘d’ ,’ B’ ,’ A’ ,’ S’ ,’ E’ }
};
char a[][6] = {“hello” ,“world” };
数组 c2 在内存中的实际存放情况为:
注:'\0’是由 C 编译系统自动加上的
标签:语句,初始化,10,int,笔记,C语言,学习,数组,表达式 From: https://blog.csdn.net/m0_74268116/article/details/144096579