没有合适的资源?快使用搜索试试~ 我知道了~
第六章 利用数组处理批量数据1
需积分: 0 0 下载量 52 浏览量
2022-08-03
20:54:47
上传
评论
收藏 343KB PDF 举报
温馨提示
试读
12页
第六章 利用数组处理批量数据1
资源详情
资源评论
资源推荐
第六章 利⽤数组处理批量数据
作者:⽯璞东
参考资料:《C程序设计(第四版)》谭浩强
前⾔
数组:同⼀类性质的数据
数组是⼀组有序数据的集合,数组中各数据的排列是有⼀定规律的,下标代表数据在数组中的序
号。
⽤⼀个数组名和下标来唯⼀地确定数组中的元素。
数组中的每⼀个元素都属于同⼀个数据类型,不能把不同类型的数据(如学⽣的成绩和学⽣的性
别)放在同⼀个数组中。
6.1 怎样定义和引⽤⼀维数组
6.1.1 怎样定义⼀维数组
要使⽤数组,必须在程序中先定义数组,即通知计算机:由哪些数据组成数组,数组中有多少元素,属
于哪个数据类型,定义数组的⼀般形式为: 类型符 数组名[常量表达式]; 。
C 语⾔不允许对数组的⼤⼩做动态定义,即数组的⼤⼩不依赖于程序运⾏过程中变量的值。
如果在被调⽤的函数(不包括主函数)中定义数组,其⻓度可以是变量或⾮常量表达式,如以下代码所
示:
在调⽤函数 func 时,形参 n 从实参得到值,这种情况称为可变⻓数组,允许在每次调⽤ func 函数
时, n 有不同的值,但是在执⾏函数时, n 的值是不变的,数组⻓度是固定的。
如果指定数组为静态存储⽅式,即 static int a[2*n] ,则不能⽤可变⻓数组。
void func(int n){
int a[2*n];
...
}
1
2
3
4
6.1.2 怎样引⽤⼀维数组元素
只能引⽤数组元素⽽不能⼀次整体调⽤整个数组全部元素的值,其引⽤形式为: 数组名[下标] 。
例6.1 逆序输出。
6.1.3 ⼀维数组的初始化
对全部数组元素赋予初值,如 int a[5]={1,2,3,4,5} 。
可以只给数组中的⼀部分元素赋值,如 int a[10]={0,1,2,3,4} 定义 a 数组有10个元素,但花括
号内只提供5个初值,这表示只给前⾯5个元素赋初值,系统⾃动给后⾯5个元素赋初值为0。
如果想使⼀个数组中全部元素值为0,可以写成 int a[10]={0,0,0,0,0,0,0,0,0,0} 或 int
a[10]={0} 。
在对全部数组元素赋初值时,由于数据的个数已经确定,因此可以不指定数组⻓度,如 int a[5]=
{1,2,3,4,5} 可以写成 int[]={1,2,3,4,5} 。
【注】:如果在定义数值型数组时,指定了数组的⻓度并对其进⾏初始化,凡未被“初始化列表”指定的
数组元素,系统会⾃动将它们初始化为0,如果是字符型数组,则初始化为 '\0' ,如果是指针型数组,
则初始化为 NULL ,即空指针。
6.1.4 ⼀维数组程序举例
例6.2 斐波那契数列
#include<stdio.h>
int main(){
int i,num[10];
float avg = 0.0,sum = 0.0;
printf("请输⼊数组元素:");
for(i=0;i<10;i++){
scanf("%d",&num[i]);
}
for(int j = 9;j>=0;j--){
sum += num[j];
printf("%3d",num[j]);
}
printf("\n");
avg = sum/10;
printf("平均值为:%f\n",avg);
return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include<stdio.h>
int main(){
int i;
int f[20]={1,1};
1
2
3
4
例6.3 输⼊10个数字,并按照从⼩到⼤顺序输出。
6.2 怎样定义和引⽤⼆维数组
printf("斐波那契数列前20项为:\n");
for (i = 2; i < 20; i++) {
f[i] = f[i-2]+f[i-1];
}
for (i = 0; i < 20; i++) {
if (i%5 == 0) {
printf("\n");
}
printf("%12d",f[i]);
}
printf("\n");
return 0;
}
5
6
7
8
9
10
11
12
13
14
15
16
17
#include<stdio.h>
int main(){
int arr[10],t;
printf("请输⼊数组元素:");
for (int i = 0; i < 10; i++) {
scanf("%d",&arr[i]);
}
printf("顺序输出结果为:");
for (int i = 0; i < 10; i++) {
printf("%2d",arr[i]);
}
printf("\n");
printf("排序后的结果(由⼩到⼤)为:");
for (int i = 0; i < 9; i++) {
for (int j = 0; j < 9-i; j++) {
if(arr[j]>=arr[j+1]){
t = arr[j];
arr[j] = arr[j+1];
arr[j+1] = t;
}
}
}
for (int i =0; i < 10; i++) {
printf("%2d",arr[i]);
}
printf("\n");
return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
剩余11页未读,继续阅读
杏花朵朵
- 粉丝: 19
- 资源: 332
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0