文档库 最新最全的文档下载
当前位置:文档库 › 数组

数组

数组
数组

1.以下程序的输出结果是《B》

A) 20 B) 21 C) 22 D)23

main()

{ int i,k,a[10],p[3];

k=5;

for (i=0;i<10;i++) a[i]=i;

for (i=0;i<3;i++) p[i]=a[i*(i+1)];

for (i=0;i<3;i++) k+=p[i]*2;

printf("%d\n",k);

}

2. 以下程序运行后,输出结果是《B》

A)1000 B)10010 C)00110 D)10100

main( )

{ int y=18,i=0,j,a[8];

do

{ a[i]=y%2;i++;

y=y/2;

} while(y>=1);

for(j=i-1;j>=0;j--) printf(“%d”,a[j]);

printf(“\n”);

}

3. 执行下面的程序段后,变量k中的值为《A》

A) 不定值 B) 33 C) 30 D) 10

int k=3, s[2];

s[0]=k; k=s[1]*10;

4. 若有以下调用语句,则不正确的fun函数的首部是《C》

A) void fun(int m, int x[]) B) void fun(int s, int h[41])

C) void fun(int n, int a) D) void fun(int p, int *s)

main()

{ …

int a[50],n;

fun(n, &a[9]);

5. 有如下程序《D》

main()

{ int n[5]={0,0,0},i,k=2;

for(i=0;i==0;i++,printf(“%d\n”,n[k]));

}

该程序的输出结果是

A) 不确定的值 B) 2 C) 1 D) 0

6.有如下程序《A》

main()

{ int a[3][3]={{1,2},{3,4},{5,6}},i,j,s=0;

for(i=1;i<3;i++)

for(j=0;j

printf("%d\n",s);

}

该程序的输出结果是

A) 14 B) 19 C) 20 D) 21

7.下面程序的输出结果是。《024》

#define MAX 3

int a[MAX];

main( )

{ fun1( ); fun2(a); printf(“\n”);}

fun1( )

{ int k,t=0;

for(k=0;k

}

fun2(int b[])

{ int k;

for(k=0;k

}

8.以下程序的输出结果是《C》

A) 1,5,9 B) 1,4,7 C) 3,5,7 D)3,6,9

main()

{ int i, x[3][3]={1,2,3,4,5,6,7,8,9};

for(i=0;i<3;i++) printf("%d,",x[i][2-i]);

}

9 若变量n中的值为24,下列程序共输出【?】行,最后一行有【?】个数。(5,4)

main()

{ int i,n,a[25];

scanf(“%d”,&n);

for(i=1;i<=24;i++)

Scanf(“%d”,&a[i]);

for(i=1; i<=n;i++)

{ printf("%6d", a[i]);

if( !(i%5) ) printf("\n");

}

printf("\n");

}

10.以下程序中,主函数调用了LineMax函数,实现在N行M列的二维数组中,找出每一行

上的最大值。请填空。

#define N 3

#define M 4

void LineMax(int x[N][M])

{ int i,j,p;

for(i=0; i

{ p=0;

for(j=1; j

if(x[i][p]

printf("The max value in line %d is %d\n", i, 【?】);《x[i][p]》

}

}

main()

{ int x[N][M]={1,5,7,4,2,6,4,3,8,2,3,1};

【?】《LineMax(x)》

}

11. 设在主函数中有以下定义和函数调用语句,且fun函数为void类型;请写出fun函数

的首部,要求形参名为b。《void fun(double b[][22])》

main()

{ double s[10][22];

int n; ┆

fun(s);

}

12. 以下程序的输出结果是《C》

main()

{ int i, a[10];

for(i=9;i>=0;i--) a[i]=10-i;

printf("%d%d%d",a[2],a[5],a[8]);

}

A) 258 B) 741 C) 852 D) 369

13. 以下数组定义中不正确的是《D》

A) int a[2][3];

B) int b[][3]={0,1,2,3};

C) int c[100][100]={0};

D) int d[3][]={{1,2},{1,2,3},{1,2,3,4}};

14.以下程序的输出结果是《A》

main()

{ int a[4][4]={{1,3,5},{2,4,6},{3,5,7}};

printf("%d%d%d%d\n",a[0][3],a[1][2],a[2][1],a[3][0];

)

A} 0650 B} 1470 C} 5430 D} 输出值不定

15. 若已定义:int a[10], i;,以下fun函数的功能是:在第一个循环中给前10个数组元

素依次赋1、2、3、4、5、6、7、8、9、10;在第二个循环中使a数组前10个元素中的值对称折叠,变成1、2、3、4、5、5、4、3、2、1。请填空。

fun( int a[ ])

{ int i;

for(i=1; i<=10; i++) 【?】=i; 《a[i-1]》

for(i=0; i<5; i++) 【?】=a[i]; 《a[9-i]》

}

16. 以下程序的输出结果是《A》

f(int b[],int m,int n)

{ int i,s=0;

for(i=m;i

return s;

}

main()

{int x,a[]={1,2,3,4,5,6,7,8,9};

x=f(a,3,7);

printf("%d\n",x);

}

A) 10 B) 18 C) 8 D) 15

17. 以下程序的输出结果是《B》

main()

{ int b[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1;

for(i=0;i<3;i++)

for(j=i;j<=i;j++) t=t+b[i][b[j][j]];

printf("%d\n",t);

}

A) 3 B) 4 C) 1 D) 9

18. 以下程序中,select 函数的功能是:在N行M列的二维数组中,选出一个最大值作为函

数值返回,并通过形参传回此最大值所在的行下标。请填空。

#define N 3

#define M 3

select(int a[N][M],int *n)

{ int i,j,row=1,colum=1;

for(i=0;i

for(j=0;j

if(a[i][j]>a[row][colum]){row=i;colum=j;}

*n= 【?】; 《row》

return 【?】; 《a[row][colum]》

}

main()

{int a[N][M]={9,11,23,6,1,15,9,17,20},max,n; max=select(a,&n);

printf("max=%d,line=%d\n",max,n);

}

数组

数组 1、下列程序执行后的输出结果是________。 main() { int i,j,a[3][3]; for(i=0;i<3;i++) for(j=0;j<3;j++) a[i][j]=i*j+1; printf("%d,%d\n",a[1][2],a[2][1]); } A) 3,3 B) 3,不定值 C) 3 D) 3,1 正确答案是: A 你选择的答案是:未选× 2、以下程序的输出结果是________。 main() { char st[20]="hello\0\t\'\\"; printf("%d\n",strlen(st)); } A) 9 B) 5 C) 13 D) 20 正确答案是: B 你选择的答案是:未选× 3、以下程序执行时输入Language Programming<回车>,输出结果是________。 #include main( ) { char str[30]; gets(str); printf("str=%s\n",str); } A) Language Programming B) Language C) str=Language D) str=Language Programming 正确答案是: D 你选择的答案是:未选× 4、以下程序执行后的输出结果是________ 。 #include main( ) { int a[4][5]={1,2,4,8,10,-1,-2,-4,-8,-10,3,5,7,9,11}; int i,j,n=9; i=n/5; j=n-i*5-1; printf("%d\n",a[i][j]); } A) -8 B) -10 C) 9 D) 11 正确答案是: A 你选择的答案是:未选×

(数组)教案

教学课题:数组 教学目的:了解数组也是内存变量 教学重点:数组的定义和使用 教学难点:FOX中的数组和BASIC中的数组的区别 [引入]原来所使用的内存变量都是简单内存变量,如内存变量XM,ZC,X5等,有时需要对一组数据进行操作。例如把2-1000之间的素数分别赋给内存变量并保存起来。如果使用前面所学过的对内存变量的定义,操作既重复又繁琐。如果用数组来存放则显得比较简单。 数组就是多个变量共同使用同一个名称来存储数据。它由多个数组元素组成,利用数组的下标来区分每一个数组元素。例如,数组TX(5)的数组名为TX,下标为5,该数组只有一个下标,称为一维数组,它有5个数组元素。 TX(1),TX(2),TX(3),TX(4),TX(5) 数组S(3,4)的数组名为S,下标分别为3和4,该数组有两个下标,称为二维数组,它有3行4列共3*4=12个数组元素:S(1,1),S(1,2),S(1,3),S(1,4) S(2,1),S(2,2),S(2,3),S(2,4) S(3,1),S(3,2),S(3,3),S(3,4) S(4,1),S(4,2),S(4,3),S(4,4) 数组也是一种内存变量,数组元素的数据类型可以是字符型、数值型、日期型或逻辑型,而且这些类型的数据可同时存在于一个数组

中。例如,数组的第一个元素为字符型,第二个元素为数值型等。 (1)数组的定义 [格式]DIMENSION<数组名1>(<下标1>[,<下标2>])[,<数组名2>(<下标3>[,<下标4>])]… [功能]定义一维或二维数组。 说明: *数组的命名与简单内存变量命名的规则相同,数组下标必须放在一对圆括号内。 *数组的下标值最小为1,下标如果有小数,则只截取整数部分。如果省略<下标2>,则定义的是一维数组,否则定义的是二维数组。 例: 分别定义一个一维数组和二维数组。 命令操作如下: .DIMENSION X(5),Y(2,3) 上述命令定义了X和Y两个数组,X是一个一维数组,其数组元素分别表示为X(1),X(2),X(3),X(4),X(5);Y 是一个二维数组,其数组元素分别表示为Y(1,1),y(1,2),Y(1,3),Y(2,1),y(2,2),Y(2,3)。 下面分别是数组X和Y各元素在内存中的排列情况。 数组元素在内存中是按下标值的升序来存储的,对于一个二维

五种查找算法总结

五种查找算法总结 一、顺序查找 条件:无序或有序队列。 原理:按顺序比较每个元素,直到找到关键字为止。 时间复杂度:O(n) 二、二分查找(折半查找) 条件:有序数组 原理:查找过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束; 如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。 如果在某一步骤数组为空,则代表找不到。 这种搜索算法每一次比较都使搜索范围缩小一半。 时间复杂度:O(logn) 三、二叉排序树查找 条件:先创建二叉排序树: 1. 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 2. 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 3. 它的左、右子树也分别为二叉排序树。 原理: 在二叉查找树b中查找x的过程为: 1. 若b是空树,则搜索失败,否则: 2. 若x等于b的根节点的数据域之值,则查找成功;否则: 3. 若x小于b的根节点的数据域之值,则搜索左子树;否则: 4. 查找右子树。 时间复杂度:

