C(流程控制、数组)
2021-01-14
流程控制
什么是流程控制
程序代码执行的顺序
流程控制的分类
顺序:从上而下执行
选择:
定义:某些代码可能执行,也可能不执行,有选择的执行。
分类:
1、if
if最简单的用法:if(表达式){语句;}//功能:如果表达式为真,语句执行。
if的范围问题:只能控制{}内的语句执行。
if..else..的用法:if(表达式1){语句1;}else{语句2;}
if..else if..else的用法
if举例--求分数的等级
1、判断一个数字是否是素数
素数一般指质数。质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数
2、判断一个数字是否是回文数
就是说一个数字从左边读和从右边读的结果是一模一样的,比如12321。
3、实现一个十进制数字的二进制形式
4、求一个数字的每位是奇数的数字取出来组合形成的新数字
5、求一个数字倒过来的数字
循环:
定义:某些代码重复执行,循环的变量不能定义成浮点型
分类:
for循环,嵌套for循环
while
do...while
break和continue
注意:break是用来结束循环的;continue是用来结束本次循环,执行下一次循环;
do...while至少执行一次;
for循环的执行顺序:先初始值,在判断条件,再执行语句,再变化变量;
数组
例如:int a[] ={1,2,3,4,5};//int 是数据类型 a是数组名,{}里面是数组元素;一维数组名代表数组第一个元素的地址;
为什么需要数组?
为了解决大量同类型数据的存储和使用;
为了模拟现实世界;
数据的分类
一维数组:
定义:
为n个变量连续分配空间;
所有的变量数据类型必须相同;
所有的变量所占的字节大小必须相等;
下标从 0 开始到 length-1 ;
初始化:
完全初始化:int a[5] = {1,2,3,4,5};
不完全初始化:int a[5] = {1,2,3};
不初始化:int a[5];
清零:int a[5] = {0};
错误的写法:int[5];a[5] = {1,2,3,4,5};//只有在定义数组才能整体赋值;
排序:
求最大/最小:
倒置:
例如: int a[7] = {1,2,3,4,5,6,7};
int i,j ;
int t;
i =0;j =6;
while(i<j){//逆置
t = a[i];
a[i] = a[j];
a[j] = t;
i++;
--j;
}
for(i=0;i<7;++i){printf("%d\n",a[i]);}//循环输出
查找:
插入/删除:
二维数组:
int a[3][4];//总共12个元素,可以看成3行4列;
a[0][0] a[0][1] a[0][2] a[0][3]
....
a[i][j]表示第i+1行第j+1列的元素;
//定义二维数组
int a[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}}
int i,j;
//输出数组内容
for(i=0;i<3;++i){
for(j=0;j<4;++j){
printf("%-5d ", a[i][j]);}//-表示最对奇,5表示占5个位置;
}
printf("\n");
对二维数组排序:
对矩阵的相乘:
求每一行的最大值:
判断矩阵是否对称:
多维数组:
(**)是否存在多维数组?
不存在;因为内存是线性的;n维数组可以当作每个元素是n-1维数组的一维数组;
例如:int a[3][4]该数组含有3个元素的一维数组,只不过每个元素可以分成4个小元素

浙公网安备 33010602011771号