第四章 数组、函数、指针

数组

一维数组

【如果初始化没有填写完,默认为0填补】

【练习】

练习案例1:五只小猪称体重

案例描述:

在一个数组中记录了五只小猪的体重,如:int arr[5] = {300,350,200,400,250};

找出并打印最重的小猪体重。

//练习案例1:五只小猪称体重
//	案例描述:
//	在一个数组中记录了五只小猪的体重,如:int arr[5] = { 300,350,200,400,250 };
//找出并打印最重的小猪体重。

int weight[5];
int max = 0;
int num;

for (int i = 0; i < 5; i++) {
	cin >> weight[i];
	if (weight[i] > max) {
		num = i+1;
		max = weight[i];
	}
}

cout << "the pig" << endl;
cout << max << endl;			//体重
cout << num << endl;			//编号(第几只)

**练习案例2:**数组元素逆置

**案例描述:**请声明一个5个元素的数组,并且将元素逆置.

(如原数组元素为:1,3,2,5,4;逆置后输出结果为:4,5,2,3,1)


	//**练习案例2:** 数组元素逆置
	//	** 案例描述:** 请声明一个5个元素的数组,并且将元素逆置.
	//	(如原数组元素为:1, 3, 2, 5, 4; 逆置后输出结果为:4, 5, 2, 3, 1);

	int arr[] = { 1,2,3,4,5 };

	for (int i = 0; i < 5; i++)
		cout << arr[i] << " ";

	//for (int i = 0; i < 5/2; i++) {
	//	int n = arr[i];
	//	arr[i] = arr[4 - i];		//04换,13换...
	//	arr[4 - i] = n;
	//}

	int head = 0, rear = 4;
	
	while (head != rear) {
		int temp = arr[head];
		arr[head] = arr[rear];
		arr[rear] = temp;
		head++;
		rear--;
	}

	cout << "\n======================" << endl;

	for(int i = 0; i < 5; i++)
		cout << arr[i] << " ";

冒泡排序

	// 将数组进行升序排序
	int arr[] = { 4,2,8,0,5,7,1,3,9 };
	for (int i = 0; i < 9; i++)
		cout << arr[i] << " ";

	for(int i = 0; i < 9-1; i++)		//对每个元素进行遍历【对比n-1轮】
		for (int i = 0; i < 9-1; i++) {	//开始冒泡,最后会得到这一轮的最大值【放在最后】
			if (arr[i] > arr[i + 1]) {	//前比后大,交换
				int temp = arr[i];
				arr[i] = arr[i+1];
				arr[i+1] = temp;
			}

		}
	cout << "\n======================" << endl;

	for (int i = 0; i < 9; i++)
		cout << arr[i] << " ";

二维数组

【练习】


	//考试成绩统计:
	//案例描述:有三名同学(张三,李四,王五),在一次考试中的成绩分别如下表,请分别输出三名同学的总成绩
	
	
	int grade[3][3] = { {100,100,100},{90,50,100},{60,70,80} };
	string name[] = {"张三","李四","王五"};
	string crouse[] = {"语文","数学","英语","总成绩"};
	int sum[] = {0,0,0};

	cout << "	";

	for (int i = 0; i < 4; i++)
		cout << crouse[i] << "\t";

	cout << "\n";

	for (int i = 0; i<3; i++) {
		cout << name[i] << "\t";
		for (int j = 0; j < 3; j++) {
			cout << grade[i][j] << '\t';
			sum[i] += grade[i][j];
		}
		cout << sum[i] << "\t";
		cout << "\n";
	}

函数

【练习】

**示例:**定义一个加法函数,实现两个数相加


int add(int a, int b) {
	return a + b;
}

实参、形参

【函数定义里小括号内称为形参,函数调用时传入的参数称为实参,如果形参发生,并不会影响实参】

【不需要返回就是void】

函数声明

【函数的声明可以多次,但是函数的定义只能有一次

【在main之前函数要有声明,有声明后定义在main之前写或者在main之后写都行】

函数的分文件编写

头文件声明

源文件实现

运用

 

 指针

指针概念

空指针、野指针

const修饰指针

const int *p = &a;【看作const int——值不能改】

int * const p = &a;【看作const *——指针不能改】

const int * const p = &a;【看作const int、const *——都不能改】

指针数组

【利用指针找到数组中的元素】

指针函数

【函数地址传递】

【练习】

**案例描述:**封装一个函数,利用冒泡排序,实现对整型数组的升序排序

例如数组:int arr[10] = { 4,3,6,9,1,2,10,8,7,5 };

swap.h:

#include <iostream>
using namespace std;


void swap(int *a, int *b); //声明函数

void bubbleSort(int* arr,int len);		//冒泡排序【升序】

swap.cpp:


void bubbleSort(int* arr,int len) {
	for (int i = 0; i < len-1; i++) {
		for (int j = 0; j < len - 1; j++) {
			if (arr[j] > arr[j+1]) {
				int temp = arr[j];
				arr[j] = arr[j + 1];
				arr[j+1] = temp;
			}
		}
	}

}

main:

	int arr[10] = { 4,3,6,9,1,2,10,8,7,5 };
	bubbleSort(arr, 10);

	for (int i = 0; i < 10; i++)
		cout << arr[i] << " ";

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值