四、哈希表法(散列表) 条件:先创建哈希表(散列表) 原理:根据键值方式(Key value)进行查找,通过散列函数,定位数据元素。 时间复杂度:几乎是O(1),取决于产生冲突的多少。 五、分块查找 原理:将n个数据元素"按块有序"划分为m块(m ≤ n)。 每一块中的结点不必有序,但块与块之间必须"按块有序";即第1块中任一元素的关键字都必须小于第2块中任一元素的关键字; 而第2块中任一元素又都必须小于第3块中的任一元素,……。 然后使用二分查找及顺序查找。

数组练习

2014-11-9 例1:对10个数组元素依次赋值为0,1,2,3,4,5,6,7,8,9,要求按逆序输出。 #include main() { int i,a[10]; /*定义数组*/ for (i=0; i<=9;i++) a[i]=i; /*引用数组元素a[i] */ for(i=9;i>=0; i--) printf("%d ",a[i]); printf("\n"); /*引用数组元素a[i] */ } 例2:用数组处理求Fibonacci数列问题 #include main() { int f1=1,f2=1,f3; int i; printf("%12d\n%12d\n",f1,f2); for(i=1; i<=38; i++) { f3=f1+f2; printf("%12d\n",f3); f1=f2; f2=f3; } } #include main() { int f1=1,f2=1; int i; for(i=1; i<=20; i++) { printf("%12d %12d ",f1,f2); if(i%2==0) printf("\n"); f1=f1+f2; f2=f2+f1; } } #include main() { int i; int f[20]={1,1}; 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"); } 例3:冒泡法排序。假定有5个元素需要按照从小到大的顺序进行排序。 #define N 5 main() { int a[N],m,n,t; printf("请输入5个整数:\n"); for (m=0;ma[n+1]) { t= a[n], a[n]= a[n+1], a[n+1]=t; } printf("排好序之后:\n"); for (m=0;m main() { 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]); b[j][i]=a[i][j]; } printf("\n"); } printf("array b:\n"); for (i=0;i<=2;i++) { for(j=0;j<=1;j++) printf("%5d",b[i][j]);

读取1000个十进制整数到数组

★83.函数ReadDat( )实现从文件IN83.DA T中读取1000个十进制整数到数组xx中。请编制函数Compute( )分别计算出xx中偶数的个数even、奇数的平均值ave1、偶数的平均值ave2及所有偶数的方差totfc的值,最后调用函数WriteDat( )把结果输出到OUT83.DAT文件中。计算方差的公式如下:totfc=----(--ave2)-/N 设N为偶数的个数,xx[i]为偶数,ave2为偶数的平均值。 原始数据的存放格式是:每行存放10个数,并用逗号隔开(每个数均大于0且小于等于2000)。 注意:部分源程序已给出。 请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。 试题程序: #include #include #include #define MAX 1000 int xx[MAX],odd=0,even=0; double ave1=0.0,ave2=0.0,totfc=0.0; void WriteDat(void); int ReadDat(void) { FILE *fp; int i,j; if((fp=fopen("IN83.DAT","r"))==NULL) return 1; for(i=0;i<100;i++) { for(j=0;j<10;j++) fscanf(fp,"%d,",&xx[i*10+j]); fscanf(fp,"\n"); if(feof(fp)) break; } fclose(fp); return 0; } void Compute(void) { int i,tt[MAX]; /*定义数组tt计算总和*/ for(i=0;i<1000;i++) if(xx[i]%2!=0) /*判断当前数的奇偶性*/ { odd++; /*统计奇数的个数*/

数组和过程习题(有)

数组 一、思考题 1.要分配存放12个元素的整型数组,下列数组声明(下界若无,按默认规定) 哪些符合要求? (1) n=12 (2) Dim a%( ) Dim a(1 To n) As Integer n=11 ReDim a(n) (3) Dim a%[2,3] (4) Dim a(1,1,2) As Integer (5) Dim a%(10) (6) Dim a!( ) ReDim a(1 To 12) ReDim a(3,2) As Integer (7) Dim a%(2,3) 8) Dim a(1 to 3, 1 to 4) As Integer 2.已知下面的数组声明,写出它的数组名、数组类型、维数、各维的上、下界、数组的大小、并按行的顺序列出各元素。 Dim a(-1 to 2,3) As Single 3. 已声明了静态数组A(3, 4),能否在下面再用重定义动态数组A(4, 4)来重定义A数组的大小吗? 二、选择题 1.以下关于数组的说法,不正确的是______。 (A)静态数组在声明时大小必须固定(B)动态数组在声明时大小可以不确定 (C)默认情况下数组的下界为0 (D)运行时可改变动态数组或静态数组的大小 2.有关数组的说法,错误的是______。 (A)数组是一种特殊的数据类型(B)一个数组中可存放多种类型的数据 (C)数组是一组相同类型的变量的集合(D)

