1.continue语句
在循环语句中,跳过本次循环中余下尚未执行的语句,继续执行下一次循环
2. goto语句
在程序中不建议使用goto语句,以免造成程序流程混乱。
3.数组
- 数组中的每个数据元素都是相同的数据类型
- 数组是由连续的内存位置组成的
- 数组名不要与变量重名
- 数组下标是从0开始索引的!
// 第一种定义方法
int arr[5];
arr[0] = 10;
// 第二种定义方法
// 如果在初始化数据时候,没有全部填写完,会用0来填补剩余数据
int arr2[5] = { 10,20,30,40,50 };
// 第三种定义方法
int arr3[] = { 90,80,70,60,50,40,30,20,10 };
4.一维数组的数组名
①可以统计整个数组在内存中的长度:sizeof(arr)
int arr[] = { 90,80,70,60,50,40,30,20,10 };
cout << "整个数组所占内存空间:" << sizeof(arr) << endl;
cout << "每个元素所占内存空间" << sizeof(arr[0]) << endl;
cout << "数组中的元素个数" << sizeof(arr) / sizeof(arr[0]) << endl;
②可以获取数组在内存中的首地址: cout << arr << endl;
int arr[] = { 90,80,70,60,50,40,30,20,10 };
cout << "数组首地址为:" << (int)arr << endl;
cout << "数组中第一个元素地址" << (int) & arr[0] << endl;
cout << "数组中第二个元素地址" << (int) & arr[1] << endl;
③arr=100 : 错误,数组名是一个常量,不可以进行赋值操作
练习:五只小猪称体重
int main()
{
int arr[5] = { 300, 350, 200, 400, 250 };
int max = 0;
max = arr[0];
for (int i = 1; i < 5;i++)
{
if (arr[i] > max)
{
max = arr[i];
}
}
cout << "最大体重为:" << max << endl;
}
练习:数组元素逆置
int main()
{
int arr[5] = { 1,3,2,5,4 };
int start = 0;
int end = sizeof(arr) / sizeof(arr[0]) - 1;
while (start < end) {
int temp = arr[start]; // 先记录
arr[start] = arr[end];
arr[end] = temp;
start++;
end--;
}
for (int i = 0; i < 5; i++) {
cout << arr[i] ;
}
cout << endl;
}
5.冒泡排序实现升序序列
int arr[] = { 4,2,8,0,5,7,1,3,9 };
int length = sizeof(arr) / sizeof(arr[0]);
// 排序轮数 = 元素个数 - 1
for (int i = 0; i < length - 1; i++)
{
// 对比次数 = 元素个数 - 当前轮数 - 1
for (int j = 0; j < length - i - 1; j++)
{
if (arr[j] > arr[j + 1])
{
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
6.二维数组
// 第一种定义方式
int arr[2][3];
arr[0][0] = 1;
arr[0][1] = 2;
arr[0][2] = 3;
arr[1][0] = 4;
arr[1][1] = 5;
arr[1][2] = 6;
// 第二种定义方式(推荐!)
int arr2[2][3] =
{
{1,2,3},
{4,5,6}
};
// 第三种定义方式
int arr3[2][3] = { 1,2,3,4,5,6 };
// 第四种定义方式,不能省去列数
int arr4[][3] = { 1,2,3,4,5,6 };
7.二维数组数组名
- 查看二维数组所占空间:sizeof(arr)
- 二维数组的行数:sizeof(arr) / sizeof(arr[0])
- 二维数组的列数:sizeof(arr[0]) / sizeof(arr[0][0])
- 获取二维数组首地址:cout << (int)arr << endl
练习:考试成绩统计
int arr[3][3] =
{
{100, 100, 100},
{90, 50, 100},
{60, 70, 80}
};
string names[3] = { "张三", "李四", "王五" };
for (int i = 0;i < 3;i++)
{
int sum = 0;
for (int j = 0;j < 3;j++)
{
sum = sum + arr[i][j];
};
cout << names[i] << "的分数是" << sum << endl;
}
8.函数
- 将一段经常使用的代码封装起来,减少重复代码
- 返回值类型、函数名、参数列表、函数体语句、return表达式
// 传入两个整型的数值,计算两个数值相加的结果并返回
int add(int num1, int num2)
{
int sum = num1 + num2;
return sum;
}
9.函数的调用
int add(int num1, int num2)
{
int sum = num1 + num2;
return sum;
}
int main()
{
// 调用add函数
int a = 10;
int b = 20;
int result = add(a, b);
cout << result << endl;
system("pause");
return 0;
}
- a和b称为实参
- 在函数定义时,num1和num2并没有真实的数据,只是一个形式上的参数,简称形参
- 当调用函数时候,实参的值会传递给形参
10.值传递
- 如果函数不需要返回值,声明的时候可以写void
- 值传递的时候,形参发生的任何变化,均不会影响实参
void swap(int num1, int num2)
{
cout << "交换前:" << endl;
cout << "num1 = " << num1 << endl;
cout << "num2 = " << num2 << endl;
cout << "交换后:" << endl;
int temp = num1;
num1 = num2;
num2 = temp;
cout << "num1 = " << num1 << endl;
cout << "num2 = " << num2 << endl;
}
int main()
{
int a = 10;
int b = 20;
swap(a, b);
system("pause");
return 0;
}
11.函数的常见样式
- 无参无返
- 有参无返
- 无参有返
- 有参有返
12.函数的声明
- 如果max在main之后,需要提前告诉编译器函数的存在,可以利用函数的声明
- 声明可以写多次,但定义只能有一次
int max(int a, int b);
int main()
{
int a = 10;
int b = 20;
cout << max(a, b) << endl;
system("pause");
return 0;
}
int max(int a, int b)
{
return a > b ? a : b;
}
13.函数的分文件编写
- 创建后缀名为.h的头文件
- 创建后缀名为.cpp的源文件
- 在头文件中写函数的声明
- 在源文件中写函数的定义
后缀名为.h的头文件:
后缀名为.cpp的源文件:
主函数: