第4章 数组练习题答案

第4章数组练习题

一、选择题

1.在c语言中,引用数组元素时,其数组下标的数据类型允许是()。

A)整型常量 B)整型表达式C)整型常量或整型表达式 D)任何类型的表达式

2.要说明一个有10个int元素的数组,应当选择语句()。

A) int a[10]; B) int a(10); C) int a[9] D) int a[11]

3.对以下说明语句的正确理解是()。

int a[10]={6,7,8,9,10};

A)将5个初值依次赋给a[1]至a[5]

B)将5个初值依次赋给a[0]至a[4]

C)将5个初值依次赋给a[6]至a[10]

D)因为数组长度与初值的个数不相同,所以此语句不正确

4.已知:int a[10];则对a数组元素的正确引用是()。

A) a[10] B) a[3.5] C) a(5) D) a[10-10]

5.以下对一维整型数组a的正确说明是()。

A) int a(10); B)int n=10,a[n];

C) int n; D)#define SIZE 10;

scanf("%",&n); int a[SIZE];

int a[n];

6.要定义一个int型一维数组art,并使其各元素具有初值89,-23,0,0,0,不正确的定义

语句是()。

A) int art[5]={89,-23};

B) int art[ ]={89,-23};

C) int art[5]={89,-23,0,0,0};

D) int art[ ]={89,-23,0,0,0};

7.在C语言中,二维数组元素在内存中的存放顺序是()。

A)按行存放 B)按列存放 C)由用户自己定义 D)由编译器决定

8.以下对二维数组a的正确说明是()。

A)int a[3][] B) float a(3,4) C) double a[1][4] D) float a(3)(4) 9.已知:int a[3][4];则对数组元素引用正确的是()。

A)a[2][4] B)a[1,3] C) a[2][0] D) a(2)(1) 10.已知:int a[3][4]={0};则下面正确的叙述是()。

A)只有元素a[0][0]可得到初值0

B)此说明语句是错误的

C)数组a中的每个元素都可得到初值,但其值不一定为0

D)数组a中的每个元素均可得到初值0

11.以下各组选项中,均能正确说明二维实型数组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) f loat a[3][4]; D) float a[3][4];

float a[][4]={{0},{0}}; float a[3][];

float a[][4]={{0},{0},{0}}; float a[][4];

12.已知:int a[][3]={1,2,3,4,5,6,7};则数组a的第一维的大小是()。

A)2 B)3 C)4 D)无确定值

13.若二维数组a有m列,则在a[i][j]之前的元素个数为()。

A) j*m+i B) i*m+j C) i*m+j-1 D) i*m+j+1

14.要使字符数组str存放一个字符串"ABCDEFGH",正确的定义语句是()。

A) char str[8]={'A','B','C','D','E','F','G','H'};

B) char str[8]="ABCDEFGH";

C) char str[ ]={'A','B','C','D','E','F','G','H'};

D) char str[ ]="ABCDEFGH";

15.下面是对数组s的初始化,其中错误的是()。

A) char s[5]={"abc"} B) char s[5]={'a','b','c'};

C) char s[5]=""; D) char s[5]="abcde";

16.对两个数组a和b进行如下初始化

char a[]="ABCDEF";

char b[]={'A','B','C','D','E','F'};

则以下叙述正确的是()。

A) a与b数组完全相同 B) a与b长度相同

C) a和b中都存放字符串 D) a数组比b数组长度长

17.下面程序的运行结果是()。

char c[5]={'a','b','\0','c','\0'};

printf("%s",c);

A) 'a''b' B) ab C) ab c D) 以上三个答案均有错误

18.下面程序段运行的结果是()。

char s[]="a book!";

printf("%.4s",s);

A) a book! B) a bo

C) a boo D) 格式描述不正确,没有确定的输出

19.合法的数组定义是()。

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'};

20.要使字符串数组STR含有"ABCD","EFG"和"xy"三个字符串,不正确的定义语句有()。

A)char STR[ ][4]={"ABCD","EFG","XY"};

B)char STR[ ][5]= {"ABCD","EFG","XY"};

C)char STR[ ][6]= {"ABCD","EFG","XY"};

D)char STR[ ][7]={{'A','B','C','D','\0'},"EFG","XY"};

21.有两个字符数组a、b,则以下正确的输入格式是()。

A) gets (a,b); B) scanf ("%s%s",a,b);

C) scanf ("%s%s",&a,&b); D) gets ("a"), gets ("b");

22.判断字符串a和b是否相等,应当使用()。

A) if (a==b) B) if (a=b)

C) if (strcpy(a,b)) D) if (strcmp(a,b))

23.下述对C语言字符数组的描述中错误的是()。

A)字符数组可以存放字符串

B)字符数组的字符串可以整体输入、输出

C)可以在赋值语句中通过赋值运算符"="对字符数组整体赋值

D)不可以用关系运算符对字符数组中的字符串进行比较

24.运行下面程序段的输出结果是()。

char s[12]="string";

printf("%d",strlen(s));

A) 12 B) 7 C) 6 D) 5

25.函数调用strcat ( strcpy ( str1,str2 ), str3 )的功能是()。

A)将字符串str1复制到字符串str2中,再连接到字符串str3之后

B)将字符串str1连接到字符串str2之后,再复制到字符串str3之后

C)将字符串str2复制到字符串str1中,再将字符串str3连接到字符串str1之后

D)将字符串str2连接到字符串str1之后,再将字符串str1复制到字符串str3之中

26.有下面的程序段

char a[3],b[]="china";

printf("%s",a);

则()。

A)运行后将输出ch B)运行后将输出Ch

C)运行后将输出chi D)编译出错

27.下面描述正确的是()。

A)两个字符串所包含的字符个数相同时,才能比较字符串

B)字符个数多的字符串比字符个数少的字符串大

C)字符串"STOP"与"STOP "相等

D)字符串"hat"小于字符串"het"

28.下面程序段的运行结果是()。

char c[]="\t\b\\\0will\n";

