标签:控制 外链 头文件 包含 最大 int start ota 个学生 转换
所谓数组,就是一个集合,里面存放了相同类型的数据元素
特点1:数组中的每个元素都是相同的数据类型
特点2:数组是由连续的内存位置组成的
注意:
数组名是一个常量,是不可以进行赋值操作的
例1:
#include <iostream>
using namespace std;
int main() {
int arr[] = { 10, 20, 30, 40, 50 };
arr = 100; // 报错“表达式必须是可修改的左值”
system("pause");
return 0;
}
数据类型 数组名[ 数组长度 ];
例1:
#include <iostream>
using namespace std;
int main() {
int arr[5]; // 定义一个数组,指定数组长度
arr[0] = 10; // 给数组赋值
arr[1] = 20;
arr[2] = 30;
arr[3] = 40;
arr[4] = 50;
for (int i = 0; i < 5; i++)
{
cout << arr[i] << endl;
}
system("pause");
return 0;
}
数据类型 数组名 [ 数组长度 ] = {值1, 值2,...};
例1:
#include <iostream>
using namespace std;
int main() {
int arr[5] = { 10, 20, 30 }; // 定义一个数组,指定数组长度,并赋值,没有赋值的元素默认为0
for (int i = 0; i < 5; i++)
{
cout << arr[i] << endl;
}
system("pause");
return 0;
}
数据类型 数组名 [ ] = {值1, 值2, ...}
例1:
#include <iostream>
using namespace std;
int main() {
int arr[] = { 10, 20, 30, 40, 50 }; // 按给定的值的给树,自动推断数组长度
for (int i = 0; i < 5; i++)
{
cout << arr[i] << endl;
}
system("pause");
return 0;
}
可以统计整个数组在内存中的长度
可以获取数组在内存中的首地址
例1:
#include <iostream>
using namespace std;
int main() {
int arr[] = { 10, 20, 30, 40, 50 };
int lenth = sizeof(arr); // 获取整个数组的长度
int pre_len = sizeof(arr[0]); // 获取数组中元素的长度
cout << "数组arr的长度为:" << lenth / pre_len << endl; // 获取数组的长度
for (int i = 0; i < (lenth / pre_len); i++) // 获取数组长度,进行循环打印数组的值
{
cout << arr[i] << endl;
}
system("pause");
return 0;
}
例2:
&符号可以取出变量的内存地址
#include <iostream>
using namespace std;
int main() {
int arr[] = { 10, 20, 30, 40, 50 };
cout << "数组的地址为:" << arr << " 转换为十进制是:" << int(&arr) << endl;
cout << "数组第一个元素的地址为:" << &arr[0] << " 转换为十进制是:" << int(&arr[0]) << endl;
cout << "数组第二个元素的地址为:" << &arr[1] << " 转换为十进制是:" << int(&arr[1]) << endl;
cout << "数组第三个元素的地址为:" << &arr[2] << " 转换为十进制是:" << int(&arr[2]) << endl;
system("pause");
return 0;
}
例3:
#include <iostream>
using namespace std;
int main() {
int arr[] = { 300, 200,400, 280, 350 };
int max = 0;
for (int i = 0; i < (sizeof(arr) / sizeof(arr[0])); i++)
{
if (max < arr[i])
{
max = arr[i];
}
}
cout << "最大的是:" << max << endl;
system("pause");
return 0;
}
例4:
将一个字典逆序,并打印出来
#include <iostream>
using namespace std;
int main() {
int arr[] = { 300, 200,400, 280, 350 };
int temp; // 创建临时变量存储交换的值
int start = 0; // 开始位置
int arr_len = sizeof(arr) / sizeof(arr[0]); // 数组长度
int end = arr_len - 1; // 结束位置
cout << "逆序前:";
for (int i = 0; i < arr_len; i++)
{
cout << arr[i] << ",";
}
while (start < end)
{
temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
start++;
end--;
}
cout << "逆序后:";
for (int i = 0; i < arr_len; i++)
{
cout << arr[i] << ",";
}
system("pause");
return 0;
}
例4:
#include <iostream>
using namespace std;
int main() {
int arr[] = {5, 4, 8, 7, 2, 1, 3, 9, 6 };
cout << "排序前为:";
for (int i = 0; i < (sizeof(arr) / sizeof(arr[0]));i++)
{
cout << arr[i] << " ";
}
// 进行冒泡排序
// 控制排序的轮数
for (int i = 0; i < (sizeof(arr) / sizeof(arr[0])) - 1; i++)
{
// 控制每次比较的数的个数
for (int j = 0; j < (sizeof(arr) / sizeof(arr[0])) - i - 1; j++)
{
if (arr[j] > arr[j + 1])
{
int temp;
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
cout << endl;
cout << "排序后为:";
for (int i = 0; i < (sizeof(arr) / sizeof(arr[0])); i++)
{
cout << arr[i] << " ";
}
system("pause");
return 0;
}
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Wcd2Lgwi-1594117085191)(C:\Users\PC\AppData\Roaming\Typora\typora-user-images\image-20200707105345354.png)]
语法:
数据类型 数组名 [ 行数 ] [ 列数 ] ;
语法:
数据类型 数组名 [ 行数 ] [ 列数 ] = { { 数据1, 数据2 }, { 数据3, 数据4 } };
语法:
数据类型 数组名 [ 行数 ] [ 列数 ] = { 数据1, 数据2, 数据3, 数据4 };
语法:
数据类型 数组名 [ ] [ 列数 ] = { 数据1, 数据2, 数据3, 数据4 };
建议使用第二种:更加直观,提高代码的可读性
可以统计整个数组在内存中的长度
可以获取数组在内存中的首地址
例1:
#include <iostream>
using namespace std;
int main() {
int arr[2][3] = {
{1, 2, 3},
{4, 5, 6}
};
cout << "数组的长度为:" << sizeof(arr) << endl;
system("pause");
return 0;
}
例2:
计算数组是几行几列的数组
#include <iostream>
using namespace std;
int main() {
int arr[2][3] = {
{1, 2, 3},
{4, 5, 6}
};
int total_length = sizeof(arr); // 获取数组的总长度
int row_length = sizeof(arr[0]); // 获取行的总长度
int col_length = sizeof(arr[0][0]); // 获取单个列的长度
cout << "行数为:" << total_length / row_length << endl;
cout << "列数为:" << row_length / col_length << endl;
system("pause");
return 0;
}
例3:分别获取数组的地址,第一行的地址,第一个值的地址
#include <iostream>
using namespace std;
int main() {
int arr[2][3] = {
{1, 2, 3},
{4, 5, 6}
};
cout << "数组地址是:" << int(arr) << endl;
cout << "第一行地址:" << int(arr[0]) << endl;
cout << "第一个值的地址:" << int(&arr[0][0]) << endl;
system("pause");
return 0;
}
例4:
统计一个学生的总成绩
#include <iostream>
using namespace std;
#include <string> // 使用字符串要包含头文件string
int main() {
int scores[3][3] = {
{100, 90, 83},
{74, 95, 86},
{99, 100, 100}
};
string names[3] = { "张三", "李四", "王五" }; // 学生姓名更分数数组一一对应
for (int i = 0; i < sizeof(scores) / sizeof(scores[0]); i++)
{
int sum = 0; // 定义总成绩
for (int j = 0; j < sizeof(scores[0]) / sizeof(scores[0][0]); j++)
{
sum += scores[i][j]; // 累加成绩
}
cout << names[i] << "的总成绩是:" << sum << endl;
}
system("pause");
return 0;
}
标签:控制 外链 头文件 包含 最大 int start ota 个学生 转换
原文地址:https://www.cnblogs.com/zcf-blog/p/13262429.html