711一维数组的定义定义方式类型说明符数组名整型常量

合集下载

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

一维数组的定义(精)

一维数组的定义(精)
可以用赋值语句或输入语句使数组中的元 素得到值,但占运行时间,同时也可以使数组 在程序运行之前初始化,即在编译期间使之得 到初值。
对数组元素的初始化可以用以下方法实现: ⒈ 在定义数组时,对数组元素赋以初值。 如: int a[10]={0,1,2,3,4,5,6,7,8,9}; ⒉ 可以只给一部分元素赋值。 如: int a[10]={0,1,2,3,4}; 表示只给前5个元素赋初值,后5个元素自动赋以0 值。 ⒊ 对static数组不赋初值,系统会对所有元素自动赋 以0值。 即, 如果想使数组a中全部元素值为0,可以这样定 义数组: static int a[5]
a[0] a[2] a[4] a[1] a[3] 0 0 0 0 0
也可以 int a[5]={0};
⒋ 在对全部数组元素赋初值时,可以不指定数组长度。 static int a[5]={1,2,3,4,5};
static int a[ ]={1,2,3,4,5};
例2.用数组来处理求Fibonacci数列问题(求前40项)
b
b[0][0] b[1][0] b[2][0]
b[0][1] b[1][1] b[2][1]
for(i=0;i<=1;i++) for( j=0;j<=2;j++) b[j][i]=a[i][j];
main( ) {static int a[2][3]={{1,2,3},{4,5,6}}; int b[3][2], i, j; printf("array a:\n"); for(i=0;i<=1;i++) {for(j=0;j<=2;j++) printf("%5d",a[i][j]); printf("\n"); } for(i=0;i<=1;i++) for( j=0;j<=2;j++) b[j][i]=a[i][j]; printf("array b:\n"); for(i=0;i<=2;i++) {for(j=0;j<=1;j++) printf("%5d",b[i][j]); printf("\n"); } }

一维数组的定义(精)

一维数组的定义(精)
第6章
§6.1.1
数 组
一维数组的定义和引用
一、一维组的定义
⒈ 定义方式: 类型说明符 数组名[整型常量表达式]; 例:int a[10]; ⒉ 说明: ① 数组名的定名规则和变量名相同,遵循标识符定名规 则。 ② 数组名后的常量表达式用[ ]括起来。 ③ 常量表达式表示数组元素的个数,即数组长度。 例: a[10]表示数组a中包括10个元素,分别为 a[0]~a[9]
例1.1 main( ) {int i,a[10]; 通过赋值语句给 for (i=0;i<=9;i++) 数组元素赋值 a[i]=i; (i=9;i>=0;i-) for (i=0;i<=9;i++) (i=0;i<=9;i++) printf("%4d",a[i] ); a[9-i]); a[i]); }
a[0] a[2] a[4] a[1] a[3] 0 0 0 0 0
也可以 int a[5]={0};
⒋ 在对全部数组元素赋初值时,可以不指定数组长度。 static int a[5]={1,2,3,4,5};
static int a[ ]={1,2,3,4,5};
例2.用数组来处理求Fibonacci数列问题(求前40项)
f[0] f[1] f[2] f[3] f[4] f[5] f[6] f[7] f[8] f[9] .............
1
1
2 0
3 0
5 0
8 0
13 0
21 0
34 0
55 0
.........
main( ) { int i; static long int f[40]={1,1}; for(i=2;i<40;i++) f[i]=f[i-2]+f[i-1]; for(i=0;i<40;i++) { if(i%5= =0) printf("\n"); printf("%12ld",f[i]); } }

在C语言中,一维数组的定义方式为:类型说明符数组名——

在C语言中,一维数组的定义方式为:类型说明符数组名——

在C语言中,一维数组的定义方式为:类型说明符数组名——在C语言中,一维数组的定义方式为:类型说明符数组名——例:int array[10];含义:定义了一个数组,数组名为array,有10个元素,元素的类型均为整型。

这10个元素名分别是:array[0]、array[1]、....、array[9]。