printf ( "%d", strlen (c));

A) 14 B) 3 C) 9 D) 字符串中有非法字符,输出值不确定

29.下面程序段的运行结果是()。(其中~表示空格)

char a[7]="abcdef",b[4]="ABC";

strcpy (a,b);

printf ("%c",a[5]);

A) ~ B) \0 C) e D) f

30.以下函数的功能是:通过键盘输入数据,为数组中的所有元素赋值。

#define N 10

void arrin(int x[N])

{ int i=0;

while(i

scanf("%d", );

}

在下划线处应填入的是( )。

A) x+i B)&x[i+1] C)x+(i++) D)&x[++i]

二、填空题

1.构成数组的各个元素必须具有相同的数据类型。C语言中数组的下标必须是整正数、0

或整型表达式。如果一维数组的长度为n ,则数组下标的最小值为 0 ,最大值为n-1 。

2.在C语言中,一维数组的定义方式为:类型说说明符数组名 [常量表达式] 。

3.在C语言中数组名是一个地址常量,不能对其进行加、减及赋值操作。

4.已知数组T为一有10个单元的整型数组,正序输出T中的10个元素的值的语句为:

for (j=0;j<10;j++) printf(“%d”,T[j]);

下面的语句试图按相反的顺序显示输出T中的10个元素的相反数;请补充完整下面的语句:for( j=9 ; j>=0 ;j- -)printf(“%d”, T[j] );

5.字符数组是用来存放字符串的数组。字符数组中一个元素存放 1 个字符。

6.在C语言中存放字符'A'需要占用 1 个字节,存放字符串"A"需要占用 2 个字节。

7.当需要接受用户从键盘输入的含有空格的字符串时,应使用gets()函数。

8.以下语句的输出结果是 c:\winxp\time.exe 。

printf("%s\n","c:\\winxp\\time.exe");

9.执行“ static int b[5],a[][3]={1,2,3,4,5,6} ” 后,b[4]=( 0 ),a[1][2]=( 6 )。

10.若在程序中用到“ putchar() ”函数时,应在程序开头写上包含命令

