C语言一维数组

合集下载

C语言第六章_数组_2

C语言第六章_数组_2

if (a[i]>a[i+1])
{temp=a[i];a[i]=a[i+1];a[i+1]=temp;14}
#include <stdio.h> main(){ /*对10个整数排序*/
int a[10]={9, 8, 5, 4, 2, 0, 6, 1, 3, 7}, i, k; for (k=1;k<10;k++)
f0=1 (n=0m) ain(){
f1=1
(n=1) int i; long f [20]={1,1};
0 f1n=fn-1f+[0f]n-2 (nfo2r) (i=2;i<20;i++)
1
1
f[1]
2
2
f[2]
f[i]=f[i-2]+f[i-1];
3
3
f[3]
for(i=0;i<20;i++)
4
数组是具有一定顺序的若干同数据类型变 量的集合体。数组要有名称,要有规模。
一.一维数组定义
类型说明符 数组名[常量];
例如:int a[6]; a = = &a[0]
a
内存映象:编译时分配一片连续的内 存空间,数组名为该空间的首地址— —常量地址。
0 a[0]
1 a[1]
2 a[2]
3 a[3]
1
4 a[4]
4
一行一行地存储所有的数组 5
a[0][1] a[0][2] a[0][3] a[1][0] a[1][1]
元素,数组名为该空间的首 6 a[1][2]
地址——地址常量。
7 a[1][3]
8

c语言一维数组矩阵相乘

c语言一维数组矩阵相乘

c语言一维数组矩阵相乘下面是一个在C语言中实现一维数组矩阵相乘的示例代码:```c#include <stdio.h>#define ROWS_A 2#define COLS_A 3#define ROWS_B 3#define COLS_B 2void multiplyMatrix(const int* A, const int* B, int* C, int rowsA, int colsA, int colsB) {for (int i = 0; i < rowsA; i++) {for (int j = 0; j < colsB; j++) {C[i * colsB + j] = 0; // 初始化结果矩阵Cfor (int k = 0; k < colsA; k++) {C[i * colsB + j] += A[i * colsA + k] * B[k * colsB + j]; }}}}int main() {int A[ROWS_A][COLS_A] = {{1, 2, 3}, {4, 5, 6}};int B[ROWS_B][COLS_B] = {{1, 2}, {3, 4}, {5, 6}};int C[ROWS_A][COLS_B];multiplyMatrix((int*)A, (int*)B, (int*)C, ROWS_A, COLS_A,COLS_B);printf("Result:\n");for (int i = 0; i < ROWS_A; i++) {for (int j = 0; j < COLS_B; j++) {printf("%d ", C[i][j]);}printf("\n");}return 0;}```该代码中,我们首先定义了两个要相乘的矩阵A和B,然后定义了结果矩阵C。

《c语言教学资料》4数组

《c语言教学资料》4数组
部分初始化
如果只对部分元素进行初始化,则未初始化的元素将自动赋值为0。例如,`int a[3][4] = {{1},{2}}`,则只有第一行和第二行的第一列被初始化,其余元素为0。
初始化列表
多维数组的初始化
多维数组的引用
引用方式
多维数组的引用方式与一维数组类似,使用索引来访问元素。例如,`a[i][j]`表示第i行第j列的元素。
二维数组在各种算法和数据结构中都有广泛的应用,例如矩阵运算、动态规划等。
详细描述
二维数组可以用于实现各种算法和数据结构,例如矩阵运算、动态规划等。在矩阵运算中,二维数组可以方便地存储和操作矩阵数据。在动态规划中,二维数组可以用于存储子问题的解,以便递归地求解更大规模的问题。
二维数组的应用
04
CHAPTER
动态规划
多维数组的应用
05
CHAPTER
字符数组与字符串
字符数组的定义与声明
了解字符数组的基本定义和声明方式
总结词
字符数组是用于存储字符序列的数据结构,可以通过指定数组大小来声明一个字符数组。例如,char arr[100]表示声明一个能够存储100个字符的字符数组。
详细描述
掌握字符串在C语言中的表示方法
详细描述
在C语言中,二维数组是通过定义一个数组的数组来实现的。通常使用两个方括号[]来声明二维数组,例如int a[3][4]表示一个有3行4列的整型二维数组。
二维数组的定义与声明
二维数组的初始化可以通过多种方式进行,包括分别初始化每个元素和按行初始化。
总结词
在声明二维数组时,可以直接对每个元素进行初始化,例如int a[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}}。也可以按行对数组进行初始化,例如int a[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}},这种方式会自动将每行的元素分别赋给对应位置的元素。

