数组练习及答案

数组练习及答案
数组练习及答案

数组练习

121、合法的数组定义是___ _____.

A) int a[6]={"string"};

B) int a[5]={0,1,2,3,4,5};

C) char a={"string"};

D) char a[]={0,1,2,3,4,5};

122、要求下面的程序运行后,显示如下结果:2 10 4 6

1 5

2 3

2 4 7 8

5 1 3 2

则程序中的划线处应填入___ _____.

#include

void main( )

{ int a[4][4]={ ________ };

int i,j;

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

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

printf("\n"); }

}

A) {1,5,2,3},{2,4,7,8},{5,1,3,2}

B) {2,10,4,6},{1,5,2,3},{2,4,7,8},{5,1,3,2}

C) {5,1,3,2},{2,4,7,8},{1,5,2,3}

D) {2,1,2,5},{10,5,4,1},{4,2,7,3},{6,3,8,2}

123、给出以下定义:

char x[ ]="abcdefg";

char y[ ]={'a','b','c','d','e','f','g'};

则正确的叙述为___ _____.

A) 数组x和数组y等价B) 数组x和数组y的长度相同

C) 数组x的长度大于数组y的长度

D) 数组x的长度小于数组y的长度

124、定义如下变量和数组:

int i;

int x[4][4]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};

则下面语句的输出结果是___ _____.

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

A) 1 5 9 13 B) 1 6 11 16

C) 4 7 10 13 D) 4 8 12 16

126、若希望下面的程序运行后输出45,程序空白处的正确选择是___ _____.

#include

void main( )

{ int i,j=10,a[ ]={1,3,5,7,9,11,13,15};

for( ____________ )

j+=a[i];

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

}

A) i=5;i>1;i-- B) i=0;i<7;++i

C) i=5;i>=1;--i D) i=2;i<6;++i

127、若有以下说明:

char s1[ ]={"tree"},s2[]={"flower"}; ,

则以下对数组元素或数组的输出语句中,正确的是__ ___.

A) printf("%s%s",s1[5],s2[7]);

B) printf("%c%c",s1,s2);

C) puts(s1);puts(s2); D) puts(s1,s2);

128、下列一维数组初始化语句中,正确且与语句float a[ ]={0,3,8,0,9};等价的是_____ ___.

A) float a[6]={0,3,8,0,9};

B) float a[4]={0,3,8,0,9};

C) float a[7]={0,3,8,0,9};

D) float a[5]={0,3,8,0,9};

129、运行下面程序段的输出结果是___ _____.

char s1[10]={'S','e','t','\0','u','p','\0'};

printf("%s",s1);

A) Set B) Setup C) Set up D) 'S''e''t'

130、以下程序段的输出结果是____ ____.

char s[ ]="an apple";

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

A) 7 B) 8 C) 9 D) 10

131、若有说明:char c[10]={'E','a','s','t','\0'};,则下述说法中正确的是_____ _____.

A) c[7]不可引用

B) c[6]可引用,但值不确定

C) c[4]不可引用

D) c[4]可引用,其值为空字符

132、下列初始化语句中,正确且与语句

char c[ ]="string";等价的是____ ____.

A) char c[ ]={'s','t','r','i','n','g'};

B) char c[ ]='string';

C) char c[7]={'s','t','r','i','n','g','\0'};

D) char c[7]={'string'};

133、若有说明char c[7]={'s','t','r','i','n','g'};则对元素的非法引用是____ ____.

A) c[0] B) c[9-6] C) c[4*2] D) c[2*3]

134、如有说明:char s1[5],s2[7]; ,要给数组s1和s2整体赋值,下列语句中正确的是____ ____.

A) s1=getchar(); s2=getchar();

B) scanf("%s%s",s1,s2);

C) scanf("%c%c",s1,s2); D) gets(s1,s2);

135、下列一组初始化语句中,正确的是___ _____.

A) int a[8]={ }; B) int a[9]={0,7,0,4,8};

C) int a[5]={9,5,7,4,0,2}; D) int a[7]=7*6;

136、以下程序输出的结果是____ _____.

#include

void main( )

{ char str[ ]="1a2b3c"; int i;

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

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

printf("\n");

}

A) 123456789 B) 1a2b3c

C) abc D) 123

137、以下程序输出的结果是___ _____.

#include

void main( )

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

long s=0;

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

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

}

A) s=12345 B) s=5 4 3 2 1

C) s=54321 D) 以上都不对

138、以下程序输出的结果是____ ____.

#include

void main( )

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

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

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

}

A) s=12345 B) s=1 2 3 4 5

C) s=54321 D) s=5 4 3 2 1

139、在定义int a[5][6];后,数组a中的第10个元素是.________(设a[0][0]为第一个元素)