数组可以被声明为变体类型 3.如下数组声明语句,______正确。 (A)Dim a[3, 4] As Integer (B)Dim a(3, 4) As Integer (C)Dim a(n, n) As Integer (D)Dim a(3 4) As Integer 4. 要分配存放如下方阵的数据,______数组声明语句能实现(不能浪费空间)。 (A)Dim a(9) As Single (B)Dim a(3, 3) As Single (C)Dim a( 1 To 3 , 1 To 3) As Single(D)Dim a( -3 To -1 , 5 To 7) As Integer 5. 如下数组声明语句,则数组a包含元素的个数有______。 Dim a(3, -2 to 2,5) (A)120 (B)75 (C)60 (D)13 6. 以下程序输出的结果是______。 Dim a a = Array(1, 2, 3, 4, 5, 6, 7) For i = Lbound (a) To Ubound (a) a(i) = a(i) * a(i) Next i Print a(i) (A)49 (B)0 (C)不确定(D)程序出错 7.下列数组声明语句中的数组a包含了______个数组元素 Dim a(4,-1 To 2, 3) (A) 120 (B) 11 (C)60 ( D)80 8. 有如下程序段: Type student nl as Integer name as String*13 End Type Dim stu As student 该程序段定义了两个程序成分,它们分别是______ (A)数据类型和自定义类型变量(B)自定义类型和变量 (C)显示类型和变量(D)自定义类型和自定义类型变量 9.在窗体的通用声明段自定义了数据类型student,下列定义方式是正确的。 (A) Private Type student (B)Type student No as Integer No as Integer

数组及其应用(详细教案)

提问:给一组数排序,这组数该如何存 放呢? 8 2 9 4 5 6 3 7 1 6 这就是本节课要解决的问题。 ?一个班学生的学习成绩 ?一行文字 ?一个矩阵 这些数据的特点是: 1.具有相同的数据类型 2.使用过程中需要保留原始数据 C语言为这些数据,提供了一种型:数组。所谓数组就是一组具有相数据的有序集合。 提出学习要求: 1 一维数组的定义和应用

2 二维数组的定义和应用 3 字符数组的应用 第七章数组 7.1一维数组及应用 7.1.1一维数组的定义方式 在C语言中使用数组必须先定义、后使用,定义数组也就确定了数组的首地址、数组元素的类型和个数(数组长度)。 一维数组的定义方式为: 类型说明符数组名[常量表达式]; 例如: 1) int a[5]; 说明整型数组a,a是数组名,有5个元素。但

是其下标从0开始计算。因此5个元素分别为a[0],a[1],a[2],a[3],a[4]。注意不能使用数组元素a[5]。 float b[10],c[20]; 说明实型数组b,b是数组名,有10个元素,实型数组c,有20个元素。 char ch[20]; 说明字符数组ch,有20个元素。 对于数组类型说明应注意以下几点:2) 数组的类型实际上是指数组元素的取值类型。对于同一个数组,其所有元素的数据类型都是相同的。 3) 数组名的书写规则应符合标识符的书写规定。 4) 数组名不能与其它变量名相同。 例如:

main() { int a; /*a为整型变量*/ float a[10]; /* 数组名a与上面的变量名a相同,错误!*/ …… } 是错误的。 5) 不能在方括号中用变量来表示元素的个数,但是可以是符号常数或常量表达式。 例如: #define FD 5 /* FD是符号常数*/ main() {

Java_数组练习题目

一填空题 1)数组的元素通过数组下标来访问,数组Array的长度为元素的个数 (Array.length)。 2)Java中数组的下标的数据类型是整形。 3)不用下标变量就可以访问数组的方法是数组名。 4)数组最小的下标是0 。 5)arraycopy()的最后一个参数指明复制元素的个数。 6)向方法传递数组参数时,传递的是数组的引用。 7)数组初始化包括数组的声明,创建,初始化。 8)数组下标访问超出索引范围时抛出数组越界异常 9)浮点型数组的默认值是0.0f 。 10)对象型数组的默认值是null 。 二选择题 1.下面错误的初始化语句是_A B D__ A. char str[]="hello"; B. char str[100]="hello"; C. char str[]={'h','e','l','l','o'}; D. char str[]={'hello'}; 2.定义了一维int型数组a[10]后,下面错误的引用是_B_ A. a[0]=1; B. a[10]=2; C. a[0]=5*2; D. a[1]=a[2]*a[0]; 3.下面的二维数组初始化语句中,正确的是__B__ A. float b[2][2]={0.1,0.2,0.3,0.4}; B. int a[][]={{1,2},{3,4}}; C. int a[2][]= {{1,2},{3,4}}; D. float a[2][2]={0}; 4.引用数组元素时,数组下标可以是__D__ A. 整型常量 B. 整型变量 C. 整型表达式 D. 以上均可 5.定义了int型二维数组a[6][7]后,数组元素a[3][4]前的数组元素个数为__C__ A. 24 B. 25 C. 18 D. 17 6.下列初始化字符数组的语句中,正确的是_B___ A. char str[5]="hello"; B. char str[]={'h','e','l','l','o','\0'}; C. char str[5]={"hi"}; D. char str[100]=""; 7.数组在Java中储存在 C 中 A. 栈 B. 队列 C. 堆 D. 链表

声明一个数组