c语言3维数组转化为一维数组类型

c语言3维数组转化为一维数组类型

c语言3维数组转化为一维数组类型下载提示:该文档是本店铺精心编制而成的,希望大家下载后,能够帮助大家解决实际问题。

文档下载后可定制修改,请根据实际需要进行调整和使用,谢谢!本店铺为大家提供各种类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by this editor. I hope that after you download it, it can help you solve practical problems. The document can be customized and modified after downloading, please adjust and use it according to actual needs, thank you! In addition, this shop provides you with various types of practical materials, such as educational essays, diary appreciation, sentence excerpts, ancient poems, classic articles, topic composition, work summary, word parsing, copy excerpts, other materials and so on, want to know different data formats and writing methods, please pay attention!从三维数组到一维数组:C 语言中的数据结构转化在C 语言中,数组是一种常见的数据结构,它可以存储多个相同类型的数据元素。

C语言基础(3)

C语言基础(3)
1. 数组元素引用
数组名[下标][下标]; 和 数组名[下标][下标]…; 其中:
下标是整型常数或表达式,该பைடு நூலகம்表示了数组元素(下标变量)
在多维数组中的位置,若下标值为实型数据系统会自动取整。 例如,定义语句为:double a[5][5], y; double a[5][5], y; a[2][3]=300; y=500; /*将a数组中2行3列元素赋值为300*/ /*将变量y赋值为500*/
T
a[j] < a[j-1]
F
a[j] a[j-1] 输出a[0]到a[N-1]
3.3.1 数组的常用排序方法
2. 选择排序(Select sorting) 选择排序的基本思想是在待排的n个数据中寻找最大(小)值,
并将其移动到最前面作为第一个数据;然后在剩下的n-1个
数据中用相同方法寻找最大(小)值,将其作为第二个数据; 以此类推直到处理完为止。算法描述为:
int a[3][4], matrix[10][10]; //定义了两个整型的二维数组a和matrix
其中a由3行4列共12个元素构成;matrix由10×10共100个元素组成。
float b[3][3][3]; //定义了一个3×3×3共27个元素构成的数组b
3.2.1 二维数组和多维数组的定义

定义数组时可以用“存储类型”加以说明,指定数组存储
单元分配到静态存储区还是动态存储区。
例如,一个静态的单精度实型数组可用下语句定义。
static float score[50];
3.1.1 一维数组的定义和初始化
2. 初始化数组:允许在定义数组时给数组初值。
数据类型名 数组名[存储单元数]={常量列表}; 其中:常量列表中两项间须用逗号分隔。

C语言一维数组

C语言一维数组