A) a[2][5] B) a[2][4] C) a[1][3] D) a[1][5]

140、当接受用户输入的含有空格的字符串时,应使用____ ____函数.

A) gets( ) B) getchar( )

C) scanf( ) D) printf( )

141、以下程序执行时输入Language Programming<回车>,输出结果是____ ____.

#include

void main( )

{ char str[30];

gets(str);

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

}

A) Language Programming

B) Language

C) str=Language

D) str=Language Programming

142、以下一维数组a的正确定义是___ _____ .

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

C) int n; D) #define SIZE 10

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

int a[n];

143、以下对二维数组a进行正确初始化的是__ _____.

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

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

C) int a[2][ ]={1,2,3,4,5,6}; D) int a[2][ ]={ { 1,2},{3,4}};

144、以下关于数组的描述正确的是____ ______.

A) 数组的大小是固定的,但可以有不同类型的数组元素。

B) 数组的大小是可变的,但所有数组元素的类型必须相同。

C) 数组的大小是固定的,所有数组元素的类型必须相同。

D) 数组的大小是可变的,可以有不同类型的数组元素。

145、以下程序的输出结果是____ ____.

#include

void main()

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

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

}

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

147、已知short int类型变量占用两个字节,若有定义:short int x[10]={0,2,4}; ,则数组x在内存中所占字节数是____ ____.

A) 3 B) 6 C) 10 D) 20

148、在定义int a[5][4]; 之后,对a的引用正确的是.____ ____

A) a[2][4] B) a[1,3] C) a[4][3] D) a[5][0]

149、以下数组定义中不正确的是____ ____.

A) int a[2][3];

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

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

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

150、在执行语句:int a[ ][3]={1,2,3,4,5,6}; 后,a[1][0]的值是____ ____.

A) 4 B) 1 C) 2 D) 5

151、以下程序的输出结果是____ ____.

#include

void 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

152、以下定义语句中,错误的是___ _____.

A) int a[]={1,2}; B) char a={"test"};

C) char s[10]={"test"}; D) int a[]={'a','b','c'};

153、以下定义语句中,错误的是____ ____.

A) int a[]={1,2}; B) char a[]={"test"};

C) char s[10]={"test"}; D) int n=5,a[n];

154、下列程序的输出结果是____ ____.

#include

void main()

{char b[]="ABCDEFG";

char p=0;

while(p<7)

putchar(b[p++]);

putchar('\n');

}

A) GFEDCBA B) BCDEFG

C) ABCDEFG D) GFEDCB

155、下述对C语言字符数组的描述中错误的是___ __.

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

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

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

D) 不可以用关系运算符对字符数组中的字符串进行比较156、以下程序的输出结果是____ ____.

#include

void 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][i]);

printf("\n");

}

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

157、如有定义语句int a[]={1,8,2,8,3,8,4,8,5,8}; ,则数组a的大小是___ _____.

A) 10 B) 11 C) 8 D) 不定

158、有如下程序

#include

void main()

{ char ch[80]="123abcdEFG*&";

int j;long s=0;

puts(ch);

for(j=0;ch[j]>'\0';j++)

if(ch[j]>='A'&&ch[j]<='Z')

ch[j]=ch[j]+'e'-'E';

puts(ch);

}

该程序的功能是____ ____.

A) 测字符数组ch的长度

B) 将数字字符串ch转换成十进制数

C) 将字符数组ch中的小写字母转换成大写

D) 将字符数组ch中的大写字母转换成小写

159、设有如下定义:

char aa[2][20]={ "abcd", "ABCD"};

则以下说法中错误的是____ ____.

A) aa是个二维数组,可以存放2个19个字符以下的字符串

B) aa是个二维数组,每行中分别存放了字符串"abcd"和"ABCD"

C) aa[0]可以看作是一维数组名

D) aa[0][0]可以看作是一维数组名

161、有如下说明: int a[10]={0,1,2,3,4,5,6,7,8,9};

则数值不为9的表达式是____ ____.

A) a[10-1] B) a[8]

C) a[9]-0 D) a[9]-a[0]

162、设有数组定义:char array[]="China";则数组array所占的存储空间为____ ____.

A) 4个字节B) 5个字节

C) 6个字节D) 7个字节

数组参考答案

121.D 122.B 123.C 124.C 126.C 127.C 128.D 129.A 130.B 131.D 132.C 133.C 134.C 135.B 136.D 137.C 138.A 139.C 140.A 141.D 142.D 143.B 144.C 145.B 147.D 148.C 149.D 150.A 151.C 152.B 153.D 154.C 155.C 156.A 157.A 158.D 159.D 161.B 162.C

数组练习题及答案

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

vb控件数组的习题及答案

vb控件数组的习题及答案