声明一个数组: declare -a array (其实不用声明,按数组方式直接赋值给变量即可,BASH就知道那是数组) 数组赋值: (1) array=(var1 var2 var3 ... varN) (2) array=([0]=var1 [1]=var2 [2]=var3 ... [n]=varN) (3) array[0]=var1 arrya[1]=var2 ... array[n]=varN 计算数组元素个数: ${#array[@]} 或者${#array[*]} BASH的特殊参数@ 和* 都表示“扩展位置参数,从1开始”,但形式稍有差异,但在数组里使用好像是可以通用的。 引用数组: echo ${array[n]} 遍历数组: filename=(`ls`) for var in ${filename[@]};do echo $var done 数组实用示例:(个人收集整理) 1、从“标准输入”读入n次字符串,每次输入的字符串保存在数组array里 i=0 n=5 while [ "$i" -lt $n ] ; do echo "Please input strings ... `expr $i + 1`" read array[$i] b=${array[$i]} echo "$b" i=`expr $i + 1` done

2、将字符串里的字母逐个放入数组,并输出到“标准输出” chars='abcdefghijklmnopqrstuvwxyz' for (( i=0; i<26; i++ )) ; do array[$i]=${chars:$i:1} echo ${array[$i]} done 这里有趣的地方是${chars:$i:1},表示从chars字符串的$i 位置开始,获取 1 个字符。如果将 1 改为 3 ,就获取 3 个字符啦~结果是: abc bcd ... vxy xyz yz //没有足够字符串获取了 z //没有足够字符串获取了 3、将数组应用到shell环境变量 3、将数组应用到shell环境变量(1) 数组赋值: [root@pps ~]# SEASON=("Srping" "Summer" "Autumn" "Winter") 当你发现赋值错了,也可以立刻从新赋值纠正,如上面的Spring 被写成Srping。 重新赋值:(原来的值被重写) [root@pps ~]# SEASON=("Spring" "Summer" "Autumn" "Winter") 查看一下环境变量: [root@pps ~]# set | grep SEASON SEASON=([0]="Spring" [1]="Summer" [2]="Autumn" [3]="Winter") 显示整个数组: [root@pps ~]# echo ${SEASON[*]} 或者echo ${SEASON[@]} Spring Summer Autumn Winter 显示某一数组元素: [root@pps ~]# echo ${SEASON[3]} Winter

二维数组中鞍点的查找C语言程序.doc

#include #define M 3 #define N 3 void main() {int i,j,t=0; float a[M][N],min1[N],max1[N],min,max; printf("请输入9个数(并用空格分隔):\n"); for(i=0;i<3;i++) for(j=0;j<3;j++) scanf("%f",&a[i][j]); printf("二维数组如下:\n"); for(i=0;i<3;i++) { for(j=0;j<3;j++) printf("%f\t",a[i][j]); printf("\n"); } for(i=0;i<3;i++) { min=1000; for(j=0;j<3;j++) if(a[i][j]max) max=a[i][j]; max1[j]=max; } printf("每列中的最大数如下:\n"); for(j=0;j<3;j++) printf("%f\n",max1[j]); for(i=0;i<3;i++)

for(j=0;j<3;j++) if(a[i][j]==min1[i]&&a[i][j]==max1[j]) {printf("%f是二维数组中的一个鞍点\n",a[i][j]); t++; } if(t!=0); else printf("二维数组中不存在鞍点\n"); }

数组练习题

1.下面数组声明语句,_________正确。 A)Dim a[2,4] As Integer B)Dim a(2,4)As Integer C)Dim a(n,n)As Integer D)Dim a(2 4)As Integer 2.假定建立了一个名为Command1的命令按钮数组,则以下说法中错误的是________。 A)数组中每个命令按钮的名称(名称属性)均为Command1 B)数组中每个命令按钮的标题(Caption属性)都一样 C)数组中所有命令按钮可以使用同一个事件过程 D)用名称Command1(下标)可以访问数组中的每个命令按钮 3.数组声明语句Dim a(-2 to2,5)中,数组包含元素个数为________。 A)120 B)30 C )60 D)20 4.下面程序的输出结果是________。 Dim a a = Array(1,2,3,4,5,6,7) For i = Lbound(a)to Ubound(a) a(i)= a(i)* a(i) Next i Print a(i) A)36 B)程序出错C)49 D)不确定 5.下面程序的输出结果是________。 Option Base 1 Private Sub Command1_Click() Dim a%(3, 3) For i = 1 To 3 For j = 1To 3 If j > 1 And i > 1 Then a(i, j)= a(a(i - 1, j - 1), a(i, j - 1))+ 1 Else a(i, j)= i * j End If Print a(i, j); ""; Next j Print Next i End Sub A)1 2 3 B)1 2 3 C )1 2 3 D)1 2 3 2 3 1 1 2 3 2 4 6 2 2 2 3 2 3 1 2 3 3 6 9 3 3 3 6.在设定Option Base 0后,经Dim arr(3,4)As Integer 定义的数组arr含有的元素个数为________。 A)12 B)20 C )16 D)9 7.用Dim A (-3 To 5)As Integer语句定义的数组的元素个数是________。 A)6 B)7 C )8 D)9 8.有如下程序代码,输出结果是________。 Dim a()