(#include),若在程序中用到“strlen() ”函数时,应在程序开头写上包含命令(#include )。

三.完善程序题。

1.下面的程序是求出数组a的两条对角线上的元素之和。

#include "stdio.h"

{ int a[3][3]={{1,3,6},{7,9,11},{14,15,17}},sum1=0,sum2=0,i,j;

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

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

if (i==j) sum1=sum1+a[i][j];

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

for ( j=2 ; j>=0 ; j--)

if (i+j==2)

sum2=sum2+a[i][j];

printf("sum1=%d,sum2=%d\n",sum1,sum2);

}

2.下面的程序段的功能是产生如下形式的杨辉三角形。

1

1 1

1 2 1

1 3 3 1

1 4 6 4 1

...... ......

#define N 11

main()

{ int a[N][N],i,j;

for (i=1;i

{ a[i][1]=1;

a[i][i]=1;

}

for ( i=1 ; i

for (j=2; j

a[i][j]= a[i-1][j-1] +a[i-1][j];

...... ......

}

3.下面程序的功能是输出数组s中最大元素的下标,请填空。

main()

{ int k,p;

int s[]={1,-9,7,2,-10,3};

for(p=0,k=p;p<6;p++) if (s[p]>s[k])( k=p; )

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

}

4.下面程序的功能是将一个字符串str的内容颠倒过来,请填空。

#include "string.h"

main( )

{ int i,j,( k );

char str[]={""};

for(i=0,j=strlen(str),( j=j-1 );i

{ k=str[i];str[i]=str[j];str[j]=k;}

}

5. 以下程序的功能是将字符串s中的数字字符放入d数组中,最后输出d中的字符串。例如,输入字符串:abc123edf456gh,执行程序后输出:。请填空。

#include

#include

main()

{ char s[80], d[80]; int i, j;

gets(s);

for(i=j=0; s[i]!=‘\0’; i++)

if(_s[j]>=’0’&& s[j]<=’9’__) { d[j]=s[i]; j++;}

d[j]=‘\0’;

puts(d);

}

四.阅读程序题

1.以下程序执行时输入Language Programming的结果是( str= Language )。

#include

main()

{ char str[30];

scanf("%s",str);

printf("str=%s\n",str);

}

2.以下程序执行时输入Language Programming的结果是(str= Language Programming )。 #include

main()

{ char str[30];

gets(str);

printf("str=%s\n",str);

}

3.以下程序执行的结果是( s=1234 )。

#include

main()

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

j=1;

for(i=3;i>=0;i--) { s=s+a[i]*j;j=j*10;}

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

}

4.以下程序执行的结果是( 123 )。

#include

main()

{ char str[]={" 1a 2b 3c "};

int i;

for(i=0;str[i]!='\0';i++)

if(str[i]>='0'&&str[i]<='9') printf("%c",str[i]);

printf("\n");

}

5.以下程序执行的结果是( s=15 )。

#include

main()

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

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

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

}

6.以下程序执行的结果是( (1,1)=-5 )。

#include

main()

{ int i,j,row=0,col=0,m;

static int a[3][3]={1,-2,0,4,-5,6,2,4};

m=a[0][0];

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

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

if(a[i][j]

{m=a[i][j];

row=i;

col=j; }

printf("(%d,%d)=%d\n",row,col,m);

}

7.以下程序执行的结果是( 4, some string * test )。

#include

main()

{ static char s1[50]={"some string * "};

static char s2[]={"test"};

printf("%d,",strlen(s2));

strcat(s1,s2);

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

}

8.下列程序段的输出结果是__ Hello _______。

main()

{ char b[]=”Hello,you”;

b[5]=0;

printf(“%s \n”, b );

}

9. 若有以下程序

main()

{ int a[4][4]={{1,2,-3,-4},{0,-12,-13,14},{-21,23,0,-24},{-31,32,-33,0}};

int i,j,s=0;

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

{ for(j=0;j<4;j++)

{ if(a[i][j]<0)continue;

if(a[i][j]==0)break;

s+=a[i][j];

}

}

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

}

执行后输出的结果是____58___。

10. 若有以下程序

void prnt(int n, int aa[ ])

{ int i;

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

{ printf(“%6d”, aa[i]);

if( !(i%5) ) printf(“\n”);

}

printf(“\n”);

}

若变量n中的值为24,则prnt函数共输出 5 行,最后一行有 4 个数。

三、编写程序题

1.从键盘上输入5个数,输出最大、最小的元素以及它们的下标

#define N 5

#include

main( )

{ int i,j,k, max,min; static int a[5];

for (i=0;i<5;i++) scanf("%d",&a[i]);

max=min=a[0]; /*假定第一个元素既是最大的,也是最小的*/

j=k=0; /*对分别记录最大,最小元素下标的变量j,k初始化 */

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

{ if (max

else if (min>a[i]){ min=a[i];k=i;}

}

printf("max:a[%d]=%d,min:a[%d]=%d",j,max,k,min);

2.在一个已经排好序(假定为升序)的整型数组中插入一个数,使之仍然有序。

【分析】本题有两个关键:

一是要找到插入位置;

二是要将插入位置及以后的元素向后平移一个元素,最后才能在插入位置插入该数。

程序如下。

main()

{ int a[11]={3,5,8,11,15,16,19,23,26,33},i,j,x;

/*定义数组预留一个插入位置*/

printf("输入1个数:");

scanf("%d",&x); /*输入要插入的数 */

for(i=0;i<10;i++) /*寻找插入位置 */

if(a[i]>=x) break;

for(j=9;j>=i;j--) a[j+1]=a[j];

/*将插入位置及以后的元素向后平移*/

a[i]=x; /*插入数 */

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

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

printf("\n");

}

3.将任意一个十进制数转换成二进制数,然后以二进制数形式输出。

算法分析:

将十进制数n转换成二进制数,用整除2求余法。十进制数整除2得到的余数就是对应的二进制数的最低位,得到的商所对应的二进制数,恰好等于原二进制数去掉最低位后的剩余部分;

然后再用上述方法将商再整除2得到商对应的二进制数的最低位,即原二进制数的次低位;反复这样处理就可以从低位到高位,找到对应的二进制数的所有位。输出时二进制数的位必须按从高位到低位输出,所以必须将求出的二进制位用数组保存起来。可以定义一个一维数组d,将用整除2求余法得到的二进制位按d[0],d[1],…d[k] 的顺序保存。输出时,再按相反的顺序d[k], …d[1],d[0]输出。

处理时,存储当前二进制位的元素下标用变量i表示。程序如下:

main()

{

int i=0,n,d[40];

scanf("%d",&n);

while(n>0)

{

d[i++]=n%2; /* 整除2求余 */

n=n/2; /* 整除2求商 */

}

for(i--;i>=0;i--) printf("%1d",d[i]);

printf("\n");

}

运行结果:

87<回车>

4.用选择法对10个数排序

排序过程:

(1)首先通过n-1次比较,从n个数中找出最小的,将它与第一个数

交换—第一趟选择排序,结果最小的数被安置在第一个元素位置上(2)再通过n-2次比较,从剩余的n-1个数中找出关键字次小的记录,

将它与第二个数交换—第二趟选择排序

(3)重复上述过程,共经过n-1趟排序后,排序结束

#include

main()

{ int a[11],i,j,k,x;

printf("Input 10 numbers:\n");

for(i=1;i<11;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]

if(i!=k)

{ x=a[i]; a[i]=a[k]; a[k]=x;}

}

printf("The sorted numbers:\n");

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

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

}

5.输出扬辉三角形。

扬辉三角形是(a+b)n展开后各项的系数。如:(a+b)4展开后各项的系数为 1, 4, 6, 4, 1 。输出的扬辉三角形为:

1

1 1

1 2 1

1 3 3 1

1 4 6 4 1

它的特点是:

0列和对角线元素都是1。其它元素均为上一行的同列元素与前一列元素之和。按此规律编写程序如下:

# define N 6

main()

{

int i, j, y[N][N];

for(i=0;i

{

y[i][0]=1; /* 0列元素置1 */

y[i][i]=1; /* 对角线元素置1 */

}

for(i=0;i

{

for(j=1;j

和*/

for(j=0;j<=i;j++) printf("%5d", y[i][j]);

printf("\n");

}

}

为了节省存储单元,也可以改用一维数组来实现,各行共同使用一个一维数组。先将0号元素置1,其它元素置0,一维数组中存储的是首行的值,输出该行。再以此行的值为基础,从后向前计算下一行的每个元素值,它等于此元素原值与前一元素值之和,一直计算到1号元素,这样整行元数都成为就下一行的新值,输出此行。然后,再在新行的基础上再计算和输出下一行,如此反复,直到所有行输出完为止。

程序如下:

# define N 6

main()

{

int i, j, a[6]={1}; /* 定义数组,0号元素置1其它元素置0*/

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

{

for(j=i;j>0;j--) /* 从后向前 */

a[j]= a[j]+ a[j-1]; /*此元素与前一元素之和*/

for(j=0;j<=i;j++) printf("%5d", a[j]);

printf("\n");

}

}

运行结果:

1

1 1

1 2 1

1 3 3 1

1 4 6 4 1

1 5 10 10 5 1

6.从键盘输入8个学生三门课程的成绩求每个学生各门课的平均分,并按平均分从高到低的顺

序输出每个学生各门课程的成绩和平均成绩。

(1)定义数组 int s[N][3]; 存储三门课程的成绩。

数组 float a[N]; 存储平均成绩。

(2)用for循环从键盘按行输入每个学生各门课的成绩,计算出平均成绩并存入数组a对应下

标的数组元素。

(3)用选择排序对平均成绩排序,交换时应整行交换。

(4)按要求输出。

程序如下:

# define N 8

main( )

{ int i,j,k,m,s[N][3]; /* 定义数组和变量 */

float t,a[N];

printf(" Input 10 student's scores:\n");

for (i=0; i

scanf("%d%d%d",&s[i][0],&s[i][1],&s[i][2]);

for (i=0; i

a[i]=(s[i][0]+s[i][1]+s[i][2])/3.0;

for (i=0; i

{ for (j=i+1; j

if (a[j]>a[i]) /* 成绩高者交换到i */

{ for (k=0; k<3; k++)

{ m=s[i][k];

s[i][k]=s[j][k];

s[j][k]=m;

}

t=a[i];

a[i]=a[j];

a[j]=t;

}

}

printf("the sorted scores: \n");

for (i=0; i

printf("%8.1f\n", a[i]);

}

}

为了减少交换次数,可以用变量k存储第i趟成绩最高者的下标,这样,每趟最多交换一次。可将排序部分的程序改为:

for (i=0; i

{

k=i; /* 用k存储第i趟成绩最高者的下标 */ for (j=i+1; j

if (a[j]> a[k]) k=j;

if (k!=i) /* 将第i趟成绩最高者交换到i行 */ {

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

{

m=s[i][j];

s[i][j]=s[k][j];

s[k][j]=m;

}

t=a[i];

a[i]=a[k];

a[k]=t;

}

}

运行结果:(略)

7.由键盘任意输入一字符串和一个字符,要求从该串中删除所指定的字符。

程序如下:

main()

{ char x,s[20];

int i,j;

gets(s);

printf("deldte ? \n");

scanf("%c",&x);

for(i=j=0;s[i]!='\0';i++)

if(s[i]!=x)

s[j++]=s[i];

s[j]='\0';

puts(s);

}

程序运行时若由键盘输入:how do you do?

显示屏幕显示:deldte ?

由键盘又输入:o

则运行结果为:hw d yu d?

8.从键盘上输入两个字符串,不用字符串函数strcmp()比较两者的大小

分析:

(1)输入两个字符串,分别存放在str1与str2中;

(2)设计函数compstr()比较两字符,返回ASCII 码之差,赋给主函数的变量flag;

(3)用do……while循环依次比较两个字符串的对应字符,结束的条件是两字符串至少有一个结束,或者比较字符不相等。

(4)当循环结束时flag 的值为0或为第一个不相等的字符的ASCII码值之差,由此可以判断出字符串的大小。

#include

main( )

{int i,flag;

int compstr(char, char );

char str1[80],str2[80];

gets(str1); gets(str2);

i=0;

do

{ flag=compstr(str1[i],str2[i]);/*数组元素作实参*/

i++;

}while((str1[i]!='\0')&&(str2[i]!='\0')&&(flag==0));

/*只要有一个字符串到了末尾比较结束*/

if (flag==0) printf("%s = %s",str1,str2);

else if (flag>0) printf("%s > %s",str1,str2);

else printf("%s < %s",str1,str2);

}

int compstr (char c1, char c2)

{ int t;

t=c1-c2;

return t;

}

9.输入一串字符,判断该字符串是否是回文。

【分析】回文字符串具有中心对称性,从左往右读和从右往左读相同。例如:“ABCCBA”,“上海自来水来自海上”等都是回文。判断回文即是根据这一特性,从左右两边字符开始进行比较,相同则逐渐向中间靠拢,直到遇到不同字符或全部比较完为止。

程序如下。

#include

#include

main()

{char str[20];

int i, j;

gets(str);

j=strlen(str)-1;

for(i=0;i

if(i>=j) printf("该字符串是回文!\n");

else printf("该字符串不是回文!\n");

}

10.打印 y=exp(-x)*cos(x) 函数曲线,其中x从0 变化到3.5π间距为π/18。

定义一个二维字符数组s[23][68],函数坐标点用*号表示,纵坐标在0列,横坐标在22行。

程序如下:

# include "math.h"

main()

{

int i,j;

char s[36][68];

float x=0.0,h=3./18;

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

{

s[i][0]='|';

s[i][67]='\0';

for(j=1;j<67;j++)

s[i][j]=' ';

}

s[22][0]='+';

for(j=1;j<66;j++) s[22][j]='-';

s[22][66]='>';

s[23][66]='x';

printf("exp(-x)*cos(x)\n ^\n");

for(j=0;j<64;j++)

{

i=(int)(22.5-22*exp(-x/6.0)*cos(x));

s[i][j]='*';

x+=h;

}

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

printf(" %s\n",s[i]);

}

运行结果如图7.5所示。

exp(-x)*cos(x)

^

*

|*

| *

|

|

| *

|

| *

|

|

| *

|

|

| *

| ***

| ** **

| * * *

| * *

| *

| * * *

| * *

| *

+--------*-----------------*-----------------*-----------------*--> | * ** x | * * *

| * ** **

| * ** ***

| * * ***

|

| *

| *

| *

| * *

| *

| * **

| ***

图7.5 y=exp(-x)*cos(x) 函数曲线输出结果

第4章 数组练习题答案

第4章数组练习题 一、选择题 1.在c语言中,引用数组元素时,其数组下标的数据类型允许是()。 A)整型常量 B)整型表达式C)整型常量或整型表达式 D)任何类型的表达式 2.要说明一个有10个int元素的数组,应当选择语句()。 A) int a[10]; B) int a(10); C) int a[9] D) int a[11] 3.对以下说明语句的正确理解是()。 int a[10]={6,7,8,9,10}; A)将5个初值依次赋给a[1]至a[5] B)将5个初值依次赋给a[0]至a[4] C)将5个初值依次赋给a[6]至a[10] D)因为数组长度与初值的个数不相同,所以此语句不正确 4.已知:int a[10];则对a数组元素的正确引用是()。 A) a[10] B) a[3.5] C) a(5) D) a[10-10] 5.以下对一维整型数组a的正确说明是()。 A) int a(10); B)int n=10,a[n]; C) int n; D)#define SIZE 10; scanf("%",&n); int a[SIZE]; int a[n]; 6.要定义一个int型一维数组art,并使其各元素具有初值89,-23,0,0,0,不正确的定义 语句是()。 A) int art[5]={89,-23}; B) int art[ ]={89,-23}; C) int art[5]={89,-23,0,0,0}; D) int art[ ]={89,-23,0,0,0}; 7.在C语言中,二维数组元素在内存中的存放顺序是()。 A)按行存放 B)按列存放 C)由用户自己定义 D)由编译器决定 8.以下对二维数组a的正确说明是()。 A)int a[3][] B) float a(3,4) C) double a[1][4] D) float a(3)(4) 9.已知:int a[3][4];则对数组元素引用正确的是()。 A)a[2][4] B)a[1,3] C) a[2][0] D) a(2)(1) 10.已知:int a[3][4]={0};则下面正确的叙述是()。 A)只有元素a[0][0]可得到初值0 B)此说明语句是错误的 C)数组a中的每个元素都可得到初值,但其值不一定为0 D)数组a中的每个元素均可得到初值0 11.以下各组选项中,均能正确说明二维实型数组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) f loat a[3][4]; D) float a[3][4]; float a[][4]={{0},{0}}; float a[3][]; float a[][4]={{0},{0},{0}}; float a[][4]; 12.已知:int a[][3]={1,2,3,4,5,6,7};则数组a的第一维的大小是()。 A)2 B)3 C)4 D)无确定值 13.若二维数组a有m列,则在a[i][j]之前的元素个数为()。 A) j*m+i B) i*m+j C) i*m+j-1 D) i*m+j+1 14.要使字符数组str存放一个字符串"ABCDEFGH",正确的定义语句是()。 A) char str[8]={'A','B','C','D','E','F','G','H'};