电子教室学生注册时姓名文本框部分请输入:如:1411111111李四学号+姓名,中间不加空格) 实验准备: 请同学们删除d:\ex21 文件夹里面的内容 如果没有ex21文件夹,请在d:\ 下新建 ex21 文件夹 1、打开D:\下的工程文件PROJECTA4.vbp和窗体文件FORMA4.frm,按以 下要求完成程序:在窗体上创建2个列表框、2个标签、2个命令按钮。 List1用于显示可选课程、List2用于显示已选课程。单击“选课”按钮, 将List1中选定的课程名称加入到List2中显示,单击“清空”按钮,将 删除List2中的所有课程。程序运行的参考输出格式如图A-4所示,可选 课程至少包含图A-4所示的6门。最后将工程文件、窗体文件按原文件 名保存在D:\EX21文件夹下。 图A-4

2、打开D:\下的工程文件PROJECTB4.vbp和窗体文件FORMB4.frm,按以下要求完成程序:在窗体上创建1个列表框、1个图片框、2个标签、2个命令按钮。List1用于显示可选课程、Picture1用于显示已选课程。单击“选课”按钮,将List1中选定的课程名称加入到Picture1中显示,单击“清空”按钮,将删除Picture1中的所有课程。程序运行的参考输出格式如图B-4所示,可选课程至少包含图B-4所示的6门。最后将工程文件、窗体文件按原文件名保存在D:\EX21文件夹下。 图B-4

3、打开D:\下的工程文件PROJECTA41.vbp和窗体文件FORMA41.frm,按以下要求完成程序:单击窗体,能产生10个两位的随机整数并存放在一维数组中,并能在窗体中输出该10个随机整数、最大数及其在10个数中的位置,要求使用语句强制显式声明模块中的所有变量,程序运行的参考输出格式如图A-41所示。最后将工程文件、窗体文件按原文件名保存在D:\EX21文件夹下。 图A-41

C语言练习3(数组)=参考答案

C语言(数组) 一、选择题 1. 设有程序: main() { int i,a[11]; printf("给数组赋值:\n"); for (i=0;i<=10;i++) scanf("%d",( )); ... ... printf("输出数组:\n"); for(i=0;i<=10;i++) printf("%d,",( )); } 则在程序中的两个园括号中分别应填入:C A) &a[i]和&a[i] B) a[i]和&a[i] C) &a[i]和a[i] D) a[i]和a[i] 2. 设已定义:int a[15]; 则数组a占用的内存单元数是( C ). A) 15 B) 16 C) 30 D) 32 3. 阅读程序: main() { int a[2]={0},i,j,k=2; for(i=0;i

return r; } main() { int x,a[]={2,3,4,5,6,7,8,9}; x=f(a,3); printf("%d\n",x); } 以上程序的输出结果是( D ). A) 720 B) 6 C)24 D) 120 5. 以下定义语句中,错误的是( B ). A) int a[ ] = {6,7,8}; B) int n=5, a[n]; C) char a[ ]= "string"; D) char a[5 ]={'0','1','2','3','4'}; 6. 以下描述中正确的是( D ). A) 数组名后面的常量表达式用一对圆括弧括起来 B) 数组下标从1开始 C) 数组下标的数据类型可以是整型或实型 D) 数组名的规定与变量名相同 7. 若定义数组并初始化char a[10]={'0','1 ','2','3','4','5','6','7','8','9'};指出以下错误语句( AB ). A) scanf("%c",a[0]); B) scanf("%s",&a); C) printf("%c",a[3]); D) printf("%s",a); 8.若定义数组int a[10] ,其最后一个数组元素为( C ). A) a[0] B) a[1] C) a[9] D) a[10] 9. 若定义数组并初始化int a[10]={ 1,2,3,4},以下语句哪一个不成立( B )? A) a[8] 的值为0 B) a[1] 的值为1 C) a[3] 的值为4 D) a[9] 的值为0 10. 指出以下错误语句( A ).

C语言练习题集(带答案解析)