数组

一、选择题 1. 设有定义:char s[12]="harmonious";,则printf("%d", strlen(s));的输出结果是 A. 9 B. 10 C. 11 D. 12 2. 错误的说明语句是____。 A) char word[ ]={ 'T', 'u', 'r','b', 'o', '\0' }; B) char word[ ]={ "Turbo\0" }; C) char word[ ]="Turbo\0"; D) char word[ ]='Turbo\0"; 3. 已知:chars[5], c; int b;则调用函数scanf的正确语句是______。 A) scanf( "%s%c", s, C); B) scanf( "%d%c", &b, &C); C) scanf( "%d%c", b, &C); D) scanf( "%s%c", s, &C); 4. 合法的数组说明语句是____。 A) int[ ]="string"; B) int a[5]={ 0, l, 2, 3, 4, 5 }; C) char a="string"; D) char a[ ]={ 0, l, 2, 3, 4, 5 }; 5. 在下述对C语言字符数组的描述中错误的是____。 A) 字符数组可以存放字符串 B) 字符数组中的字符串可以进行整体输入/输出 C) 可以在赋值语句中通过赋值运算符"="对字符数组整体赋值 D)字符数组的下标从0开始 6. 调用str1en( "abcd\0ef\0g" )的返回值为____。 A) 4 B) 5 C) 8 D) 9 7. 已知:char str1[10], str2[10]={ "books" };则在程序中能够将字符串"book"赋给数组str1的正 确语句是____。 A) str1={ "books" }; B) strcpy( str1, str2 ); C) str1=str2; D) strcpy( str2, str1 ); 8. 已知:char str1[20]="abcde", str2[20]="xyz"; 则执行语句; printf( "%d", str1en( strcpy( str1, str2 ) ) ); 输出结果是____。 A) 9 B) 3 C) 5 D) 8 9. 下面字符串的说明错误的是____。 A) char str[7]="FORTRAN"; B) char str[ ]="FORTRAN"; C) char *str="FORTRAN"; D) char str[ ]={'F','O','R',T,'R','A','N','\0'}; 10. 已知:int i, x[3][3]={ l, 2, 3, 4, 5, 6, 7, 8, 9 };则下面语句的输出结果是____。 for( i=0; i<3; i++ ) printf( "%d", x[i][2-i] ); A) 159 B) 147 C) 357 D) 369 11. 已知:char str[ ]="ab\n\012\\\"";则执行语句:printf( "%d", str1en(str) );的结果是____。 A) 3 B) 4 C) 6 D) 12

单片机C语言中数组的用法

单片机C语言中数组的用法 数组是由具有相同类型的数据元素组成的有序集合。数组是由数组名来表示的,数组中的数据由特定的下标来唯一确定。引入数组的目的,是使用一块连续的内存空间存储多个类型相同的数据,以解决一批相关数据的存储问题。数组与普通变量一样,也必须先定义,后使用。数组在C51语言的地位举足轻重,因此深入地了解数组是很有必要的。下面就对数组进行详细的介绍。 (1)一维数组 一维数组是最简单的数组,用来存放类型相同的数据。数据的存放是线性连续的。 用以下例程说明数组的建立、数据操作: #include /* ----------------------------------------------------- 此程序用以说明数组的建立、数据操作 ----------------------------------------------------- */ unsigned char array[10];//定义一个有10个单元的数组 void main() { unsigned char i; for(i=0;i<10;i++) { array[i]=i; //用下标调用数组中的元素 } /* --------------------------------------- array |9|8|7|6|5|4|3|2|1|0| [9]~[0] --------------------------------------- */ while(1); } 数组名是用来表示数组的标识,其实它是数组的首地址,即一个指针。不过它所表示的地址是固定的,不能改动。如前几章所述的相关内容,array[2]与*(array+2)是等效的,不过不能用array++,因为array是常量。 上面的程序中的数组是静态建立的,以下例程来用说明数组的动态建立。 #include #include /* ----------------------------------------------------- 此程序用以说明数组的动态建立 ----------------------------------------------------- */

c语言数组练习题大全

231页; 本节设计程序完成一个简单的学籍; 3管理系统的案例,学生的基本信息:学号,姓名,年龄,c 语言成绩。假设班级有10名学生,能实现以下功能: (1)输入10名学生的基本信息。 (2)输出10名学生的基本信息。 (3)输入学号、姓名,输出该学生的基本信息。 (4)按学号年龄对学生进行排序(升序),按c 语言成绩降序排序。 (5)统计优 良 不及格。 1.数据结构分析 此案例是一位数组,二维数组的综合运用。10名学生的学号,年龄,c 语言成绩可分别用长度为10的一位数组sno (long ),sage (int 型),cs (float 型)存储;10名学生的姓名可用元素长度为20个字符的一位数组,既字符型二维数组sname 存储。 2算法分析 使用模块化设计思想,进入系统主界面时有六个主要模块,输入学生的基本信息,输出学生的信息,查找学生 的基本信息,排序,统计,退出。学籍管理系统的机构功能框架,如图 5-28 所示。 图 5-28 学生管理系统的结构功能框架 5.5.2 奇数阶魔方矩阵 本节将实现技术矩魔方矩阵。 项目任务:用数组实现N 阶魔方矩阵(N 为奇数)。所谓的N 阶魔方矩阵是指把1~N*N 自然数按一定的方法排列成N*N 的矩阵,使得:任意行、任意列以及两个对角线上的数之和都为65。 5阶魔方如下: 17 24 1 8 15 输 入 学 生 的 基 本 信 息 输 出 学 生 的 信 息 查 找 学 生 的 基 本 信 息 排 序 统 计 退 出 学籍管理系统