数组c习题答案解析

习题 4 一、单项选择题 1. 若有说明int a[3][4];则a数组元素的非法引用是【】 A. a[0][2*1] B. a[1][3] C. a[4-2][0] D. a[0][4] 【答案】D 【解析】数组下标从0开始,a[0][4]的列下标越界。 2. 在C++语言中,引用数组元素时,其数组下标的数据类型允许是【】 A. 整型常量 B. 整型表达式 C. 整型常量或整型表达式 D. 任何类型的表达式 【答案】C 3. 以下不正确的定义语句是【】 A. double x[5]={2.0,4.0,6.0,8.0,10.0}; B. int y[5]={0,1,3,5,7,9}; C. char c1[]={′1′,′2′,′3′,′4′,′5′}; D. char c2[]={′\x10′,′\xa′,′\x8′}; 【答案】B 【解析】初始值的个数大于数组的大小,系统会出现编译错误。 4. 对以下说明语句的正确理解是【】 int a[10]={6,7,8,9,10}; A. 将5个初值依次赋给a[1]至a[5] B. 将5个初值依次赋给a[0]至a[4] C. 将5个初值依次赋给a[6]至a[10] D. 因为数组长度与初值的个数不相同,所以此语句不正确 【答案】B 5. 若有说明:int a[ ][4]={0,0};则下面不正确的叙述是【】 A. 数组a的每个元素都可得到初值0 B. 二维数组a的第一维大小为1 C. 当初值的个数能被第二维的常量表达式的值除尽时,所得商数就是第一维的大小 D. 只有元素a[0][0]和a[0][1]可得到初值,其余元素均得不到确定的初值 【答案】D 【解析】二维数组初始化时,行大小可以省略,被省略的大小根据初值的个数系统来确定,本题中,有2个初值说明是1行4列,所以第一维为1。元素a[0][0]和a[0][1]赋初值为0 ,其余元素初值系统默认为0。 6. 以下能对二维数组c进行正确的初始化的语句是【】 A. int c[3][]={{3},{3},{4}}; B. int c[][3]={{3},{3},{4}}; C. int c[3][2]={{3},{3},{4},{5}};