6
例题巩固
在C 语言中,引用数组元素时,其数组下标的 数据类型允许是 。 A)整型常量 B)整型表达式 C)整型常量或整型表达式 D)任何类型的表达式
C语言中,数组名代表 A.数组全部元素的值 B.数组首地址 C.数组第一个元素的值 D.数组元素的个数
合法的数组定义是 A.int a[ ]=”string”; B.int a[5]={0,1,2,3,4,5}; C.char a=”string”; D.char a[ ]={0,1,2,3,4,5};
以下程序的输出结果是________。 main( ) { int i,p=0,a[10]={1,5,9,0,-3,8,7,0,1,2}; for(i=1;i<10;i++) if(a[i]<a[p]) p=i; printf("%d,%d\n",a[p],p); } A) -3,4 B) 0,1 C) 9,2 D) 2,9
35
35
int a[5]
a[0] a[1] 第一轮 21 13 13 13 21 21
a[2] 90 90 90
a[3] a[4] 32 32 32 -1 -1 -1
13 13
21 21
32 32
90 -1
-1 90
第一轮的结果: 将最大的数移到了最后一个位置(n-1)。
int a[5]
a[0] a[1]
a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] 0 1 2 3 4 5 6 7 8 a[9] 9
数组a
max = a[0];
32
32
定义
main()
{ int i, max, x[10];

c语言一维大数组连续寻址和随机寻址

c语言一维大数组连续寻址和随机寻址

c语言一维大数组连续寻址和随机寻址一维大数组是指只有一个维度的数组,也就是只有一个索引来访问数组元素的数据结构。

在C语言中,一维大数组可以通过连续寻址和随机寻址两种方式来访问和操作数组元素。

连续寻址是指通过数组的起始地址和偏移量来计算出要访问的数组元素的地址。

在内存中,数组元素是连续存储的,每个元素占据相同的字节大小。

通过起始地址和偏移量的计算,我们可以直接计算出要访问的数组元素的地址,从而实现连续寻址。

这种方式的优点是访问速度快,因为计算地址的过程简单,不需要额外的访问操作。

然而,连续寻址的缺点是数组的大小必须在编译时确定,并且不能动态改变数组的大小。

随机寻址是指通过数组的起始地址和索引来计算出要访问的数组元素的地址。

在内存中,数组元素的地址是根据索引和起始地址进行计算的。

通过起始地址和索引的计算,我们可以定位到要访问的数组元素的地址,从而实现随机寻址。

这种方式的优点是数组的大小可以在运行时确定,并且可以动态改变数组的大小。

然而,随机寻址的缺点是访问速度相对较慢,因为需要进行额外的访问操作来计算地址。

在C语言中,我们可以使用下标运算符"[]"来访问和操作一维大数组。

通过指定数组的索引,我们可以直接访问数组中的元素。

例如,对于一个一维大数组a,我们可以使用a[i]来访问第i个元素。

当使用连续寻址方式时,计算数组元素的地址是简单的,只需要使用起始地址加上偏移量即可。

当使用随机寻址方式时,计算数组元素的地址需要使用起始地址加上索引乘以元素的大小来计算。

一维大数组的连续寻址和随机寻址方式在不同的场景中有不同的应用。

连续寻址方式适用于数组大小已知且不会改变的情况,例如静态数组或者全局数组。

由于连续寻址方式的访问速度快,适合对数组进行频繁的访问操作。

而随机寻址方式适用于数组大小不确定或者需要动态改变的情况,例如动态数组或者堆上的数组。

由于随机寻址方式的访问速度相对较慢,适合对数组进行较少的访问操作。

11《C语言程序设计》教案第四章数组(1)—一维数组

11《C语言程序设计》教案第四章数组(1)—一维数组

min_p=j;} printf(“the min is%d,position %d”,min,min_p);
} (5)数组在内存中的存放 例如 int data[3];则在内存中的状态如下:
1000 1002
1004
data[0] data[1] data[2]
讨论、思考题、作业: 实验指导书习题
f[0]=1;f[1]=1;f[2]=f[0]+f[1];f[3]=f[2]+f[1];依次类推找出 公式为: f[i]=f[i-1]+f[i-2]; 循环语句为:for(i=2;i<20;i++) 程序代码: main()
{ int i;
static int f[20]={1,1};
/*定义 20 个元素的数组
参考资料(含参考书、文献等):
叶斌 陈世强. C 语言程序设计. 北京:科学出版社 授课类型:理论课 讨论课□ 实验课□ 练习课□ 其他□ 教学方式:传统授课 双语□ 讨论□ 示教□ 指导□ 其他□ 教学资源:多媒体 模型□ 实物□ 挂图□ 音像□ 其他□
定义了一个二维数组 b,该数组由 9 个元素构成,其中每一个数组元素都属于浮点(实
数)数据类型。
数组
b
的各 个数据元 素依次
是:b[0][0],b[0][1],b[0][2],b[1][0],b[1][1],b[1][2],b[2][0],b[2][1],b[2][2](注意:下标从 0-2)。
每个数组元素也都可以作为单个变量使用。
例如:int a[10]={0,0,0,0,0,0,0,0,0,0}; 或 int a[10];系统会对所有数
组元素自动赋 0 值。
4)在对全部数组元素赋初值时,可以不指定数组长度。

一维数组(C语言)

一维数组(C语言)
符数组名,而不是数组元素名。 printf(“%s〞,c[1]); 错误
字符数组
C、如果数组长度大于字符串实际长度,也只输出到遇‘\0’结束。 D、如果一个字符数组中包含一个以上‘\0’,那么遇到和第一个‘\0’ 就结束。〔利用scanf输入字符串,空格可作为结束符。〕
例:char str[13]; scanf(“%s〞,str);
字符数组
〔3〕给字符数组元素逐个赋初值。 char str[9]; str[0]=‘H’;str[1]=‘e’;str[2]=‘\0’;
应注意:用字符数组来存放字符串时,假设是逐个字符 赋值给数组元素,要在最后一个字符之后加上字符串结 束标志‘\0’。 用逐个字符给字符数组赋初值,对字符串的存取不太方 便。
printf(“\n〞);
}
B、使用getchar putchar getch getche函数。
字符数组
〔2〕将整个字符串一次输入或输出。用%s格式符。 例:char c[ ]=“china〞; printf(“%s〞,c);
结果为:china
注意: A、输出字符不包括结束符‘\0’; B、用%s格式符输出字符串时,printf 函数中的输出项是字
int a[10], b[10], k; for (k=0;k<10;k++) scanf(“%d〞,&a[k]); b=a; /*error*/ for(k=0;k<10;k++) b[k]=a[k];
一维数组
(3) 在使用数组元素时,数组元素中的下标表 达式的值必须是整型。 下标表达式值的下限为0,值的上限为该数 组元素的个数减1。 使用数组时注意其下标不要越界。如果下 标越界,程序无法得到正确的结果。

C语言一维数组的定义和引用数组

C语言一维数组的定义和引用数组

printf("a[%d][%d]=%f\n",i,j,a[i][j]);}
}
3.多维数组的定义和在内存中的存放顺 序:
如 int a[2][3][4]; 共24个元素,在内存中排列的顺序是 :第三维变化最快,然后是第二维,第 一维最慢。
7.2.2 二维数组的引用 形式:数组名[下标][下标] 其中:下标是整型或字符型的常量,变量或表 达式。(定义时不能使用变量)
运行:input 6 numbers: 输入:9 8 5 4 2 0 输出:0 2 4 5 8 9
7.2 二维数组的定义和引用 7.2.1 二维数组的定义 1.一般形式:类型说明符 数组名[常量表达式][常量 表达式]
如:float a[3][4] 定义数组a具有三行四列 在C中,可将二维数组看着是特殊形式的一维数组。
int a[5] a[0], a[1], a[2], a[3], a[4] 5个元素 ,下标从0 ~ 4
注意:
在Turbo C 中超过定义的数组下标元素是可以引用的,系 统不作检查。
例T7-0-1.c
main( )
{int i, a[5];
for(i=0;i<=4;i++)
printf (a[%d]=%d\ n,i,a[i]=i+1);
int a[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}};
max=a[0][0];
for(i=0;i<=2;i++)
for(j=0;j<=3;j++) if(a[i][j]>max) {max=a[i][j]; r=i;c=j}
1 2 34 a= 9 8 7 5