23 5 7 14 16 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9 本章习题: 1.设数组int a【N】的元素全部不相等,求a中最大元素和次大元素。 2.求有10个整数的数组a中奇数的个数和平均值,以及偶数个数和平均值。 3.统计输入的一串字符(“假设以‘\n’结束”)中,大写字母A,B...Z各出现的次数。 4.数组a:“1,7,9,11,13,15,17,19”;数组b:“2,4,6,8,10”两个数组合并为数组c;按升序排列。 5.输入10个数,将10个整数按升序排列输出,并且奇数在前,偶数在后。如果输入的10个数是:10 9 8 7 6 5 4 3 2 1,则输出:1 3 5 7 8 2 4 6 8 10 (编程提示、;可利用两个数组变量,一个用来存放输入的整数,输入后,对该数组进行排序,然后将数据复制到另一个数组中,先复制奇数再复制偶数)。 6.定义一个有10个元素的一位数组count ,从键盘上输入8个整数,将其按从大到小的顺序排列,并将排列后的数组输出。 7.求数组int a【M】【N】每行元素的平均值和平均最大的行号。 8.求A【M】【N】与B【M】【N】两矩阵的和矩阵C【M】【N】和差矩阵D【M】【N】(矩阵的值由键盘输入)。 9.有n个学生,每人考m门课。 (1)找出成绩最高的学生的学号和课程号 (2)找出有不及格课程的学生的学号及其各门课的全部成绩。 (3)求全部学生全部课程的平均分。

数组的定义

一维数组的定义方式 在C语言中使用数组必须先进行定义。 一维数组的定义方式为:类型说明符数组名[常量表达式]; 其中:类型说明符是任一种基本数据类型或构造数据类型。数组名是用户定义的数组标识符。方括号中的常量表达式表示数据元素的个数,也称为数组的长度。 例如: int a[10]; 说明整型数组a,有10个元素。 float b[10],c[20]; 说明实型数组b,有10个元素,实型数组c,有20个元素。 char ch[20]; 说明字符数组ch,有20个元素。 (数组的定义和对变量的定义是一致的,可以连续在一行定义:float b[10],c[20];) 对于数组类型说明应注意以下几点: 数组的类型实际上是指数组元素的取值类型。对于同一个数组,其所有元素的数据类型都是相同的。 数组名的书写规则应符合标识符的书写规定。 数组名不能与其它变量名相同。 例如: main() { int a; float a[10]; …… } 是错误的。 方括号中常量表达式表示数组元素的个数,如a[5]表示数组a有5个元素。但是其下标从0开始计算。因此5个元素分别为a[0],a[1],a[2],a[3],a[4]。 不能在方括号中用变量来表示元素的个数,但是可以是符号常数或常量表达式。 例如:

#define FD 5 main() { int a[3+2],b[7+FD]; …… } 是合法的。但是下述说明方式是错误的。 main() { int n=5; int a[n]; …… } 允许在同一个类型说明中,说明多个数组和多个变量。 例如: int a,b,c,d,k1[10],k2[20]; 注意:1定义数组长度的常量表达式的结果必须是整形常量(包括字符) 2 在执行C99标准的编译系统中,允许对数组进行动态定义,即C99规定了可变长数组的存在。 但是,目前执行C99标准的编译器尚不普遍,在C89中是不允许使用可变长数组的,main和被调用函数中都不可以使用(如VC++6.0) 二维数组的定义 前面介绍的数组只有一个下标,称为一维数组,其数组元素也称为单下标变量。在实际问题中有很多量是二维的或多维的,因此C语言允许构造多维数组。多维数组元素有多

c语言数组习题