Java数组练习题(带答案)

一填空题 1)数组的元素通过下标来访问,数组Array的长度为Array.length 。 2)数组复制时,"="将一个数组的引用传递给另一个数组。 3)JVM将数组存储在栈(堆或栈)中。 4)数组的二分查找法运用的前提条件是数组已经排序。 5)Java中数组的下标的数据类型是整型。 6)数组最小的下标是0 。 7)arraycopy()的最后一个参数指明复制元素的个数。 8)向方法传递数组参数时,传递的是数组的引用。 9)数组初始化包括数组的申明,创建和初始化。 10)数组下标访问超出索引范围时抛出数组越界异常 11)浮点型数组的默认值是0.0f 。 12)数组创建后其大小不能改变。 二选择题 1.下面错误的初始化语句是_ABD__ 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.下面的二维数组初始化语句中,正确的是____ 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]前的数组元素个数为____ 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. 链表 8.下面程序的运行结果是____ main() { int a[][]={{1,2,3},{4,5,6}}; System.out.printf("%d", a[1][1]); } A. 3 B. 4 C. 5 D. 6 9.下面程序的运行结果是_C___ main() {

《数据结构(C语言版 第2版)》(严蔚敏 著)第四章练习题答案

《数据结构(C语言版第2版)》(严蔚敏著) 第四章练习题答案 第4章串、数组和广义表 1.选择题 (1)串是一种特殊的线性表,其特殊性体现在()。 A.可以顺序存储B.数据元素是一个字符 C.可以链式存储D.数据元素可以是多个字符若 答案:B (2)串下面关于串的的叙述中,()是不正确的? A.串是字符的有限序列B.空串是由空格构成的串 C.模式匹配是串的一种重要运算D.串既可以采用顺序存储,也可以采用链式存储 答案:B 解释:空格常常是串的字符集合中的一个元素,有一个或多个空格组成的串成为空格串, 零个字符的串成为空串,其长度为零。 (3)串“ababaaababaa”的next数组为()。 A.012345678999 B.012121111212 C.011234223456 D.0123012322345 答案:C (4)串“ababaabab”的nextval为()。 A.010104101B.010102101 C.010100011 D.010101011 答案:A (5)串的长度是指()。 A.串中所含不同字母的个数B.串中所含字符的个数 C.串中所含不同字符的个数D.串中所含非空格字符的个数 答案:B 解释:串中字符的数目称为串的长度。 (6)假设以行序为主序存储二维数组A=array[1..100,1..100],设每个数据元素占2个存储单 元,基地址为10,则LOC[5,5]=()。 A.808 B.818 C.1010 D.1020 答案:B 解释:以行序为主,则LOC[5,5]=[(5-1)*100+(5-1)]*2+10=818。 (7)设有数组A[i,j],数组的每个元素长度为3字节,i的值为1到8,j的值为1到10,数 组从内存首地址BA开始顺序存放,当用以列为主存放时,元素A[5,8]的存储首地址为()。 A.BA+141 B.BA+180 C.BA+222 D.BA+225 答案:B 解释:以列序为主,则LOC[5,8]=[(8-1)*8+(5-1)]*3+BA=BA+180。 (8)设有一个10阶的对称矩阵A,采用压缩存储方式,以行序为主存储,a11为第一元素, 其存储地址为1,每个元素占一个地址空间,则a85的地址为()。 A.13 B.32 C.33 D.40

数据结构 第4章 串练习题

第四章串 一、选择题 1.下面关于串的的叙述中,哪一个是不正确的?()【北方交通大学 2001 一、5(2分)】 A.串是字符的有限序列 B.空串是由空格构成的串 C.模式匹配是串的一种重要运算 D.串既可以采用顺序存储,也可以采用链式存储 2 若串S1=‘ABCDEFG’, S2=‘9898’ ,S3=‘###’,S4=‘012345’,执行 concat(replace(S1,substr(S1,length(S2),length(S3)),S3),substr(S4,index(S2, ‘8’),length(S2))) 其结果为()【北方交通大学 1999 一、5 (25/7分)】 A.ABC###G0123 B.ABCD###2345 C.ABC###G2345 D.ABC###2345 E.ABC###G1234 F.ABCD###1234 G.ABC###01234 3.设有两个串p和q,其中q是p的子串,求q在p中首次出现的位置的算法称为()A.求子串 B.联接 C.匹配 D.求串长 【北京邮电大学 2000 二、4(20/8分)】【西安电子科技大学 1996 一、1 (2分)】 4.已知串S=‘aaab’,其Next数组值为()。【西安电子科技大学 1996 一、7 (2分)】A.0123 B.1123 C.1231 D.1211 5.串‘ababaaababaa’的next数组为()。【中山大学 1999 一、7】A.012345678999 B.012121111212 C.011234223456 D.0123012322345 6.字符串‘ababaabab’的nextval 为() A.(0,1,0,1,04,1,0,1) B.(0,1,0,1,0,2,1,0,1) C.(0,1,0,1,0,0,0,1,1) D.(0,1,0,1,0,1,0,1,1 ) 【北京邮电大学 1999 一、1(2分)】 7.模式串t=‘abcaabbcabcaabdab’,该模式串的next数组的值为(),nextval数组的值为()。 A.0 1 1 1 2 2 1 1 1 2 3 4 5 6 7 1 2 B.0 1 1 1 2 1 2 1 1 2 3 4 5 6 1 1 2 C.0 1 1 1 0 0 1 3 1 0 1 1 0 0 7 0 1 D.0 1 1 1 2 2 3 1 1 2 3 4 5 6 7 1 2 E.0 1 1 0 0 1 1 1 0 1 1 0 0 1 7 0 1 F.0 1 1 0 2 1 3 1 0 1 1 0 2 1 7 0 1 【北京邮电大学 1998 二、3 (2分)】 8.若串S=’software’,其子串的数目是()。【西安电子科技大学 2001应用一、2(2分)】 A.8 B.37 C.36 D.9 9.设S为一个长度为n的字符串,其中的字符各不相同,则S中的互异的非平凡子串(非空且不同于S本身)的个数为()。【中科院计算所 1997 】 A.2n-1 B.n2 C.(n2/2)+(n/2) D.(n2/2)+(n/2)-1 E. (n2/2)-(n/2)-1 F.其他情况 10.串的长度是指()【北京工商大学 2001 一、6 (3分)】 A.串中所含不同字母的个数 B.串中所含字符的个数 C.串中所含不同字符的个数 D.串中所含非空格字符的个数 二、判断题 1.KMP算法的特点是在模式匹配时指示主串的指针不会变小。()【北京邮电大学 2002 一、4 (1分)】

第四章 数组习题集答案

第四章数组习题 一、选择题 1. 如果char型变量占两个字节的存储单元,则按照如下方式定义的数组x占用的字节数 是【】。 char x[50]={2,4,6,8,10}; A)50 B)100 C)10 D) 5 2. 下面关于数组的定义正确的是【】。 A) int n=10; float a[n]={1.0,2.1,3.2}; B) #define N 10 int a[N]={1,2,3}; C) int n; scanf("%d", &n); int a[n]; D) #define N 10; int a[N]={1,2,3}; 3. 若有说明int a[5][4]; 则对其数组元素的正确引用是【】。 A)a[3+1][2] B)a(2)(3) C)a[0,2]D)a[3][5] 4. 若定义了数组int k[][4]={{1},{1,2,3},{5,6}};则数组共有【】元素。 A)6 B)9 C)10 D)12 5. 要将20,30,40,50 存入数组b中, 下列正确的程序段是【】。 A) int i,b[4]; for(i=0; i<4; i++) b[i]=(i+2)*10; B) int b[4]; b={20,30,40,50}; C) int b[4]; b[1]=20,b[2]=30,b[3]=40,b[4]=50; D) int b[4]; b[4]={20,30,40,50}; 6. 下列二维数组初始化语句中正确且与语句float a[]={0,1,2,0,4,0}等价的是【】。 A)float a[6]={0,1,2,0,4}; B)float a[]={0,1,2,0,4}; C)float a[7]={0,1,2,0,4,0}; D)float a[5]={0,1,2,0,4}; 7. printf("%d \n ", strlen ("ATS\n012\1\\" )) ; 程序段的输出结果是【】。