C语言编程一维数组的使用

C语言编程一维数组的使用

实验三一维数组的使用【实验目的】1掌握一维数组、二维数组的定义和初始化方法。

2熟悉使用字符数组处理字符串处理的方法。

【实验内容】1 •输入10个学生的成绩,求平均成绩,并将低于平均成绩的分数打印出来编写程序:#in elude <stdio.h>void readdata (float score[10]){int i;printf("依次输入10个学生的成绩:\n");for(i=0;i<10;i++)scan f("%f",&score[i]);return;}float aver(float score[10]){float sum;int i;for(sum=0,i=0;i<10;i++)sum=sum+score[i];return(sum/10);}void prin tff(float score[10],float ave) { int i;printf("低于平均分的成绩为:\n");for(i=0;i<10;i++) if(score[i]<ave) prin tf("%8.2f",score[i]); return;}mai n(){void readdata (float score[10]);float aver(float score[10]);void prin tff(float score[10],float ave); float ave,score[10]; readdata(score);ave=aver(score);prin tf("average=%6.2f\n",ave);prin tff(score,ave);}2、将一个数组中的值按逆序重新存放。

例如,原来顺序为8, 6, 5, 4, 1。

要求改为1,4, 5, 6, 8<编写程序:#include viostream.h>int main(){int i,j,a[5]={8,6,5,4,1},b[5];for(i=0,j=4;iv5,j>=0;i++,j--)b[j]=a[i];for(i=0;i<5;i++)a[i]=b[i];for(i=0;i<5;i++)coutv<a[i]vv"\t";}3、应用一维数组,对10个从键盘输入的数进行冒泡排序,使其按照从大到小的顺序输出。