在C语言中,一维数组的定义方式:类型说明符数组名[元素个数]其中,类型名确定所有元素的数据类型,元素个数给定数组要包含的变量个数,它可以使用表达式形式,但该表达式中只能出现变量常量和运算符。

常用的类型:char ,int ,long .float,double.数组元素的一般表示形式是:数组名[下标]其中,下标可以使用表达式形式,但必须是整型而且有确定的值,取值范围是0~元素个数-1.注意:引用数组元素时不应使用超范围的下标,因为对这种情况编译时系统并不报错,所以编写程序时要格外注意。

C语言中一维数组的最长维数是多少?谢谢!ANSI C89标准中规定,一个数组的尺寸(下标)必须是一个整型常量表达式以便于在编译时计算大小,而这里的所谓常量(或者常量表达式的运算结果),一般是指unsigned int。

16位编译器(比如Turbo C)中,unsigned int为16位,因此数组最多32767个数据。

32位编译器(比如Visual C++ 6.0)中,unsigned int为32位,因此数组最多4294967295个数据。

以上结论为理论值。

实际上,在VC++中,我们定义一个259025元素的整型数组,虽然可以编译通过,但是我们仍将得到一个运行时错误(runtime error)。

这主要跟堆和栈的大小有关,详细情况请查阅操作系统相关资料。

