数组
一维数组
【如果初始化没有填写完,默认为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] << " ";