C语言——数组

C语言——数组

活动3:字符数组
字符串与字符数组的区别 字符串也是字符数组,只是要求以’\0’作为结束符。 如: char s[80]={ ‘A’,’B’,’C’,’D’,’E’,’\0’}; 或: char s[80]= “ABCDE”; A
s[0]
B
s[1]
C
s[2]
D
s[3]
E
s[4]
\0
s[5]
……
活动3:字符数组
模块6:数组
活动1:一维数组
1、一维数组的定义及引用 定义方式: 数组名[常量表达式] 类型说明符 数组名[常量表达式]
活动1:一维数组
如:int a[5]; 定义一个具有5个元素 的数组,其下标从0 到4,如右图示。
数组a a[4] a[3] a[2] a[1] a[0]
活动1:一维数组
注意问题: 1、数组名规则与变量名相同; 2、常量表达式中不能包含变量; 3、下标从0开始。
数组a
4
a[0]
8
15
3
10
6
a[1] a[2] a[3] a[4] a[5]
活动1:一维数组
应用举例: 例3:冒泡排序法。 阅教材P101例 6.3
a[3]与a[4]交换 数组a
4
a[0]
8
3
15
10
6
ห้องสมุดไป่ตู้
a[1] a[2] a[3] a[4] a[5]
a[3]与a[4]交换 数组a
4
a[0]
8
3
10
[0] a[0] a[1] [1] [2]
2 6
3 8
5 9
活动2:二维数组
应用举例:教材P106例6.5

C语言第七章

C语言第七章

4、strcpy(字符数组1,字符数组2):
例:main()
把“字符串2”的值拷贝到“字符串1”中。
{char str1[10]; char str2[ ]="Chinese"; strcpy(str1,str2); puts(str1); } 输出: Chinese 说明: (1)字符数组1的长度不应小于字符串2的长度。 (2)“字符数组1”必须写成数组名形式,“串2”可以是字符数 组名,也可以是一个字符串常量。如:strcpy(str1,“China”); (3)拷贝是‘\0‟一起拷贝。 (4)不能用赋值语句将一个字符常量或字符数组直接赋给一个 字符数组。 (5)可以用strcpy函数将字符串2中前面若干个字符拷贝到字符 数组1中去。 例如:strcpy(str1,str2,2);
3、部分元素赋值: int a[3][4] = {{1},{5},{9}}; 1 0 0 0 5 0 0 0 9 0 0 0
仅对a[0][0]、a[1][0]、a[2][0]赋值,编译器自动为未赋
值元素指定初值0。
4、如果对全部元素赋初值,则第一维的长度可以 不指定,但必须指定第二维的长度。 int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; 与下面定义等价: int a[ ][4]={1,2,3,4,5,6,7,8,9,10,11,12};
[例6.6]: main() { int i; char c1[ ] = {"How are you?"}; char c2[15]; scanf("%s", c2 ); for(i=0;i<12;i++) printf("%c", c2[i] ); printf("%s", c1 ); } 程序运行时:输入:abcdefghijklmno 结果:abcdefghijklHow are you?

语言程序设计 一维数组的定义和初始化

语言程序设计 一维数组的定义和初始化