数据结构答案第4章

数据结构答案第4章本页仅作为文档封面,使用时可以删除 This document is for reference only-rar21year.March

第 4 章广义线性表——多维数组和广义表 2005-07-14 第 4 章广义线性表——多维数组和广义表 课后习题讲解 1. 填空 ⑴数组通常只有两种运算:()和(),这决定了数组通常采用()结构来实现存储。 【解答】存取,修改,顺序存储 【分析】数组是一个具有固定格式和数量的数据集合,在数组上一般不能做插入、删除元素的操作。除了初始化和销毁之外,在数组中通常只有存取和修改两种操作。 ⑵二维数组A中行下标从10到20,列下标从5到10,按行优先存储,每个元素占4个存储单元, A[10][5]的存储地址是1000,则元素A[15][10]的存储地址是()。 【解答】1140 【分析】数组A中每行共有6个元素,元素A[15][10]的前面共存储了(15-10)×6+5个元素,每个元素占4个存储单元,所以,其存储地址是1000+140=1140。 ⑶设有一个10阶的对称矩阵A采用压缩存储,A[0][0]为第一个元素,其存储地址为d,每个元素占1个存储单元,则元素A[8][5]的存储地址为()。 【解答】d+41 【分析】元素A[8][5]的前面共存储了(1+2+…+8)+5=41个元素。 ⑷稀疏矩阵一般压缩存储方法有两种,分别是()和()。 【解答】三元组顺序表,十字链表 ⑸广义表((a), (((b),c)),(d))的长度是(),深度是(),表头是(),表尾是 ()。 【解答】3,4,(a),((((b),c)),(d)) ⑹已知广义表LS=(a,(b,c,d),e),用Head和Tail函数取出LS中原子b的运算是()。 【解答】Head(Head(Tail(LS))) 2. 选择题 ⑴二维数组A的每个元素是由6个字符组成的串,行下标的范围从0~8,列下标的范围是从0~9,则存放A至少需要()个字节,A的第8列和第5行共占()个字节,若A按行优先方式存储,元素A[8][5]的起始地址与当A按列优先方式存储时的()元素的起始地址一致。 A 90 B 180 C 240 D 540 E 108 F 114 G 54