错误代码范例:VC++ 6.0 中void main(){int a[259025]; 运行时错误,259024是ok的。

char b[259025]; ok。

char c[1036097]; 运行时错误,1036096是ok的。

C试题-在c语言中文,一维数组的定义方式为:类型

C试题-在c语言中文,一维数组的定义方式为:类型

C试题一、选择题:1、以下对一维整型数组a的正确说明是A int a(10);B int n=10,a[n];C int n;D #define SIZE 10scanf(“%d”,&n);int a[SIZE];int [a];2、若有说明:int a[10];则对a数组元素的正确引用是A a[10]B a[3.5]C a (5)D a [10-10]3、在c语言中文,一维数组的定义方式为:类型说明符数组名A[常量表达式] B[整型表达式]C[整型常量]或[整型表达式]D[整型常量]4、以下能对二维数组a进行正确初始化的语句是A int a[2][]={{1,0,1},{5,2,3}};B int a[][3]={{1,2,3},{4,5,6}};C int a[2][4]={{1,2,3},{4,5},{6}}D int a[][3]={{1,0,1},{},{1,1}};5、若有说明:int a[3][4]={0};则下面正确的叙述是A只有元素a[0][0]可得到初值0B 此说明语句不正确C 数组a中文各元素都可得到初值,但其值不一定为0D 数组a 中每个元素均可得到初值06、以下各组选项中,均能正确定义二维实型数组a的选项是A float a[3][4];B float a(3,4);float a[] [4]; float a[3][4];float a[3][]={{1},{0}} float a[][]={{0},{0}};C float a[3][4];D float a[3][4];static float a[][4]={{0},{0}}; float a [3][];auto float a [][4]={{0},{0},{0}}; float a[][4]10、下面程序中文有错误的行是(每行程序前面的数字表示行号)1 main()2 {3 int a[3]={1};4 int i;5 scanf(“%d”,&a);6 for (i=1;i<3;i++) a[0]=a[0]+a[i];7 printf(“a[0]=%d\n”,a[0]);8 }A 3B 6C 7D 511、若二维数组a有m列,则计算机任一元素a[i][j]在数组中文位置的公式为(假设a[0][0]位于数组的第一个位置上。

一维数组

一维数组

③C程序运行时,编译系统并不检查数组元素的下标是否越界, 需要编程人员自己保证数组元素的下标不要越界。 例如,语句float a[8]; int x=2; 数组元素a[0]、a[6]、a[5+1]、 a[x]、a[3*x]都是合法引用;而a[-5]、a[8]、a[5.2]是非法的引 用方式。注意,a[8]虽然非法,但是编译系统不报错。对a[8]的 操作实际是对内存其他空间的操作,因此可能造成严重后果。
5.1.3 一维数组的初始化
数组的初始化就是给数组元素赋初值。数组的初始化操 作既可以在数组定义之后进行,也可以在数组定义时完成。 如果在数组定义之后进行初始化操作,则只能对每个数 组元素一一赋值。例如, int arr[10],i; for(i=0;i<10;i++) arr[i]=i; 如果在定义数组时完成数组的初始化操作,则需要将数组 元素的初值依次放在一对花括弧中,并用赋值号与数组连接。 定义数组时赋初值的形式为: 类型说明符 数组名[常量表达式]={初值列表};
5.1.4 一维数组应用举例 【例5.1】求10个整数的平均值。 解题思路:输入10个整数→求和→再求平均值→输出结果。 #include “stdio.h” void main( ) { int a[10], i; float ave,sum; printf("\nplease enter 10 numbers:\n"); for(i=0;i<10;i++) /*输入元素*/ scanf("%d",&a[i]); sum=0; for(i=0;i<10;i++) /*求和*/ sum=sum+a[i]; ave=sum/10; /*求平均值*/ for(i=0;i<10;i++) printf("%6d",a[i]); printf("\n average =%7.2f",ave); }

一维数组的定义和引用(精)

一维数组的定义和引用(精)

6.2
二维数组的定义和引用
6.2.1 二维数组的定义 当数组中的每个元素带有两个下标时,称这样的数组 为二维数组,其中存放的是有规律地按行、列排列 的同一类型数据。所以二维数组中的两个下标,一 个是行下标,一个是列下标。 二维数组的定义格式: 类型说明符 数组名[常量表达式][常量表达式]; 例如:float a[3][4],b[5][10];
int a[n];
6.1.2 一维数组元素的引用
数组元素的引用形式: 数组名[下标];
注意:
1)数组必须先定义,后使用。 2)数组的下标都是从0开始。 3)下标可以是整型常量或整型表达式。 例如:
a[i]=3;
printf( “%d” , a[3] ); scanf ( “%d” , &a[3] );
注意:
1)下标可以是整型常量或整型表达式。 例如: a[2][3]、 a[3-1][2*2-1]、 y[i+k][j+k] 2)在使用数组元素时,注意下标值应在已定义的数组大小的范 围内。 例如: int a[3][4]; … a[3][4]=3; //代表某一个元素 //定义数组的维数和各维的大小
定义a为3×4(3行4列)的数组,b为5×10(5行10列)的数组。
说明: (1) 二维数组的行、列下标均从0开始。
(2)二维数组中元素排列的顺序是:按行存放,即在内存 中先顺序存放第一行的元素,再存放第二行的元素。 例:int a[2][3]
a[0][0]
a[0][1]
a[0][2]
a[1][0]
main()
{ int a[2][3]={{1,2,3},{4,5,6}}; int b[3][2],i,j; 例2将一个二维数组行 printf("array a:\n"); 和列元素互换,存到另 for (i=0;i<=1;i++) 一个二维数组中。 { for (j=0;j<=2;j++) { printf("%5d",a[i][j]); b[j][i]=a[i][j]; } printf("\n"); } 程序运行结果: printf("array b:\n"); array a: for (i=0;i<=2,i++) 1 2 3 4 5 6 { for(j=0;j<=1;j++) array b: printf("%5d",b[i][j]); 1 4 printf("\n"); 2 5 } 3 6

一维数组的定义和引用

一维数组的定义和引用

• unsigned int *p; p=sing; while (*p) { sound(*p++); delay(*p++);
nosound(); } }
§7.2 二维数组的定义和引用
• 7.2.1 二维数组的定义与引用
类型说明符 数组名[常量表达式][常量表
达式]
说明:元素的排列顺序是
按行存放的,这在数组初始化和指针表
9 8 8 8 8 8 8 5 55 5
8 9 5 5 5 5 5 8 44 4
5 5 9 4 4 4 4 4 82 2
4 4 4 9 2 2 2 2 28 0
2 2 2 2 9 0 0 0 00 8
0 0 0 0 09
输入n个数给a[1]到a[n] For j=1 to n-1
For i=1 to n-j
• 表示形式: 数组名[下标] • 下标可以是整型常量或表达式。例如: • a[0]=a[5]+a[7]-a[2*3]
• EG: main( ) {
• int i, a[10] ; • for (i=0;i<=9;i++) • a[i]=i ; • for (i=9;i>=0;i– –) • printf(“%d”,a[i]); •} • 运行结果: • 9876543210
1 000 5600 0000
•int a[3[4]={{1},{},{6}};
1000 0000 6000
4.若对全部元素赋值,第一维的长度可省略, 但第二维的长度不可省.
static int a[2][2]={1,2,3,4}; 等同于 static int a[ ][2]={1,2,3,4};
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

c
12
3
31
a
12
-1
3
b
2
-14 77
-1
76
main( ) { int i,j,k=0,a[8],b[5],c[8]; for(i=0;i<=7;i++) scanf("%d",&a[i]); for(i=0;i<=4;i++) scanf("%d",&b[i]); for(i=0;i<=7;i++) {for(j=0;j<=4;j++) if(a[i]= =b[ j]) break; if(j>4) { c[k]=a[i];k++;} } for(i=0;i<k;i++) printf("%5d",c[i]); printf("\n"); }
第7章
7.1
数 组
一维数组的定义和引用
7.1.1 一维数组的定义 定义方式: 类型说明符 数组名[整型常量表达式]; 例:int a[10]; 说明:①数组名的命名规则和变量名相同,遵循标识 符定名规则。 ②数组名后的常量表达式用[ ]括起来。 ③常量表达式表示元素的个数,即数组长度。 例:a[10]表示数组a中包括10个元素,分别为 a[0]~a[9]
a[0] a[2] a[4] a[6] a[8] a[1] a[3] a[5] a[7] a[9]
④常量表达式中可以包括常量和符号常量,不能包含 变量,即定义时必须确定数组的大小。
7.1.2 一维数组元素的引用 int n; 数组必须先定义,然后使用。C语言规定只能逐个 scanf("%d",&n); 引用数组元素而不能一次引用整个数组。 a[n]; 引用形式为: int 数组名 [下标]
对数组元素的初始化可以用以下方法实现:
⒈在定义数组时,对数组元素赋以初值。 如: static int a[10]={0,1,2,3,4,5,6,7,8,9} ; ⒉可以只给一部分元素赋值。 如: static int a[10]={0,1,2,3,4}; 表示只给前5个元素赋初值,后5个元素自动赋以0值。 ⒊对static数组不赋初值,系统会对所有元素自动赋 以0值。即, 如果想使数组a中全部元素值为0,可以这 样定义数组: static int a[5]
例:用random函数产生10个[20,60]之间的随机整数, 按从小到大排序后输出。
随机函数 random的用法: 1. 格式: random(x) 2. 说明: (1) x为整型常量、整型变量或整型表达式。 (2) 该函数包含在头文件"stdlib.h"中。 (3) 该函数产生[0, x) 区间上的整数。 产生[a,b]区间上任意整数的方法:
引用形式为: 数组名[下标][下标] 注:下标可以是整型表达式,但应在已定义的数 组大小的范围内。
7.2.3 二维数组的初始化
⒈ 分行给二维数组赋初值。如: int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
例.已知数组a中有8个互不相等的元素,数组b中有 5 个互不相等的元素,而数组c中包含那些在a中但不 在b中的元素,编程产生数组c。
for(i=0;i<=7;i++) -6 0 { for(j=0;j<=4;j++) if(a[i]= =b[ j]) break; if(j>4) { c[k]=a[i];k++;} 2 } 77 31 -6 0
main( ) {int i,j,y; static int x[5]={1,2,8,3,10}; for(i=0;i<=4;i++) printf("%5d",x[i]); printf("\n"); for(i=1;i<=4;i++) { y=x[0]; for( for(j=1;j<=4;j++) j=0;j<4;j++) x[j-1]=x[j]; x[j]=x[j+1]; x[4]=y; for( j=0;j<=4;j++) printf("%5d",x[ j]); printf("\n"); } }
例. 打印以下方阵: 1 2 2 8 8 3 3 10 10 1
8 3 10 1 2
3 10 1 2 8
10 1 2 8 3
8 3 1 2
10 2 8 3 1
10 2 8 3 1
10 2 8 3 1
10 3 1 2 8
10 1 2 8 3
y=x[0]; for( j=1;j<5;j++) x[j-1]=x[j]; x[4]=y;
第二次比较:用 第三次比较:用 a[2] a[3]~a[9] 第一次比较:用a[1] a[0]与它后面的 与它后面的a[2]~a[9] a[1]~a[9]比较,将小的数据 比较,将小的数据 放在a[1]中。 放在a[2] a[0]中。
第一次的比较结果:最小数在 a[0] 中。 第三次的比较结果:第3小的数在 a[2] 中。 第二次的比较结果:次最小数在 a[1] 中。
a[0][0]
a[0][1]
a[0][2]
a[0][3]
a[1][0]
aபைடு நூலகம்1][1]
a[1][2]
a[2][0]
a[1][3]
a[2][2]
a[2][1] a[2][3]
③ 多维数组定义方式与二维数组类似 int x[3][4][2]; float y[4][2][3];
7.2.2 二维数组的引用
依次类推经过九次比较可使数组a升序。
for(i=0;i<9;i++) for(j=i+1;j<=9;j++) if(a[i]>a[j]) {k=a[i]; a[i]=a[j]; a[j]=k;}
#include "stdlib.h" main() { int i,j,k,a[10]; for(i=0;i<10;i++) a[i]=random(41)+20; for(i=0;i<9;i++) for(j=i+1;j<=9;j++) if(a[i]>a[j]) {k=a[i]; a[i]=a[j]; a[j]=k; } for(i=0;i<=9;i++) printf("%5d",a[i]); printf("\n"); }
例.从10个整数中把最小的数找出来,并与最前面的 数对调, 指出最小的数原来的位置。(最小值唯一) 1.用数组a存放10个数据。 int
2.用j记录最小值的位置。 j=0; 3.交换a[0]与a[j]的值。 for(i=1;i<=9;i++)
a[10];
if(a[i]<a[j]) j=i;
j=0 j=1 j=1 j=1 j=1 j=1 j=6 j=6 j=6 12 -14 37 2 76 231 -36 65 -2 j=6 -31
算法2:选择排序 k j j k k
j k
k j k j
jj
k jj
jj
jj
jj
29 21
57 27
42
30
29 21
35
27 57
46
52
39
第二次比较:k=0 第一次比较: k=1,比较a[k] a[k] 与它后面所有的数 与它后面所有的数 a[j] a[j] (j=2,….,9),若a[k]大于a[j],则k=j (j=1,….,9),若a[k]大于a[j],则k=j 第二次比较结果:k为剩余数中最小值的下标,交换 第一次比较结果: k为最小值的下标,交换 a[0]与a[k] a[1] 与a[k], 使a[1]中存放剩余数 中的最小值。 使a[0]中存放最小值。
a[0] a[2] a[4] a[1] a[3] 0 0 0 0 0
等价于 int a[5]={0};
⒋在对全部数组元素赋初值时,可以不指定数组长度。 int a[5]={1,2,3,4,5}; static
static
int a[
]={1,2,3,4,5};
例.用数组来处理求Fibonacci数列问题(求前40项)
random(b-a+1)+a
[0,b-a+1) [a,b+1) [a,b]
算法1:顺序排序
a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9]
25 34 21 25 23 25 21 25 34 34 49 30 25 49 34 30 30 23 25 30 23 41 41 37 30 30 28 28
整型常量或整型表达式
例: main( ) {int i,a[10]; 通过赋值语句给 for (i=0;i<=9;i++) 数组元素赋值 a[i]=i; for (i=0;i<=9;i++) (i=0;i<=9;i++) (i=9;i>=0;i-) printf("%4d",a[i] ); a[i]); a[9-i]); }
依次类推经过九次比较可使数组a升序。
#include "stdlib.h" main() {int i,j,k,m,a[10]; for(i=0;i<=9;i++) a[i]=random(41)+20; for(i=0;i<9;i++) { k=i; for(j=i+1;j<=9;j++) if (a[k]>a[j]) k=j; if(k!=i) {m=a[i];a[i]=a[k];a[k]=m;} } for(i=0;i<=9;i++) printf("%5d",a[i]); printf("\n"); }
相关文档
最新文档