数组元素类型 数组名
定义了100个元素,分别为a[0]、a[1]、a[2]、……、a[99],相当于100个int类型 的变量,每一个称为数组中的一个元素,这些元素在内存中的存储示意如下。
a[0]
a[1]
a[2]
……
a[99]
C语言 一维数组定义
# include <stdio.h>
int main( )
C语 言 程 序 设 计
一维数组的定义和 初始化
C语言 数组类型的引入
例:设计程序实现,输入100个整数,反序输出。
01
分析:
02
因为要反序输出,所以直到最后一个数输入前我们无法输出,必须保存这100个整数的值。 应用前面所学的知识,我们进行如下的数据定义和输入函数调用。
a1
a2
a3
……
a100
int main( )
//下标值由大到小遍历 // 输出a[i]的值
C语言 一维数组元素的引用
如何使两个数组的值相等?
main()
{
int a[5] = {1,2,3,4,5}, b[5];
b = a; }
×
原因:数组名表示数组的首地址,其 值不可改变!
解决方法:
方法1:逐个元素赋值
b[0]=a[0];
b[1]=a[1]; b[2]=a[2];
C语言 一维数组的初始化
定义数组后,数组元素的初值是随机数,可以在定义数组的同 时对数组元素进行初始化。
int a[5] = { 12, 34 }; √ int a[5] = { 12, 34, 0, 0, 0 }; √ int a[5] = { 0 }; √ int a[ ] = { 12, 34, 56 ,78 ,9 }; √ int a[5] = { 12, 34, 56 ,78 ,9,18,20 }; ×

《C语言程序设计》课件 第五章 数组

《C语言程序设计》课件 第五章 数组
若二维数组名a代表的起始地址为5948,则它的三个元 素a[0]、a[1]和a[2]分别对应了起始地址5948、5956和 5964。
a(5948)
a[2](5964) a[1](5956) a[0](5948) 图 5-10
a[2][1] (5968) a[2][0] (5964) a[1][1] (5960) a[1][0] (5956) a[0][1] (5952) a[0][0](5948)
return 0;
}
5.1.4一维数组程序举例
3.用选择法对输入的n个学生的单科成绩进行 从小到大排序。
编程思路: 直接选择排序的过程是:首先在所有数据中找出值 最小(最大)的数据,把它与第1个数据交换,然后 在其余的数据中找出值最小(最大)的数据,与第2 个数据交换......依次类推,这样,n个数据经过n-1轮 交换后可得到有序结果。
printf("%3d ",a[i]); printf("\n"); return 0; }
5.1.3 一维数组的初始化 5.1.3 一维数组的初始化
数组初始化常见的格式:
1.用大括号括起来的常量表达式列表,常量表达式 之间用逗号进行分隔: int a[10]={1,2,3,4,5,6,7,8,9,10};
注意:
不要将a[i][j]写成a[i,j],否则编译系统会将逗号分隔 符作为逗号运算符处理,即将a[i,j]视为a[j]。
5.2.2二维数组元素的引用
可以将二维数组看成是特殊的一维数组。
例如,二维数组a[3][2]可以看成是长度为3的一维数组, 所含的3个数组元素分别为:a[0]、a[1]、a[2]
for(i=0;i<3;i++) for(j=0;j<5;j++)

C语言程序设计 一维数组

C语言程序设计 一维数组

8
如果

我们对变量可以编号引用,例如a8可曰之“第8个头文字a 的变量”,那么

我们可以写出如下的代码
void main() { int a1,a2,a3,a4,a5,a6,a7,a8,a9,a10, sum=0; for(int i=1; i<=10; i++) { scanf(“%d”, &ai ); sum=sum+ ai ; } float average=sum/10; for(int i=1; i<=10; i++) if (ai >=average) printf(“%d\n”, ai ); }
数组首地址
a[97]
a
a[1]
a[0]

11
数组的定义

数组的定义:我们定义变量一样定义数组名和类型,并定义数组 大小表示数组中有多少个元素。用方括号表示数组大小 这里是 数组的 数组 堆栈框 定义数组就象定义变量一样,同时为数组分配内存。 图。 main() main { char letters[4]; int values[3]; ….. } letters
庆幸