数组练习解答 1 定义一个名为a的单精度实型一维数组,长度为4,所有元素的初值均为0的数定义语句是___________ 【分析】按照一般数据定义语句的格式,可以直接写出方法一(参看答案);考虑到所有元素均赋初值时可以省略数组长度,可以写出方法二(参看答案);考虑到不省略数组长度,给部分元素赋初值时,所有未赋初值的元素均有空值(对数值型数组来说,初值为0),可以写出方法三(参看答案);考虑到选用静态型,不赋初值所有元素也自动赋予。空值(对数值型数组来说,初值为0),可以写出方法四(参看答案)。 【答案】方法一:float a[4]={0.0,0.0,0.0,0.0}; 方法二:float a[]={ 0.0,0.0,0.0,0.0}; 方法三:float a[4]= {0.0}; 方法四:static float [4]; 2 下列数组定义语句中,错误的是() ①char x[1]='a';②auto char x[1]={0}; ③static char x[l];④char x[l]; 【分析】显然答案①中给字符型数组赋初值的格式不对(不能直接赋予字符常量,必须用花括号括住),所以备选答案①是符合题意的答案。 【答案】① 3 用"冒泡排序法"对n个数据排序,需要进行n一1 步。其中第k步的任务是:自下而上,相邻两数比较,小者调上;该操作反复执行n-k次。现在假设有4个数据:4、l、3、2要排序,假定4为上、2为下,则利用"冒泡排序法"执行第2步后的结果是_________________。 【分析】开始排序前的排列执行第1步后的排列执行第2步后的排列 4 1 1 1 4 2 3 2 4 2 3 3 【答案】l、2、4、3 4 用"选择排序法"对n个数据排序,需要进行n-1步。其中第k步的任务是:在第k个数据到第n个数据中寻找最小数,和第k个数据交换。现在假设有4个数据:4、1、3、2要排序,则利用"冒泡排序法"执行第2步后的结果是______________________。 【分析】开始排序前的排列为: 4 1 3 2 执行第1步后的排列为: 1 4 3 2 执行第2步后的排列为: 1 2 3 4 【答案】1、2、3、4 5 下列数组定义语句中,正确的是() ①int a[][]={1,2,3,4,5,6};②char a[2]「3]='a','b'; ③int a[][3]= {1,2,3,4,5,6};④static int a[][]={{1,2,3},{4,5,6}}; 【分析】C语言规定,二维数组定义时不允许省略第二维的长度,所以备选答案①④是错误的。C语言还规定,定义字符型数组时不允许直接使用"字符常量"的方式赋初值,所以备选答案②也是错误的。显然备选答案③符合题意。【答案】③ 6 定义一个名为"s"的字符型数组,并且赋初值为字符串"123"的错误语句是() ①char s[]={‘1','2','3','\0 '};②char s「」={"123"}; ③char s[]={"123\n"}; ④char s[4]={'1','2','3'}; 【分析】备选答案①中省略了数组长度,所以每个元素都赋了初值,共计4个元素,初值依次为'l'、'2'、'3'、'\0',最后一个元素的值为字符串结束标记,所以数组S中存放的是字符串"123",该答案不符合题意(即正确的);备选答案③中直接赋予字符串作为初值所以数组s的长度为4,其中的初值是字符串"123",

数组练习题及答案

第五章数组练习题及答案 一、选择题 1、判断字符串a和b是否相等,应当使用() A、if(a==b) B、if(a=b) C、if(strcpy(a,b)) D、if(strcmp(a,b)) 2、以下正确的定义语句是() A、int a[1][4]={1,2,3,4,5}; B、float x[3][]={{1},{2},{3}}; C、long b[2][3]={{1},{1,2},{1,2,3}}; D、double y[][3]={0}; 3、以下各组选项中,均能正确定义二维实型数组a的选项是() A、float a[3][4]; float a[ ][4]; float a[3][ ]={{1},{0}}; B、float a(3,4); float a[3][4]; float a[ ][ ]={{0},{0}}; C、float a[3][4]; static float a[ ][4]={{0},{0}}; auto float a[ ][4]={{0},{0},{0}}; D、float a[3][4]; float a[3][ ]; float a[ ][4]; 4、下面程序的运行结果是() 1—5 DDCBA 6—10 BDABB 11—15 CCCBC 16—20 DDCBB 21—25 BBAAA 26—30 DBDDB #include "stdio.h" main() { char str[]="SSSWLIA",c; int k; for(k=2;((c=str[k])!='\0');k++) { switch(c) {case 'I':++k;break; case 'L':continue; default:putchar(c);continue; } putchar('*'); } } A、SSW* B、SW* C、SW*A D、SW 5、下面程序段是输出两个字符串中对应相等的字符。横线处应填入() char x[]="programming"; char y[]="Fortran"; int i=0; while(x[i]!='\0'&&y[i]!='\0')

数组

实验6 数组的使用 6.1 实验目的 (1)掌握一维数组、二维数组的定义存储分配方法; (2)了解如何给数组赋初值; (3)熟悉利用循环实现数组的赋值、输出以及处理编程方法。 (4)了解命令行参数数组的使用 (5)熟悉数组方法参数传递的特点。 6.2 知识要点 6.2.1 数组的定义与分配空间 (1)定义数组方括号的位置可在数组名前,也可在后。 int a[];等价于 int [] a; (2)给数组分配空间的办法: 办法1:通过new运算符,例:a=new int[10]; 办法2:给数组赋初值将自动给数组分配空间; 例:int b[]={1,2,3,4,5,3,4,6,7,3}; Java规定一维数组的第1个元素的下标为0。 (3)关于数组的默认初值问题 基本类型数组元素中存放的是数据本身,而引用类型的数组元素中存放的是对象的引用,基本类型上数组在分配空间后,不论数组在什么位置定义,均按基本类型变量的默认值规定赋初值,而引用类型数组在分配空间后默认初值为null。 (4)二维数组可看作是数组的数组,每个元素包括行列位置。 (5)数组的大小用length属性可求得,一维数组元素的最大下标为其length-1。 6.2.2 数组的访问 (1)用一重循环可遍历访问一维数组的所有元素。 例如,以下语句给数组a的所有元素赋值为0。 for (int k=0;k

相关文档