一、continue语句:循环的"快进键"
continue的作用是:跳过当前循环中剩余的代码,直接进入下一次循环。它就像一个"快进"按钮,让你忽略本次循环的下半部分,直接开始下一轮的循环。
实际应用示例
#include <stdio.h>
int main() {
int i;
for(i = 1; i <= 100; i++) {
if(i % 3 == 0) {
continue; // 遇到3的倍数就跳过打印
}
printf("%d\n", i);
}
return 0;
}
这段代码会跳过所有能被3整除的数字,只打印其他数字。
二、数组:数据的集装箱
数组基础概念
- 数组元素:组成数组的各个变量
- 数据类型:数组中各元素的数据类型必须相同
- 内存排列:元素在内存中是连续依次排列的
- 构造类型:数组是构造数据类型之一
定义数组的三要素
定义数组时需要说明:类型、名字、大小
int odd[5]; // 类型:int, 名字:odd, 大小:5
数组初始化与遍历
#include <stdio.h>
int main() {
int a[5] = {1, 2, 3, 4, 5}; // 初始化数组
for(int i = 0; i < 5; i++) {
printf("%d\n", a[i]); // 遍历数组
}
return 0;
}
智能遍历技巧
在不清楚数组大小时,可以使用sizeof来计算元素个数:
#include <stdio.h>
int main() {
int a[5] = {5, 1, 4, 9, 12};
int i;
for(i = 0; i < sizeof(a) / sizeof(a[0]); i++) {
printf("%d %p\n", a[i], &a[i]);
}
return 0;
}
优势:即使改变数组类型,代码也无需修改!
三、数组实战:找出最大值
#include <stdio.h>
int main() {
int a[10]; // 声明一个可以存放10个整数的数组
int i;
// 获取用户输入
for(i = 0; i <= 9; i++) {
scanf("%d", &a[i]);
}
// "打擂台"算法找最大值
int max = a[0]; // 假设第一个元素是最大值
for(i = 0; i <= 9; i++) {
if(max < a[i]) { // 如果有人比当前"擂主"更厉害
max = a[i]; // 更新擂主
}
}
printf("最大值是:%d\n", max);
return 0;
}
四、数组越界:必须警惕的危险行为
什么是数组越界?
数组越界就是访问了不属于数组的内存位置,就像坐公交车时坐到了别人的座位上。
越界的危害
- 数据混乱:多出来的数据会覆盖其他变量的值
- 程序崩溃:可能导致程序突然停止运行
- 安全风险:可能被黑客利用来攻击程序
示例
#include <stdio.h>
int main() {
int arr[10]; // 声明一个能装10个数的数组
// 合法的操作:
arr[0] = 1; // ✓ 第1个位置
arr[9] = 10; // ✓ 第10个位置
// 数组越界:
arr[10] = 11; // ✗ 第11个位置 - 越界!
arr[15] = 20; // ✗ 第16个位置 - 越界!
return 0;
}
五、二维数组:数据的表格世界
定义与初始化
#include <stdio.h>
int main() {
// 定义方式:数据类型 数组名[行数][列数]
int grades[5][3] = {
{85, 90, 78}, // 学生1的语数外成绩
{92, 88, 95}, // 学生2
{76, 85, 80}, // 学生3
{88, 92, 85}, // 学生4
{95, 87, 90} // 学生5
};
return 0;
}
遍历二维数组
#include <stdio.h>
int main() {
int grades[5][3] = {
{85, 90, 78},
{92, 88, 95},
{76, 85, 80},
{88, 92, 85},
{95, 87, 90}
};
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 3; j++) {
printf("%d ", grades[i][j]);
}
printf("\n");
}
return 0;
}
总结
通过本文,我们学习了:
continue语句的"快进"作用- 数组的基础操作和遍历技巧
- 数组越界的危害及避免方法
- 二维数组的表格化数据处理