C++笔记打卡第四天(数组、函数)

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的源文件:

主函数:

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值