精品文档 1. ( A )是构成C 语言程序的基本单位。 A 、函数 B 、过程 C 、子程序 D 、子例程 2. C 语言程序从 ____ C ________ 开始执行。 A ) 程序中第一条可执行语句 B )程序中第一个函数 C )程序中的main 函数 D )包含文件中的第一个函数 3、以下说法中正确的是( C )。 A 、 C 语言程序总是从第一个定义的函数开始执行 B 、 在 C 语言程序中,要调用的函数必须在 main ()函数中定义 C 、 C 语言程序总是从 main ()函数开始执行 D 、 C 语言程序中的 main ()函数必须放在程序的开始部分 4. 下列关于C 语言 的说法错误的是( B ) 。 A ) C 程序的工作过程是编辑、编译、连接、运行 B ) C 语言不区分大小写。 C ) C 程序的三种基本结构是顺序、选择、循环 D ) C 程序从main 函数开始执行 5. 下列正确的标识符是(C )。 A. -a1 B.a[i] C.a2_i 6. 下列C 语言用户标识符中合法的是( B )。 A) 3ax B)x C)case D)-e2 E)u nion 7. 下列四组选项中,正确的 C 语言标识符是 (C )。 A ) %x B ) a+b C ) a123 D ) 8、 下列四组字符串中都可以用作 A 、print _3d db8 aBc B C 、str_1 Cpp pow while D 9. C 语言中的简单数据类型包括( A 、整型、实型、逻辑型 C 、整型、字符型、逻辑型 C 语言程序中的标识符的是( A ) 、I\am one_half start$it 3pai 、Pxq My->book line# His.age D )。 B 、整型、实型、逻辑型、字符型 D 、整型、实型、字符型 10. 在C 语言程序中,表达式 5%2的结果是—C_ A)2.5 B)2 C)1 D)3 11. 如果int a=3,b=4 ;则条件表达式"a

数组习题及参考答案

第七章数组 一、单项选择题 1.若有说明“int a[3][4]={0};”,则下面正确的是_____。 A.只有元素a[0][0]可得到初值0 B. 此说明语句不正确 C. 数组a各元素都可得到初值,但其值不一定是0 D. 数组a中每个元素均可得到初值0 2.以下不能正确定义二维数组的选项是_____。 A. int a[2][2]={{1},{2}} B. int a[2][2]={{1},2,3} C. int a[2][]={{1,2},{3,4}} D. int a[][2]={1,2,3,4} 3.在下列对字符数组进行初始化中正确的是_____。 A.char s1[]=”abcd” B.char s2[3]=”xyz” C.char s3[][]={…a?,?x?,?y?} D.char s4[2][3]={“xyz”,”mnp”} 二、写出下列程序的运行结果 有以下程序: 1. #include int main () {

int a[]={4,0,2,3,1},i,j,t; for(i=1;i<5;i++) { t=a[i];j=i-1; while(j>=0&&t>a[j]) { a[j+1]=a[j]; a[j]=t; j--; } } for(i=0;i<5;i++) { cout<

最新数据结构练习题 第三章 栈、队列和数组 习题及答案

1 第三章栈、队列和数组 2 一、名词解释: 3 1.栈、栈顶、栈底、栈顶元素、空栈 2.顺序栈 3.链栈 4.递归 5.队列、队尾、4 队头6.顺序队7.循环队8.队满9.链队10.随机存储结构11.特殊矩阵12.稀疏矩5 阵13.对称方阵14.上(下)三角矩阵 6 二、填空题: 7 1.栈修改的原则是_________或称________,因此,栈又称为8 ________线性表。在栈顶进行插入运算,被称为________或________,在 栈顶进行删除运算,被称为________或________。 9 10 2.栈的基本运算至少应包括________、________、________、11 ________、________五种。 12 3.对于顺序栈,若栈顶下标值top=0,此时,如果作退栈运算,则产13 生“________”。 14 4.对于顺序栈而言,在栈满状态下,如果此时在作进栈运算,则会 发生“________”。 15 16 5.一般地,栈和线性表类似有两种实现方法,即________实现和17 ________实现。 6.top=0表示________,此时作退栈运算,则产生“________”; 18 19 top=sqstack_maxsize-1表示________,此时作进栈运算,则产生20 “________”。 7.以下运算实现在顺序栈上的初始化,请在________处用适当的句 21 22 子予以填充。

23 int InitStack(SqStackTp *sq) 24 { ________; 25 return(1);} 26 8.以下运算实现在顺序栈上的进栈,请在________处用适当的语句27 予以填充。 28 Int Push(SqStackTp *sq,DataType x) 29 { if(sp->top==sqstack_maxsize-1}{error(“栈满”);return(0);} 30 else{________________: 31 ________________=x; 32 return(1);} 33 34 } 35 9.以下运算实现在顺序栈上的退栈,请在________________用适当36 句子予以填充。 37 Int Pop(SqStackTp *sq,DataType *x) 38 {if(sp->top==0){error(“下溢”);return(0);} 39 else{*x=________________; 40 ________________; 41 return(1);}

数组典型例题及参考答案

第7章数组 7-1输入一个正整数n(1≤n≤10),再输入n个整数 (1)输出最大数和最小数,并输出平均值。 (2)将最小数与第一个数交换,最大数与最后一个数交换,然后输出交换后的结果。 (3)输出所有比平均值大的数。 (4)找到最接近平均值的数。(提示:考虑差的绝对值)

/* 将最小数与第一个数交换,最大数与最后一个数交换*/ t=a[0]; a[0]=a[q]; a[q]=t; t=a[N-1]; a[N-1]=a[p]; a[p]=t; printf("After exchange: "); for(i=0; iave) printf("%d ", a[i]); /* 找到最接近平均值的数*/ printf("\nThe number closest to the average is: "); sub = a[0]>ave? a[0]-ave: ave-a[0]; p=0; for(i=1; iave? a[i]-ave: ave-a[i]) < sub ) { sub = a[i]>ave? a[i]-ave: ave-a[i]; p=i; } } printf("%d.", a[p]); } Output Please input 10 integers: 17 34 -11 2 5 10 7 -9 0 25 /* input */ The maximum is: 34, the minimum is: -11, the average is 8.00 After exchange: -11 25 17 2 5 10 7 -9 0 34 Larger than the average: 25 17 10 34 The number closest to the average is: 7 7-2输入一个日期(按照year-month-day格式),计算该日期为当年的第几天。 (提示:注意闰年)