幸亏只输入10个学生成绩,如果要求输入10000个 学生 ?
我们已经知道了循环语句能以简洁的程序完成大量的重复操作,那么,能 不能用循环语句来顺序执行10个数a1、a2…a10个数与average的比较呢? 不能。因为我们无法让循环体中的语句在这次执行时是“if (a1 > average)”,下次执行时变成“if (a2> average)”,再下次又变成“if (a3 > average)”。循环做的是相似的操作,更确切地说,每次循环所执行 的语句必须相同,虽然执行的效果可以不同,例如:for(int i=1;i<=10;i++)printf(“%d”,i);在屏幕上输出的依次是1、2、3…10,但 那是靠语句中变量值的改变,而不是靠语句中变量名的改变来实现的:

C语言 数组1

C语言 数组1

程序编写过程: #include <stdio.h> main( ) { int i, x, a[5],flag=0 ; for ( i=0; i<5; i++ )输入数据, 赋给数组元素 scanf("%4d",a[i]); printf("Input x:"); scanf("%d",&x); 输入需查找的数 printf("\n"); for( i=0; i<5; i++ ) 逐个查找数 if ( x==a[i] ) {printf("下标值=%d\n", i); flag=1; 若找到,输出下标 break;}
fib[0]=fib[1]=1
fib 1 1 2 3 5 8 13 21 34 55
+ + + + + + + +
fib[i]=fib[i-1]+ fib[i-2]
程序编写过程: #include <stdio.h> main( ) { int i;
运行结果:
1 1 2 3 5 8 13 21 32 55
第7章

数组


常用于处理大批量数据 数据特点:存在内在联系 数组——具有相同数据类型的变量集合 这些变量都有相同名字,但下标不同 称这些变量为数组元素 数组元素在内存中连续存放 只有一个下标——一维数组 有两个下标——二维数组
本章将介绍的内容

一维数组


二维数组
字符串
一维数组
数组名 [ 下标 ]
例如: a[2],b[i],b[i+1]是合法引用
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