C语言程序设计 练习题参考答案 第四章

C语言程序设计练习题参考答案第四章(1) 一维数组 /* 4.11 fibonacci数列,前15项1,1,2,3,5,。。。。。*/ #include "stdio.h" void main() { int f[15]={1,1}, i; for(i=2;i<=14;i++) /* 计算*/ f[i]=f[i-2]+f[i-1]; printf("fibonacci数列,前15项\n"); /* 输出*/ for(i=0;i<=14;i++) { printf("%5d",f[i]); if((i+1)%5==0) printf("\n"); } } /* 4.12 数组元素前移动一个位置 */ #include "stdio.h" void main() { int a[10]={0,1,2,3,4,5,6,7,8,9}; int i,t; printf("\n移动之前:\n"); for(i=0;i<=9;i++) printf("%3d",a[i]); /* 移动*/ t=a[0]; for(i=0;i<=9;i++)

a[i]=a[i+1]; a[9]=t; printf("\n移动之后:\n"); for(i=0;i<=9;i++) printf("%3d",a[i]); } /* 4.13 有序数列中插入若干个数,仍然保持有序 */ #include "stdio.h" void main() { int a[100]={1,4,8,10}; int i,k,x,count=4;/* i,k 循环变量,x 输入整数,count 有多少整数*/ printf("\n请输入要插入的整数,输入之后按回车键,如要结束请输入-1\n"); scanf("%d",&x); while(x!=-1) { /* 寻找插入位置*/ for(i=0;i=x) { /* 移动*/ for(k=count;k>i;k--) a[k]=a[k-1]; /* 插入*/ a[i]=x; break; }

c语言数组练习题及答案