数据结构练习题第三章栈、队列和数组习题及答案

第三章栈、队列和数组 一、名词解释: 1.栈、栈顶、栈底、栈顶元素、空栈 2.顺序栈 3.链栈 4.递归 5.队列、队尾、队头 6.顺序队 7.循环队 8.队满 9.链队10.随机存储结构11.特殊矩阵12.稀疏矩阵13.对称方阵14.上(下)三角矩阵 二、填空题: 1.栈修改的原则是_________或称________,因此,栈又称为________线性表。在栈顶 进行插入运算,被称为________或________,在栈顶进行删除运算,被称为________ 或________。 2.栈的基本运算至少应包括________、________、________、________、________五 种。 3.对于顺序栈,若栈顶下标值top=0,此时,如果作退栈运算,则产生“________”。 4.对于顺序栈而言,在栈满状态下,如果此时在作进栈运算,则会发生“________”。 5.一般地,栈和线性表类似有两种实现方法,即________实现和________实现。 6.top=0表示________,此时作退栈运算,则产生“________”;top=sqstack_maxsize-1 表示________,此时作进栈运算,则产生“________”。 7.以下运算实现在顺序栈上的初始化,请在________处用适当的句子予以填充。 int InitStack(SqStackTp *sq) { ________; return(1);} 8.以下运算实现在顺序栈上的进栈,请在________处用适当的语句予以填充。 Int Push(SqStackTp *sq,DataType x) { if(sp->top==sqstack_maxsize-1}{error(“栈满”);return(0);} else{________________: ________________=x; return(1);} } 9.以下运算实现在顺序栈上的退栈,请在________________用适当句子予以填充。 Int Pop(SqStackTp *sq,DataType *x) {if(sp->top==0){error(“下溢”);return(0);} else{*x=________________; ________________; return(1);} } 10. 以下运算实现在顺序栈上判栈空,请在________________处用适当句子予以填充。 Int EmptyStack(SqStackTp *sq) {if(________________) return(1); else return(0); } 11.以下运算实现在顺序栈上取栈顶元素,请在________________处用适当句子予以填充。 Int GetTop(SqStackTp *sq,DataType *x) {if(________________) return(0);

《C++数组》习题参考答案

《C++数组》习题 学号姓名 一、选择题 1、下列对字符数组进行初始化的语句正确的是 A A.char a[]= "Hello"; B.char a[][]= {'H','e','l','l','o'}; C.char a[5]="Hello"; D.char a[2][5]= {"Hello","World"}; 2、以下一维数组a的正确定义是 D A.int a(10) ; B.int n=10,a[n]; C.int n; D.#define size 10 cin>>n; int a[size]; int a[n]; 3、以下对二维数组a进行不正确初始化的是 C A.int a[2][3]={0}; B.int a[][3]={{1,2},{0}}; C.int a[2][3]={{1,2},{3,4},{5,6}}; D.int a[][3]={1,2,3,4,5,6); 4、执行以下程序后,s的值为 A int a[]={5,3,7,2,1,5,4,lO); int s=0,k; for(k=0;k<8;k+=2) s+=*(a+k); A.17 B.27 C.13 D.无定值 5、为了判断两个字符串sl和s2是否相等,应当使用 D A.if (s1==s2)

B.if (s1=s2) C.if(strcpy(S1,s2)) D.if(strcmp(s1,s2)==O) 6、有定义int a[2][5];,若a[0][1]的地址为x,则a[0][O]、a[1][3]地址分别为(假设一个整型数据占用两个字节的内存空间): A A.x-2,x+14 B.x-1,x+7 C.x+1,x+7 D.x-1,x+14 7、若有定义float a[m][n];,且a[1][1]的地址为x,每个float元素占用4个字节,则a[il[j]的地址为 A A.x+4*(i-1)*n+4*(j-1) B.x+(i-1)*n+(j-1) C.x+4*(i-1)*j+(j-1) D.x+4*i*j+4*j 二、填空题 1、char st[20] = "SEU\0\t\\"; cout<

C语言数组练习及答案

C语言数组练习及答案集团文件版本号:(M928-T898-M248-WU2669-I2896-

第四部分数组 4.1 选择题 1. 以下关于数组的描述正确的是(c )。 A. 数组的大小是固定的,但可以有不同的类型的数组元素 B. 数组的大小是可变的,但所有数组元素的类型必须相同 C. 数组的大小是固定的,所有数组元素的类型必须相同 D. 数组的大小是可变的,可以有不同的类型的数组元素 2. 以下对一维整型数组a的正确说明是(d )。 A.int a(10); B. int n=10,a[n]; C.int n; D. #define SIZE 10 scanf("%d",&n); int a[SIZE]; int a[n]; 3. 在C语言中,引用数组元素时,其数组下标的数据类型允许是(c )。 A. 整型常量 B. 整型表达式 C. 整型常量或整型表达式 D. 任何类型的表达式 4. 以下对一维数组m进行正确初始化的是(c )。 A. int m[10]=(0,0,0,0) ; B. int m[10]={ }; C. int m[ ]={0}; D. int m[10]={10*2}; 5. 若有定义:int bb[ 8];。则以下表达式中不能代表数组元bb[1]的地址的是(c )。 A. &bb[0]+1 B. &bb[1] C. &bb[0]++ D. bb+1 6. 假定int类型变量占用两个字节,其有定义:int x[10]={0,2,4};,则数组x在内存中所占字节数是(d )。 A. 3 B. 6 C. 10 D. 20 7. 若有以下说明: int a[12]={1,2,3,4,5,6,7,8,9,10,11,12}; char c='a',d,g;

C语言复习题及答案 第七章 数组

第七章数组 (8学时) 学习目的与要求: 1 、重点掌握一维数组的定义和引用; 2 、基本掌握二维数组的定义和引用; 3 、重点掌握字符型数组的定义与引用; 4 、能正确使用字符串处理函数; 5 、学会使用数组解决实际问题。 重点: 1 、一维数组的定义与引用; 2 、二维数组的定义与引用; 3 、字符数组的定义与引用; 第1讲 知识归纳: 1、一维数组的定义:类型说明符数组名[ 常量表达式] ; (1) (1)数组名后必须用方括弧[ ] ,用其他括弧均错误; (2) 方括弧中的常量表达式表示数组的元素个数; (3) 方括弧中的常量表达式,必须是能计算出具体数值,且不改变的常量,不能是变量; 2、一维数组的引用: 数组名[ 下标] //下标从0开始,可以是整型常量或整型表达式; (1) 注意:数组元素引用时,不要超出数组范围; 如int a[10] ; //可以引用的数组元素为a[0]……a[9] , a[10] 不是本数组元素; 3、一维数组的初始化: (1) (1)可以在定义数组后,立刻赋值;如int a [3] = { 1,3, 5} ; 但下面这样是错误的: int a[3] ; a = { 1,3, 5} ; (2) (2)可以给数组的部分元素赋值,不赋值的元素,默认值为int 0, char, …?, float 0.0 ; 如int a [3]= {1,3 } ; //a[0] =1 ; a[1]= 3 ; a[2]= 0 ; (3) 在对数组全部元素赋初值时,可以不指定元素个数; (4) 可以在循环控制下,给数组各元素赋值; 如:int a[10] ; for ( i=0 ; i <10 ;i ++ ) a [ i ] = i ; 基础训练(A) 一、选择题 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、以下对数组的正确定义是:()。 A) float b[5.0] B) float b[5] C) float b(5) D) float b[] 4、对以下说明语句的正确理解是()。 int a[10]={6,7,8,9,10}; A)将5个初值依次赋给a[1]至a[5]

C语言数组练习及答案

第四部分数组 4. 1 选择题 1.以下关于数组的描述正确的是(c ) 。 A.数组的大小是固定的,但可以有不同的类型的数组元素 B.数组的大小是可变的,但所有数组元素的类型必须相同 C.数组的大小是固定的,所有数组元素的类型必须相同 D.数组的大小是可变的,可以有不同的类型的数组元素 2.以下对一维整型数组a的正确说明是(d )。 a(10); B. int n=10,a[n]; n; D. #define SIZE 10 scanf("%d",&n); int a[SIZE]; int a[n]; 3.在C语言中,引用数组元素时,其数组下标的数据类型允许是(c)。 A.整型常量 B.整型表达式 C.整型常量或整型表达式 D.任何类型的表达式 4.以下对一维数组m进行正确初始化的是(c )。 A.int m[10]=(0,0,0,0) ; B. int m[10]={ }; C. int m[ ]={0}; D. int m[10]={10*2}; 5.若有定义:int bb[ 8] ;。则以下表达式中不能代表数组元bb[1] 的地址的是(c ) 。 A.&bb[0]+1 B. &bb[1] C. &bb[0]++ D. bb+1 6.假定int 类型变量占用两个字节,其有定义:int x[10]={0,2,4}; ,则数组x 在内存中所占字节数是(d ) 。 A. 3 B. 6 C. 10 D. 20 7.若有以下说明: int a[12]={1,2,3,4,5,6,7,8,9,10,11,12}; char c='a',d,g; 则数值为4的表达式是(d ) A.a[g-c] B. a[4] C. a['d'-'c'] D. a['d'-c] 8.以下程序段给数组所有的元素输入数据,请选择正确答案填入(a ) #include<> main() { int a[10],i=0; while(i<10) scanf("%d", _______ );

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() {

数组 习题答案

1: /*编写程序,用筛选法求100 之内的素数。*/ #include <> void main () { int i,j; for (i=2; i<100; i++) { for (j=2; j void main() { int num,a,i=0; printf("输入一个数字\n"); scanf("%d",&num); printf("正序输出则输入1 反序输出输入0\n"); scanf("%d",&a); switch(a) { case 1: printf("%d",num); break; case 0: while(0!=num) { i=i*10+num%10; num=num/10; } printf("%d",i); break; default: printf("请输入0 和1!!\n"); break; } }

3/*对于一个4X4 矩阵逆时针旋转90 度*/ #include <> void main() { int a[4][4],i,j,b[4][4]; for(i=0;i<4;i++) for(j=0;j<4;j++) scanf("%d",&a[i][j]); for(i=0;i<4;i++) for(j=0;j<4;j++) { b[3-j][i]=a[i][j]; } printf("逆时针旋转90 度后:\n"); for(i=0;i<4;i++) { for(j=0;j<4;j++) { printf("%d ",b[i][j]); } printf("\n"); } } 4: /*将一个数组中的数据奇数放到前面,偶数放到后面。*/ #include <> void main () { int a[9],b[9],i,j=0,m=0; for(i=0;i<9;i++) scanf("%d",&a[i]); for(i=0;i<9;i++) { if(a[i]%2!=0) { b[j]=a[i]; j++; } else { b[8-m]=a[i]; m++; } }

数据结构课后习题及答案.doc

填空题(10 * 1’ = 10’) 一、概念题 2.2.当对一个线性表经常进行的是插入和删除操作时,采用链式存储结构为宜。 2.3.当对一个线性表经常进行的是存取操作,而很少进行插入和删除操作时,最好采用顺序存储结构。 2.6.带头结点的单链表L中只有一个元素结点的条件是L->Next->Next==Null。 3.6.循环队列的引入,目的是为了克服假溢出。 4.2.长度为0的字符串称为空串。 4.5.组成串的数据元素只能是字符。 4.8.设T和P是两个给定的串,在T中寻找等于P的子串的过程称为模式匹配,又称P为模式。 7.2.为了实现图的广度优先搜索,除一个标志数组标志已访问的图的结点外,还需要队列存放被访问的结点实现遍历。 5.7.广义表的深度是广义表中括号的重数 7.8.有向图G可拓扑排序的判别条件是有无回路。 7.9.若要求一个稠密图的最小生成树,最好用Prim算法求解。 8.8.直接定址法法构造的哈希函数肯定不会发生冲突。 9.2.排序算法所花费的时间,通常用在数据的比较和交换两大操作。 1.1.通常从正确性﹑可读性﹑健壮性﹑时空效率等几个方面评价算法的(包括程序)的质量。 1.2.对于给定的n元素,可以构造出的逻辑结构有集合关系﹑线性关系树形关系﹑图状关系四种。 1.3.存储结构主要有顺序存储﹑链式存储﹑索引存储﹑散列存储四种。 1.4.抽象数据类型的定义仅取决于它的一组逻辑特性,而与存储结构无关,即不论其内部结构如何变化,只要它的 数学特性不变,都不影响其外部使用。 1.5.一个算法具有五大特性:有穷性﹑确定性﹑可行性,有零个或多个输入﹑有一个或多个输入。 2.8.在双向链表结构中,若要求在p指针所指的结点之前插入指针为s所指的结点,则需执行下列语句: s->prior= p->prior; s->next= p; p->prior- next= s; p->prior= s;。 2.9.在单链表中设置头结点的作用是不管单链表是否为空表,头结点的指针均不空,并使得对单链表的操作 (如插入和删除)在各种情况下统一。 3.1.队列是限制在表的一端进行插入和在另一端进行删除的线性表,其运算遵循先进先出原则。 3.2.栈是限定尽在表位进行插入或删除操作的线性表。 3.5.在链式队列中,判定只有一个结点的条件是(Q->rear==Q->front)&&(Q->rear!=NULL)。 3.7.已知链队列的头尾指针分别是f和r,则将x入队的操作序列是node *p=(node *)malloc(node); p->next=x; p->next=NULL; if(r) {r->next=p; r=p;} else {r=p; f=p;}。 3.8.循环队列的满与空的条件是(rear+1)%MAXSIZE==fornt和(front=-1&&rear+1==MAXSIZE)。 4.3.串是一种特殊的线性表,其特殊性表现在数据元素都是由字符组成。 4.7.字符串存储密度是串值所占存储位和实际分配位的比值,在字符串的链式存储结构中其结点大小是可变的。 5.3.所谓稀疏矩阵指的是矩阵中非零元素远远小于元素总数,则称该矩阵为矩阵中非零元素远远小于元素总数, 则称该矩阵为稀疏矩阵。 5.4.一维数组的逻辑结构是线性结构,存储结构是顺序存储结构;对二维或多维数组,分别按行优先和列优先两种 不同的存储方式。 7.4.在有向图的邻接矩阵表示中,计算第i个顶点入度的方法是求邻接矩阵中第i列非0元素的个数。 7.10.AOV网中,结点表示活动,边表示活动之间的优先关系,AOE网中,结点表示事件,边表示活动。 9.1.按排序过程中依据不同原则对内部排序方法进行分类,主要有选择排序﹑交换排序﹑插入排序归并排序等4类。 9.3.在堆排序、快速排序和归并排序中若只从排序结果的稳定性考虑,则应选择归并排序方法;若只从平均情况下 排序最快考虑,则应选择快速排序方法;若只从最坏情况下排序最快且要节省类存考虑,则应选择堆排序方法。 9.4.直接插入排序用监视哨的作用是存当前要的插入记录,可又省去查找插入位置时对是否出界的判断。 9.6.设表中元素的初始状态是按键值递增的,则直接插入排序最省时间,快速排序最费时间。 4.9.下列程序判断字符串s是否对称,对称则返回1,否则返回0;如?(“abba”)返回1,?(”abab”)返回0. Int f (char*s) { Int i=0,j=0; /*求串长*/

数组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]={,,,,}; 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}};

第4章串与数组习题参考答案

习题四参考答案 一、选择题 1.下面关于串的叙述中,哪一个是不正确的( B ) A.串是字符的有限序列 B.空串是由空格构成的串 C.模式匹配是串的一种重要运算 D.串既可以采用顺序存储,也可以采用链式存储 2.串的长度是指( A ) A. 串中包含的字符个数 B. 串中包含的不同字符个数 C. 串中除空格以外的字符个数 D. 串中包含的不同字母个数 3.设有两个串p和q,其中q是p的子串,求q在p中首次出现的位置的算法称为( C )A.求子串 B.联接 C.模式匹 配 D.求串长 4.设主串的长度为n,模式串的长度为m,则串匹配的KMP算法时间复杂度是( C )。 A. O(m) B. O(n) C. O(n + m) D. O(n×m) 5. 串也是一种线性表,只不过( A )。 A. 数据元素均为字符 B. 数据元素是子串 C. 数据元素数据类型不受限制 D. 表长受到限制 6.设有一个10阶的对称矩阵A,采用压缩存储方式,以行序为主进行存储,a11为第 一元素,其存储地址为1,每个元素占一个地址空间,则a85的地址为( B )。 A. 13 B. 33 C. 18 D. 40 7. 有一个二维数组A[1..6, 0..7] ,每个数组元素用相邻的6个字节存储,存储器 按字节编址,那么这个数组占用的存储空间大小是( D )个字节。 A. 48 B. 96 C. 252 D. 288 8. 设有数组A[1..8,1..10],数组的每个元素占3字节,数组从内存首地址BA开始 以列序为主序顺序存放,则数组元素 A[5,8]的存储首地址为( B )。 A. BA+141 B. BA+180 C. BA+222 D. BA+225 9. 稀疏矩阵的三元组存储表示方法( B ) A. 实现转置操作很简单,只需将每个三元组中行下标和列下标交换即可 B. 矩阵的非零元素个数和位置在操作过程中变化不大时较有效 C. 是一种链式存储方法 D. 比十字链表更高效 10. 用十字链表表示一个稀疏矩阵,每个非零元素一般用一个含有( A )域的结点表示。 B.4 C. 3 D. 2 二、填空题 1. 一个串的任意连续字符组成的子序列称为串的子串,该串称为主串。 2.串长度为0的串称为空串,只包含空格的串称为空格串。 3. 若两个串的长度相等且对应位置上的字符也相等,则称两个串相等。 4. 寻找子串在主串中的位置,称为模式匹配。其中,子串又称为模式串。

相关文档
最新文档