例2、 用冒泡法对 个数排序 、 用冒泡法对10个数排序
38 49 38 49 65 76 97 13 97 76 13 97 27 27 97 30 30 97 初 始 n=8 38 49 65 13 76 13 27 76 27 30 76 30 76 97 第 一 趟 38 49 13 65 65 27 13 30 27 65 30 65 76 第 二 趟 第 三 趟 趟 四 趟 第 五 趟 38 49 13 49 13 27 49 30 27 30 49 65 38 13 38 38 27 13 30 27 38 30 49 13 27 30 38 13 13 27 27 30
例3、 用简单选择法对 个数排序 、 用简单选择法对10个数排序
k i=1 初始: [ 49 13 k 38 j k i=2 一趟: 13 65 j 97 j 97 j 97 [97 49 49 49 76 j 76 j 76 76 [76 65 65 k 49 13 j 27 ] k j
[38 65 27 j
例4、 有十个学生的成绩,求平均分 、 有十个学生的成绩, 92 85 68 75 54 88 98 45 61 79
a[0] 92 85 68 75 54 88 98 45 61 79
#include <stdio.h> main() { int k , a[10]; for(k=0;k<10;k++) scanf(“%d”,&a[k]); for(k=0;k<10;k++) sum+=a[k]; printf(“Average is %d\n”,sum/10); }
#include <stdio.h> #define SIZE 10 main() { int x[SIZE],i,max,min; printf("Enter 10 integers:\n"); for(i=0;i<SIZE;i++) { printf("%d:",i+1); scanf("%d",&x[i]); } max=min=x[0]; for(i=1;i<SIZE;i++) { if(max<x[i]) max=x[i]; if(min>x[i]) min=x[i]; } printf("Maximum value is %d\n",max); printf("Minimum value is %d\n",min); }
第 六
第 七 趟

#include <stdio.h> main() { int a[11],i,j,t; for(i=0;i<10;i++) scanf("%d",&a[i]); printf("\n"); for(j=1;j<10;j++) for(i=1;i<=10-j;i++) if(a[i]>a[i+1]) { t=a[i]; a[i]=a[i+1]; a[i+1]=t; } for(i=0;i<10;i++) printf("%d ",a[i]); }
a和b为有10个元素的整型数组 比较两数组对应元素 变量n,m,k记录a[i]>b[i], a[i]==b[i], a[i]<b[i]的个数 最后 若n>k,认为数组a>b 若n<k,认为数组a<b 若n==k,认为数组a==b
#include <stdio.h> main() int large(int x,int y) { int a[10],b[10],i,n=0,m=0,k=0; printf("Enter array a:\n"); { int flag; for(i=0;i<10;i++) if(x>y) flag=1; scanf("%d",&a[i]); else if(x<y) flag=-1; printf("Enter array b:\n"); else flag=0; for(i=0;i<10;i++) return(flag); scanf("%d",&b[i]); } for(i=0;i<10;i++) { if(large(a[i],b[i])==1) n=n+1; else if(large(a[i],b[i])==0) m=m+1; else k=k+1; } /* Output */ }
1 2 x 1 2 y x 2 1 y 交换 a 1 2 返回
a a[0] a[1]
1 2 调用前
a a[0] a[1]
调用
地址传递
#include <stdio.h> void swap2(int x[]) { int z; z=x[0]; x[0]=x[1]; x[1]=z; } main() { int a[2]={1,2}; swap2(a); printf("a[0]=%d\na[1]=%d\n",a[0],a[1]); }
值传递
#include <stdio.h> void swap2(int x,int y) { int z; z=x; x=y; y=z; } main() { int a[2]={1,2}; swap2(a[0],a[1]); printf("a[0]=%d\na[1]=%d\n",a[0],a[1]); }
例6、 两个数组大小比较 、
0 1 2 3 4 5 n=0 m=0 k=0 a 12 23 56 10 76 88 n=0 m=0 k=1 i i i i i i n=0 m=1 k=1 b 43 23 21 98 66 1 2 3 4 5 n=1 m=1 k=2 n=2 m=1 k=2 n=3 m=1 k=2
49 38 ] 27 j 49 49 97 [97 76 j 38 ] 65 ] 65 ] 76 ] [97 ]
二趟: 13 三趟: 13 四趟: 13 五趟: 13 六趟: 13
27 27 27 27 27
[65 38 38 38 38
#include <stdio.h> main() { int a[10],i,j,k,x; printf("Input 10 numbers:\n"); for(i=0;i<10;i++) scanf("%d",&a[i]); printf("\n"); for(i=1;i<10;i++) { k=i; for(j=i+1;j<=10;j++) if(a[j]<a[k]) k=j; if(i!=k) { x=a[i]; a[i]=a[k]; a[k]=x;} } printf("The sorted numbers:\n"); for(i=0;i<10;i++) printf("%d ",a[i]); }
a
a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9]
个学生,每个学生 门课成绩,求每人的平均成 例5、 有 M 个学生 每个学生 N 门课成绩 求每人的平均成 、 并安平均成绩从大到小排序,按排序结果输出。 绩,并安平均成绩从大到小排序,按排序结果输出。 如原始数据为:
实参用数组名
float average(int stu[10], int n) { int i; float av,total=0; for( i=0; i<n; i++ ) total += stu[i]; av = total/n; return av; }
例8、数组元素与数组名 、 作函数参数比较
形参用数组定义,
int stu[ ]
例7、 求学生的平均成绩 、
#include <stdio.h> float average(int stu[10], int n); void main() { int score[10], i; float av; printf("Input 10 scores:\n"); for( i=0; i<10; i++ ) scanf("%d", &score[i]); av=average(score,10); printf("Average is:%.2f", av); }
一维数组程序举例
个整数存入数组, 例1、 读10个整数存入数组,找出其中最大值和最小值 、 个整数存入数组 步骤: 1. 输入:for循环输入10个整数 2. 处理: (a) 先令max=min=x[0] (b) 依次用x[i]和max,min比较(循环) 若max<x[i],令max=x[i] 若min>x[i],令min=x[i] 3. 输出:max和min
数学 英语 化学 物理
输出数据格式为:
数学 英语 化学 物理
1 2 3
62 75 54 88 91 79
68 98 81
75 45 70
3 2 1
91 54 62
79 81 70 88 98 45 75 68 75
80.25 71.25 70.0
– 数组名作函数参数
• • • • 地址传递 在主调函数与被调函数分别定义数组,且类型应一致 形参数组大小(多维数组第一维)可不指定 形参数组名是地址变量
相关文档
最新文档