c语言数组练习题及答案 第一题:在数组a中,存放有n个学生的成绩.试编一函数:将低于平均分的学生人数m由函数值返回,将低于平均分的分数由数组b带回. int fun(int a[],int n,int b[]) { int i,m=0,aver=0; for(i=0;i

data=m+1; n=0; while(n

Java数组练习题(带答案)

For personal use only in study and research; not for commercial use For personal use only in study and research; not for commercial use 一填空题 1)数组的元素通过下标来访问,数组Array的长度为Array.length 。 2)数组复制时,"="将一个数组的引用传递给另一个数组。 3)JVM将数组存储在栈(堆或栈)中。 4)数组的二分查找法运用的前提条件是数组已经排序。 5)Java中数组的下标的数据类型是整型。 6)数组最小的下标是0 。 7)arraycopy()的最后一个参数指明复制元素的个数。 8)向方法传递数组参数时,传递的是数组的引用。 9)数组初始化包括数组的申明,创建和初始化。 10)数组下标访问超出索引范围时抛出数组越界异常 11)浮点型数组的默认值是0.0f 。 12)数组创建后其大小不能改变。 二选择题 1.下面错误的初始化语句是_ABD__ 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.下面的二维数组初始化语句中,正确的是____ 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]前的数组元素个数为____ 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. 链表 8.下面程序的运行结果是____ main() { int a[][]={{1,2,3},{4,5,6}}; System.out.printf("%d", a[1][1]);

c语言第3-4章练习题有答案

第3-4章练习题 一、选择题 1. 以下错误的字符串赋值或赋初值方式是: (A)char str1[]=”string”, str2[]=”12345678”;st r cpy(str2,str1); (B)char str[7]={‟s‟,‟t‟,‟r‟,‟i‟,‟n‟,‟g‟}; (C)char str[10] ;str =”string”; (D)char *str; str=”string”; 2. 数组定义中不正确的是: (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}}; 3. 以下对一维数组a正确初始化的是: (A)int a[10]=(0,0,0,0,); (B)int a[10]={}; (C)int a[10]={0}; (D)int a[10]=(10*2); 4.以下选项中,不能正确赋值的是: (A)char s1[10];s1="Ctest"; (B)char s2[]={'C', 't', 'e', 's', 't'}; (C)char s3[20]="Ctest"; (D)char *s4="Ctest\n" 5.若有说明:int i, j=2,*p=&i;,则能完成i=j赋值功能的语句是: (A)i=*p; (B)*p=*&j; (C)i=&j; (D)i=**p; 6. 下面各语句行中,不能正确进行字符串操作的语句行是: (A) char st[10]={"abcde"}; (B) char s[5]={'a','b','c','d','e'}; (C) char *s; s="abcde"; (D) char *s; scanf("%s",s); 7.设有如下的程序段,执行上面的程序段后,*(ptr+5)的值为: char str[ ]="Hello"; char *ptr; ptr=str; (A) 'o' (B) '\0' (C)不确定的值(D) 'o'的地址 8. 请选出以下语句的输出结果 printf("%d\n",strlen("\t\"\065\xff\n")); (A)5 (B)14 (C)8 (D)输出项不合法,无正常输出 9.以下程序段给数组所有的元素输入数据,请选择正确答案填入。 main() { int a[10],i=0; while(i<10) scanf("%d",________ ); ┇} (A)a+(i++) (B)&a[i+1] (C)a+i (D)&a[++i] 10.若有以下说明和语句,请选出哪个是对c数组元素的正确引用 int c[10], *cp; cp=c; (A)cp+1 (B)*(cp+3) (C)**(cp+1)+3 (D)*(*cp+2) 11.设有如下一段程序, 执行下面的程序后, ab的值为: int *var, ab; ab = 100; var = &ab; ab = *var + 10; (A)120 (B)110 (C)100 (D)90 12.若有以下定义:int a[10], *p=a ;则p+4表示 A) 元素a[4]的地址B) 元素a[4]的值C) 元素a[5]的地址D) 元素a[5]的值 13. 判断字符串s1是否小于字符串s2,应当使用

第4章数组练习题

一填空题 1)数组的元素通过来访问,数组Array的长度为。 2)数组复制时,"="将一个数组的传递给另一个数组。 3)没有显式引用变量的数组称为数组。 4)JVM将数组存储在(堆或栈)中。 5)数组的二分查找法运用的前提条件是数组已经。 6)矩阵或表格一般用维数组表示。 7)如果把二维数组看成一维数组,那么数组的元素是数组。 8)Java中数组的下标的数据类型是。 9)不用下标变量就可以访问数组的方法是。 10)数组最小的下标是。 11)arraycopy()的最后一个参数指明。 12)向方法传递数组参数时,传递的是数组的。 13)线性查找法的平均查找长度为。 14)数组初始化包括。 15)数组下标访问超出索引范围时抛出异常 16)浮点型数组的默认值是。 17)对象型数组的默认值是。 18)对象类型的数组虽然被默认初始化,但是并没有构造函数。 19)二维数组的行的长度不同。 20)数组创建后其大小改变。 二选择题 1.下面错误的初始化语句是___ 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]后,下面错误的引用是___ A. a[0]=1; B. a[10]=2; C. a[0]=5*2; D. a[1]=a[2]*a[0]; 3.下面的二维数组初始化语句中,正确的是____ 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.引用数组元素时,数组下标可以是____ A. 整型常量 B. 整型变量 C. 整型表达式 D. 以上均可 5.定义了int型二维数组a[6][7]后,数组元素a[3][4]前的数组元素个数为____ A. 24 B. 25 C. 18 D. 17 6.下列初始化字符数组的语句中,正确的是____ 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中储存在中

Java数组练习题(带答案)

一填空题 1)数组的元素通过下标来访问,数组Array的长度为Array。length . 2)数组复制时,"=”将一个数组的引用传递给另一个数组. 3)JVM将数组存储在栈(堆或栈)中。 4)数组的二分查找法运用的前提条件是数组已经排序. 5)Java中数组的下标的数据类型是整型。 6)数组最小的下标是0 . 7)arraycopy()的最后一个参数指明复制元素的个数。 8)向方法传递数组参数时,传递的是数组的引用。 9)数组初始化包括数组的申明,创建和初始化。 10)数组下标访问超出索引范围时抛出数组越界异常 11)浮点型数组的默认值是0.0f 。 12)数组创建后其大小不能改变。 二选择题 1.下面错误的初始化语句是_ABD__ 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.下面的二维数组初始化语句中,正确的是____ 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]前的数组元素个数为____ 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。链表 8.下面程序的运行结果是____ main() { int a[][]={{1,2,3},{4,5,6}}; System.out。printf(”%d”, a[1][1]); } A。3 B. 4 C. 5 D。6 9.下面程序的运行结果是_C___ main() {

c++数组部分练习题及答案

实验一数组的概念 一、实验目的 1. 掌握数组的概念。 2. 掌握访问一维数组元素的方法。 二、实验内容 1. 编程完成下列要求的操作,实现字符串的存储和修改。 步骤一:将“michael jackson”的名字保存在字符数组name中。 步骤二:打印输出name中的名字。 步骤三:将name中的两个单词的首字符改为大写。 步骤四:再次打印输出name中的名字,比较查看修改是否成功。 #include void main() { // 步骤一:将"michael jackson"的名字保存在字符数组name中。 char name[]="michael jackson"; // 步骤二:打印输出name中的名字。 cout< void main() { const int N=10; int years[N]={16, 3, 7, 6, 22, 13, 7, 6, 14, 8}, salary; cout<<"******** 一维数组的简单应用——根据工龄计算基本工资********\n\n"; cout<<"序号\t工龄\t工资\n"; for(int i=0;i

数组练习题及答案

数组练习题及答案 第五章数组练习题及答案 一、选择题 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;

数组练习题及答案

第五章数组练习题及答案 一、选择题 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;

相关主题
相关文档
最新文档