一维数组
1. 学习内容
1.1 参考
- 《程序设计基础》6.1.1 一维数组的定义、 6.1.2 数组初始化
1.2 数组初始化
数组可以通过一串值进行初始化,而不用显式指定数组大小。例如:
int v1[] = {1, 2, 3, 4};
char v2[] = {'a', 'b', 0};
上面v1的类型为int[4],v2的类型为char[3]。
当提供的初始化元素少于指定的数组大小时,编译器会自动补充0。例如:
int v5[8] = {1, 2, 3, 4};
//相当于
int v5[] = {1, 2, 3, 4, 0, 0, 0, 0};
1.3 数组的访问
#include <iostream> //C++方式
#include <stdio.h> //C的输入输出
using namespace std;
int main() {
//初始化时指定初始值
int arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
// 通过下标赋值
arr[3] = 11;
//通过指针访问
int *p = arr;
p += 4;
cin >> *p; //输入20
// C写法,arr是一个地址,可以直接增加
scanf("%d", arr + 8); //输入28
for (int i = 0; i < 10; ++i) {
if (i > 0)
cout << ",";
cout << arr[i];
}
cout << endl;
//输出:1,2,3,11,20,6,7,8,28,10
}
2. 代码示例
3. 作业
1、
【NOIP 2018 普及组初赛 q21】阅读程序写结果:
#include <stdio.h>
int n, d[100];
bool v[100];
int main() {
scanf("%d", &n);
for (int i = 0; i < n; ++i) {
scanf("%d", d + i);
v[i] = false;
}
int cnt = 0;
for (int i = 0; i < n; ++i) {
if (!v[i]) {
for (int j = i; !v[j]; j = d[j]) {
v[j] = true;
}
++cnt;
}
}
printf("%d\n", cnt);
return 0;
}
输入:10 7 1 4 3 2 5 9 8 0 6
4. for语句的格式和执行过程
graph TD
exp1(求解表达式1) --> exp2{测试表达式2};
exp2 -->|真| stmt(执行循环体语句);
exp2 ---->|假| stmt_next(执行for的下一条语句);
stmt --> exp3(求解表达式3) --> exp2;