//
// main.cpp
// _04day
//
// Created by AchesonD 贪玩巴斯 on 2021/3/22.
//
一、数组的运用,比较大小,输出最高分!
//五个人的成绩比大小,并且打印输出分最高的人的分数。
//数组的运用 ———— int arr[5] = {99,100,30,40,55} ;
/*
#include <iostream>
using namespace std;
int main()
{
int score[5] = {99,100,30,40,55};
int max = 0;
for(int i = 0; i < 5; i++)
{
cout << score[i] << endl;
if(score[i] > max)
{
max = score[i];
}
}
cout << "则成绩最高为" << max << endl;
system("pause");
return 0;
}
*/
/*
二、元素的逆置!
//数组的运用:元素的逆置
//声明五个元素的数组,并且将元素逆置
//如: 5 6 7 8 9 逆置后结果为 9 8 7 6 5
#include<iostream>
using namespace std;
int main()
{
int arr[5] = {5,6,7,8,9};
cout << "数组逆置前的排序为: " << endl;
for(int i = 0; i < 5; i++)
{
cout << arr[i] << endl;
}
//开始逆置数组
int f = 0;
int temp = 0;
int l = sizeof(arr)/sizeof(arr[0]) - 1 ;
cout << "数组逆置后的排序为: " << endl;
while( f <= l )
{
temp = arr[f];
arr[f] = arr[l];
arr[l] = temp;
f++;
l--;
}
for(int i = 0; i < 5; i++)
{
cout << arr[i] << endl;
}
system("pause");
return 0;
}
*/
/*
三、冒泡排序
//冒泡排序: 最常用的排序算法,对数组内的元素进行排序
//比较相邻的元素。如果第一个比第二个大,就交换他们两个。
//对每一对相邻元素做同样的工作,执行完毕后,找到第一个最大值。
//重复以上的步骤,每次比较次数-1,直到不需要比较
//例子: 对 十个数:8 9 10 22 39 4 8 3 90 100 进行升序排序
#include<iostream>
using namespace std;
int main()
{
int arr[10] = {8,9,10,22,39,4,8,3,90,100};
cout << "冒泡排序前的顺序为:" << endl;
for(int i = 0; i < 10; i++)
{
cout << arr[i] << endl;
}
for(int i = 0; i < 10 - 1; i++) //这里的循环表示轮数 十个数字冒泡比较九次
{
for(int j = 0; j < 10 - i - 1; j++) //这里表示一个循环轮中,有 十个数字-1 - i(轮数) 的交换次数,这个次数随着轮数的增加而减少!
{
if(arr[j] > arr[j+1])
{
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
cout << "冒泡排序后,升序的顺序为:" << endl;
for(int i = 0; i < 10; i++)
{
cout << arr[i] << endl;
}
system("pause");
return 0;
}
*/
/*
四、二维数组的定义
//二维数组
//二维数组的四种定义方式
//数据类型 数组名[ 行数 ][ 列数 ];
//数据类型 数组名[ 行数 ][ 列数 ] = { {数据1,数据2 } ,{数据3,数据4 } };
//数据类型 数组名[ 行数 ][ 列数 ] = { 数据1,数据2,数据3,数据4};
//数据类型 数组名[ ][ 列数 ] = { 数据1,数据2,数据3,数据4};
//第二种更加直观,提高代码的可读性
#include<iostream>
using namespace std;
int main()
{
//第一种方式
//数组类型 数组名 [行数][列数]
int arr1[2][3];
//单个利用下标赋值
arr1[0][0] = 9;
arr1[0][1] = 8;
arr1[0][2] = 7;
arr1[1][0] = 6;
arr1[1][1] = 5;
arr1[1][2] = 4;
//利用嵌套for循环输出————外行内列
for(int i = 0; i < 2; i++)
{
for(int j = 0; j < 3; j++)
{
cout << arr1[i][j] << "\t";
}
cout << endl;
}
//☆☆☆☆☆☆☆☆☆ 第二种方式 ☆☆☆☆☆☆☆☆☆
//最推荐的方式
//数据类型 数组名[行数][列数] = { {数据1,数据2},
// {数据3,数据4}
// };
int arr2[2][3] =
{
{1,2,3},
{4,5,6}
};
//第三种方式
//数据类型 数组名[行数][列数] = {数据1,数据2,数据3,数据4 };
int arr3[2][3] = {1,2,3,4,5,6};
//会根据输入的行列数自动分行列
//第四种方式
//数据类型 数组名[][列数] = {数据1, 数据2, 数据3, 数据4};
int arr4[][3] = {1,2,3,4,5,6};
//会根据列数来自动分行
system("pause");
return 0;
}
*/
/*
五、二维数组的运用以及sizeof的运用!
//二维数组数组名的运用
//1.查看二维数组所占内存空间 2.获取二维数组首地址
#include<iostream>
using namespace std;
int main()
{
//二维数组数组名
int arr[2][3] =
{
{5,2,0},
{1,3,4}
};
cout << "二维数组的大小为:" << sizeof(arr) << endl;
cout << "二维数组一行的大小为:" << sizeof(arr[0]) << endl;
cout << "二维数组一个元素的大小为: " << sizeof(arr[0][0]) << endl;
//可以运用sizeof的计算来得出行数,列数和元素个数
cout << "二维数组行数:" << sizeof(arr)/sizeof(arr[0]) << endl;
cout << "二维数组的列数: " << sizeof(arr[0])/sizeof(arr[0][0]) << endl;
cout << "二维数组总的元素个数: " << sizeof(arr)/sizeof(arr[0][0]) << endl;
//利用数组名来获取数组的地址
cout << "二维数组首地址:" << arr << endl;
cout << "二维数组第一行地址: " << arr[0] << endl;
cout << "二维数组第二行地址: " << arr[1] << endl;
cout << "二维数组第一个元素地址: " << &arr[0][0] << endl; //注意:取到具体元素的地址时需要用取地址符号&
cout << "二维数组第二个元素地址: " << &arr[0][1] << endl;
//二维数组首地址、二维数组第一行地址、二维数组第一个元素的地址。都是指的同一个地址!
system("pause");
return 0;
}
*/
/*
六、二维数组的应用案列
//二维数组应用案列
//有三个同学参加唱歌比赛,三轮比拼中,分别得分如下;请分别输出三个同学的总分
// 第一轮 第二轮 第三轮
//小杨 10 10 10
//小王 4 5 7
//小黄 9 2 8
#include<iostream>
using namespace std;
#include<string>
int main()
{
int scores[3][3] =
{
{10,10,10},
{4,5,7},
{9,2,8}
};
string names[3] = {"小杨","小王","小黄"};
for(int i = 0; i < 3; i++)
{
int sum = 0;
for(int j = 0; j < 3; j++)
{
sum += scores[i][j];
}
cout << names[i] <<" 同学的总分为:" << sum << endl;
}
system("pause");
return 0;
}
*/