1、控制语句
while(表达式)
{
语句块;
}
do
{
语句块;
}while(表达式);
while先判断再执行,do while先执行,再判断,while最少一次也不执行
do while至少执行一次
break:用来跳出当前循环
continue:结束本次循环,继续下一次循环
goto:无条件跳转语句
格式:goto 语句标号;其中语句标号遵循标识符的命名规则
2、数组 --- 构造数据类型
概念:由相同数据类型组成的集合
变量定义:存储类型 数据类型 变量名;
定义:存储类型 数据类型 数组名[元素个数];
存储类型:决定了系统给数组的元素分配内存空间时的位置
数据类型:数组中每个元素的数据类型
数组名:集合的名字,遵循标识符的命名规则,数组名不能和其他变量重名
数组名:1、代表整个数组(sizeof(a)求整个数组在内存当中的字节数)
2、数组的首地址(数组首元素的地址),为地址常量
注意:打印地址 %p
元素个数:集合中一共有多少个相同数据类型的数据
必须是一个确定的数(最好用常量)
系统给数组分配内存空间的大小:sizeof(数据类型)*元素个数
总结:数组的特点:
1、元素的数据类型相同
2、内存是连续的
数组元素的引用:数组名[下标]; 注意:下标从0开始
>>>数组的初始化
注意:数组如果是局部变量,没有初始化,该数组所有元素的值为随机值
如果用static修饰,没有初始化,其值为0
数组如果是全局变量,没有初始化,其值为0
====满数初始化
int a[5] = {1,2,3,4,5}; //a[0] = 1, a[1] = 2,a[2] = 3, a[3] = 4, a[4] = 5;
满数初始化时,元素个数可以省略
====部分初始化
int a[5] = {1,2,3}; //a[0] = 1,a[1] = 2, a[2] = 3, a[3] = 0, a[4] = 0
部分初始化时,元素个数不能省略
====赋为0
int a[5] = {0};
数组的赋值:
int a[5];
a[5] = {1,2,3,4,5}; //error a[5]为数组元素,并且不存在
a = {1,2,3,4,5}; //error a为地址常量
只能依次对每个元素赋值
练习:定义一个有10个int类型元素的数组,通过键盘给数组元素赋值,
求这个数组所有元素的和,并打印结果
冒泡排序:(一定要会)
100 88 76 98 10
第一趟:
第一次:88 100 76 98 10
第二次:88 76 100 98 10
第三次:88 76 98 100 10
第四次:88 76 98 10 100
88 76 98 10 100
第二趟:
第一次:76 88 98 10
第二次:76 88 98 10
第三次:76 88 10 98
76 88 10 98 100
第三趟:
第一次:76 88 10
第二次:76 10 88
76 10 88 98 100
第四趟:
第一次:10 76
最终结果:10 76 88 98 100
int i, j;
for(i = 0; i < N-1; i++)
{
for(j = 0; j < N-1-i; j++)
{
if(a[j] > a[j+1])
{
int tmp = a[j];
a[j] = a[j+1];
a[j+1] = tmp;
}
}
}
字符数组初始化:
满数初始化:
char a[5] = {‘a‘,‘b‘,‘c‘,‘d‘,‘\0‘};
char a[5] = "abcd";
部分初始化:
char a[5] = "abc"; //a[3] = ‘\0‘, a[4] = ‘\0‘;
字符数组的赋值:
scanf("%s", a); 在输入结束时,在字符串结尾自动加‘\0’
注意:通过scanf给字符数组赋值时,不做越界检查,所以输入时应输入n-1个字符
(n为数组元素的个数)
printf("%s\n", a);//打印字符串时,遇到‘\0’输出结束
字符串输入输出函数:
char a[5]; //gets(a);
gets(数组名); //可以给字符数组赋值,也不做越界检查,用时要注意不要越界
puts(数组名); //输出字符数组的内容,遇到‘\0‘结束
注意:scanf以空格、回车作为结束符,但是gets只以回车作为结束符
求数组元素个数:
sizeof(数组名)/sizeof(数据类型);
或sizeof(数组名)/sizeof(a[0]);
来源: http://www.bubuko.com/infodetail-1954519.html