第6章 数组和字符串 练习题
- 格式:docx
- 大小:30.95 KB
- 文档页数:5
1.t为int类型,进入下面的循环之前,t的值为0while( t=l ){ ……}则以下叙述中正确的是( B )(A) 循环控制表达式的值为0 (B) 循环控制表达式的值为1(C) 循环控制表达式不合法(D) 以上说法都不对2.有以下程序main( ){ int i,s=0;for(i=1;i<10;i+=2) s+=i+1;printf(“%d\n”,s);}程序执行后的输出结果是 ( D )。
(A) 自然数1~9的累加和 (B) 自然数1~10的累加和(C) 自然数1~9中的奇数之和 (D) 自然数1~10中的偶数之和3.以下程序段的输出结果是( C )。
int x=3;do{ printf("%3d",x-=2); }while(!(- -x));(A)1 (B)30 (C)1 -2 (D)死循环4.以下程序中,while循环的循环次数是( D)。
main(){ int i=0;while(i<10){ if(i<1) continue;if(i==5) break;i++;}......}(A) 1 (B) 10(C) 6 (D) 死循环,不能确定次数5.下面程序的输出是( B )。
(A)741 (B)852 (C)963 (D)875421main(){int y=9;for(;y>0;y--){if(y%3==0){printf("%d",--y);continue;}}}6.若i,j已定义为int类型,则以下程序段中内循环体的总的执行次数是( A)。
for (i=5;i;i--)for(j=0;j<4;j++){...}(A)20 (B)25 (C)24 (D)307.执行语句: for(i=l;i++<4;;);后,变量i的值是(C)。
(A) 3 (B) 4 (C) 5 (D) 不定8.假定a和b为int型变量,则执行以下语句后b的值为( D )。
第六章数组编程题答案1. 将输入的n个整数按从小到大排序输出,并求出其中所有奇数的个数。
提示:使用冒泡法或选择法将n个数排序,然后在使用一个循环结构找出奇数个数以下程序为选择法将5个数排序,并输出奇数个数#include<stdio.h>void main(){ int i,j,t,p,a[5],count=0;for(i=0;i<5;i++){ printf("enter No.%2d:",i+1);scanf("%d",&a[i]);}for(i=0;i<4;i++) //比较四趟{ p=i; //将本趟中第一个数下标赋值给p for(j=i+1;j<5;j++)if(a[p]>a[j])p=j; //p存放较小数的下标if(p!=i) //判断是否为本趟的第一个元素,此处if也可不用{t=a[p];a[p]=a[ i];a[i]=t;} /*数组元素一次交换到位*/}for(i=0;i<5;i++)printf("%d,",a[i]);printf("\n");for(i=0;i<5;i++)if(a[i]%2!=0) //判断是否是奇数count++;printf("奇数有%d个\n",count);}2. 输入n个整数,求出其中最大数及其所在的位置,以及此n个数中素数的个数。
#include <stdio.h>#define N 5void main(){int i,j,a[N],count=0,max,c;printf(“请输入5个数:\n”);for(i=0;i<5;i++)scanf(“%d”,&a[i]);max=a[0];for(i=0;i<5;i++)if(max<a[i]){ max=a[i];c=i; //记住最大数位置}for(i=0;i<5;i++) //判定数组中每个元素是否为素数{for(j=2;j<=a[i]/2;j++)if(a[i]%j==0) break;if(j>=a[i]/2+1) count++; //统计素数个数}printf(“最大数为:%d,位置为:%d,素数个数为:%d\n”,max,c+1,count);}运行结果:请输入5个数:23 45 66 17 90最大数为:90,位置为5,素数个数为:23. 输入10学生的分数,计算平均分,并打印低于平均分数的成绩。
C语言程序设计– 第六章课后习题电子13-02班王双喜一、选择题1. C语言中一维数组的定义方式为:类型说明符数组名(C)A. [整型常量]B. [整型表达式]C. [整型常量]或[整型常量表达式]D. [常量表达式]2. C语言中引用数组元素时,下标表达式的类型为(C)A. 单精度型B. 双精度型C. 整型D. 指针型3. 若有定义:int a[3][4];,则对a数组元素的非法引用是(D)A. a[0][3*1]B. a[2][3]C. a[1+1][0]D. a[0][4](解释:A、B、C均正确,D看起来引用不太妥当,但其亦有其意义(a[0][4]等价于a[1][0]))4. 若有定义:int a[][3] = {1, 2, 3, 4, 5, 6, 7, 8, 9};,则a数组的第一维大小是(C)A. 1B. 2C. 3D. 4(解释:共9个元素,除以3即可得第一维大小是3;若有余数,则应加1)5. 若有定义:int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};,则值为5的表达式是(C)A. a[5]B. a[a[4]]C. a[a[3]]D. a[a[5]]6. 要求定义包含8个int类型元素的一维数组,以下错误的定义语句是(A)A. int N = 8;int a[N]; B. #define N 3while (a[2*N+2];C. int a[] = {0, 1, 2, 3, 4, 5, 6, 7};D. int a[1+7] = {0};(解释:数组的大小必须是整型常量或整型常量表达式)7. 若二维数组a有m列,则在a[i][j]前的元素个数为(A)A. i * m + jB. j * m + iC. i * m + i - 1D. i * m + j - 18. 下面是对数组s的初始化,其中不正确的是(D)A. char s[5] = {"abc"};B. char s[5] = {'a', 'b', 'c'};C. char s[5] = "";D. char s[5] = "abcdef";(解释:D中元素个数太多,算上'\0'共六个,非法)9. 下面程序段的运行结果是(B)char c[] = "\t\v\\\0will\n";printf("%d", strlen(c));A. 14B. 3C. 9D. 字符串中有非法字符,输出值不确定(解释:字符串中第四个是'\0'即结束标志,因此字符串长度是3)10. 判断字符串s1是否等于s2,应当使用(D)A. if (s1 == s2)B. if (s1 = s2)C. if (strcpy(s1, s2))D. if (strcmp(s1, s2) == 0)(解释:对于字符串来讲,其名字的内容是该字符串的起始地址,不能通过比较名字来比较相等,而应该用专用的函数进行逐字符匹配)二、写出程序的执行结果1. 程序一:# include <stdio.h>main(){int a[3][3] = {1, 3, 5, 7, 9, 11, 13, 15, 17};int sum = 0, i, j;for (i = 0; i < 3; i++)for (j = 0; j < 3; j++){a[i][j] = i + j;if (i == j) sum = sum + a[i][j];}printf("sum = %d", sum);}执行结果:打印sum = 6.(解释:a中各个元素的值是其行和列数字之和,sum内保存a中对角线元素之和,即sum = 0 + 2 + 4)2. 程序二:# include <stdio.h>main(){int i, j, row, col, max;int a[3][4] = {{1, 2, 3, 4}, {9, 8, 7, 6}, {-1, -2, 0, 5}};max = a[0][0]; row = 0; col = 0;for (i = 0; i < 3; i++)for (j = 0; j < 4; j++)if (a[i][j] > max){max = a[i][j];row = i;col = j;}printf("max = %d, row = %d, col = %d\n", max, row, col);}执行结果:打印max = 9, row = 1, col = 0.(解释:此程序的功能是逐行逐列扫描元素,总是将最大的元素赋给max,并保存该元素的行数和列数;因此执行完毕后,max是最大的元素(9),row是其行数(1),col是其列数(0))3. 程序三:# include <stdio.h>main(){int a[4][4], i, j, k;for (i = 0; i < 4; i++)for (j = 0; j < 4; j++)a[i][j] = i - j;for (i = 0; i < 4; i++){for (j = 0; j <= i; j++)printf("%4d", a[i][j]);printf("\n");}}执行结果:第一行打印0;第二行打印1 0;第三行打印2 1 0;第四行打印3 2 1 0。
C语言第六章数组习题第六章数组6、1 选择题[题]在C语言中,引用数组元素时,其数组下标的数据类型允许是_____、 A)整型常量B)整型表达式 C)整型常量或整型表达式D)任何类型的表达式[题]以下对一维整型数组a的正确说明是_____。
A )int a(10);B)int n=10,a[n]; C)int n;D)#define SIZE10 scanf(\%d,&n);int a[SIZE]; int a[n];[题]若有说明:int a[l0];则对a数组元素的正确引用是_____。
A )a[10] B)a[3、5] C)a(5)D)a[10-10][题]在C语言中,一维数组的定义方式为:类型说明符数组名_____。
A )[常量表达式]B)[整型表达式] C)[整型常量]或[整型表达式]D)[整型常量][题]以下能对一维数组a进行正确初始化的语句是_____。
A )int a[l0]=(0,0,0,0,0); B)int a[l0]={}; C)int a ={0};D)int a[10]={10*1};[题]以下对二维数组a的正确说明是_____。
1 A)int a[3];B)float a(3,4); C)double a[1][4];D)float a(3)(4);[题]若有说明:int a[3][4];则对a数组元素的正确引用是_____。
A )a[2][4] B)a[1,3] C)a[1+1][0] D)a(2)(1) [题]若有说明:int a[3][4];则对a数组元素的非法引用是_____。
A )a[0][2*1] B)a[1][3] C)a[4-2][0] D)a[0][4] [题]以下不能对二维数组a进行正确初始化的语句是_____。
A )int a[2][3]={0}; B)int a[3]={{1,2},{0}}; C)int a[2][3]={{l,2},{3,4},{5,6}}; D)int a[3]={1,2,3,4,5,6};[题]若有说明:int a[3][4]={0};则下面正确的叙述是_____。
第六章练习题一、填空题1、定义int a[]={1,2,3,4,5,6},*p=a;语句printf("%d",(*++p)++);的输出结果是()。
2、以下程序的执行结果是()。
main(){ char s[]="abcdefg"; char *p;p=s; printf("ch=%c\n",*(p+5)); }3、以下程序的执行结果是()。
main(){ int a[][={1,2,3,4,5,6};for(p=&a[5];p>=a;p--) printf("%d",*P);printf("\n"); }4、以下程序的执行结果是()。
main(){ int a[12]={1,2,3,4,5,6,7,8,9,10,11,12},*p[4],i;for(i=0;i<4;i++)p[i]=&a[i*3];printf("%d\n",p[3][2]);}5、设包含如下程序的文件名为myprog.c,编译后键入命令:myprog one two three,则执行结果是()。
main(int argc,char *argv[]){ int i;for(i=1;i<argc;i++)printf("%s%c",argv[i],(i<argc-1)?":');}6、下面程序的运行结果是()char s[80],*sp="HELLO!";sp=strcpy(s,sp); s[0]='h'; puts(s);7、下面程序段的运行结果是()char *s1="AbcdEf",*s2="aB";s1++; t=(strcmp(s1,s2)>0); printf("%d\n",t);8、下面程序段的运行结果是()char str[]="abc\0def\0ghi"; char *p=str; printf("%s",p+5)9、若有以下定义和语句:int a[4]={0,1,2,3},*p; p=&a[1]; 则++(*p)的值是()。
一、选择题1. 以下错误的字符串赋值或赋初值方式是:(A)char str1[]=”string”, str2[]=”12345678”;stcpy(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.有下列程序,执行后由键盘键入2时,s的值为:#define P (y*y+3*y)main(){int s,y;printf("input a number: ");scanf("%d",&y);s=3*P+4*P;printf("s=%d\n",s);}(A)36 (B)40 (C)52 (D)707.在C程序中,main()的位置:(A)必须作为第一个函数(B)必须作为最后一个函数(C)可以任意(D)必须放在它所调用的函数之后8. 以下叙述中正确的是:(A)构成C程序的基本单位是函数(B)可以在一个函数中定义另一个函数(C)main()函数必须放在其它函数之前(D)所有被调用的函数一定要在调用之前进行定义9.若要打开A盘上根目录下名为abc.txt的文本文件进行读、写操作,下面符合此要求的函数调用是:(A)fopen("A:\\abc.txt","r+")(B)fopen("A:\\abc.txt","r")(C)fopen("A:\abc.txt","r+")(D)fopen("A:\abc.txt","r")10. 下面各语句行中,不能正确进行字符串操作的语句行是:(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);11.设有如下的程序段:char str[ ]="Hello";char *ptr;ptr=str;执行上面的程序段后,*(ptr+5)的值为(A) 'o' (B) '\0' (C)不确定的值(D) 'o'的地址12. 请选出以下语句的输出结果printf("%d\n",strlen("\t\"\065\xff\n"));(A)5 (B)14 (C)8 (D)输出项不合法,无正常输出13.以下程序段给数组所有的元素输入数据,请选择正确答案填入。
数据结构习题精编:串和数组一、选择题1.下面关于串的的叙述中,不正确的是A.串是字符的有限序列B.空串是由空格构成的串C.模式匹配是串的一种重要运算D.串既可以采用顺序存储,也可以采用链式存储2.下面关于串的的叙述中,正确的是A.空串就是空白串B.串相等指的是串的长度相等C.串的长度必须大于零D.串是一种特殊的线性表3.字符串是一种特殊的线性表,它与一般线性表的区别是A.字符串是一种线性结构B.字符串可以进行复制操作C.字符串可以顺序存储也可以链式存储D.字符串由字符构成并且通常作为整体参与操作4.串s="Data Structure"中长度为3的子串的数目是A.9B.11C.12D.145.若串S="software",则S的子串的数目是A.8 B.35 C.36 D.376.已知串S= "string",T="this",执行运算StrLength(StrCopy(S,T))的结果是A.2 B.4 C.6 D.107.若串S="SCIENCESTUDY",则调用函数StrCopy(P,SubString(S,1,7))后得到A.P="STUDY" B.P="SCIENCE" C.S="STUDY" D.S="SCIENCE" 8.若字符串采用链式存储,每个字符占用一个字节,每个指针在占用四个字节,则该字符串的存储密度为A.20%B.25%C.50%D.75%9.为查找某一特定单词在文本中出现的位置,可应用的串运算是A.串联接B.求子串C.串比较D.子串定位10.当目标串的长度为n,模式串的长度为m时,朴素的模式匹配算法最好情况下字符的比较次数A.m B.n C.n-m D.n+m11.当目标串的长度为n,模式串的长度为m时,朴素的模式匹配算法最坏情况下字符的比较次数A.m B.n C.(n-m+1)*m D.n*m12.已知串S="aaab",其Next数组的元素值依次为A.0、1、2、3 B.1、1、2、3 C.1、2、1、1 D.1、2、3、1 13.串"ababaaababaa" 的next数组为A.011234223456 B.012121111212 C.0123012322345 D.012345678999 14.字符串"ababaabab" 的nextval 为A.(0,1,0,1,0,0,0,1,1) B.(0,1,0,1,0,1,0,1,1)C.(0,1,0,1,0,2,1,0,1) D.(0,1,0,1,0,4,1,0,1)15.二维数组A[10][20]采用按行为主序的存储方式,每个元素占4个存储单元,若A[0][0]的存储地址为300,则A[8][10]的地址为A.660 B.732 C.980 D.113216.二维数组A[5][6]采用按列为主序的存储方式,每个元素占3个存储单元,若A[0][0]的存储地址是100,则A[4][3]的存储地址是A.157 B.166 C.169 D.18117.二维数组A按行优先顺序存储,其中每个元素占1个存储单元。
一、选择题 1.若有如下定义语句: int a[10]={1,2,3,4,5,6,7,8,9,10}; 则对数组正确的引用是( d)。 A.a[10] B.a[a[3]5] C.a[a[9]] D.a[a[4]+4] 2.若有如下定义语句: double a[5]; int i=0; 能正确给a数组元素输入数据的语句是( d)。 A.scanf("%lf%lf%lf%lf",a); B.for(i=0;i<=5;i++) scanf("%lf",a+i); C.while(i<5) scanf("%lf",&a[i++]); D.while(i<5) scanf("%lf", a+i); 3.以下定义语句正确的是( b)。 A.int n=5,a[n][n]; B.int a[ ][3]={{1,2},{3,4},{5,6}}; C.int a[ ][3]; D.int a[ ][ ]={ {1,2},{3,4},{5,6}} 4.以下程序的输出结果是(a )。 #include #include main() {char ss[16]="tese\0\n"; printf("%d,%d\n",strlen(ss),sizeof(ss));} A.4,16 B.7,7 C.16,16 D.4,7 5.有以下的定义初始化语句( c)。 char num[ ]="9876543210"; 数组num所占的存储空间的字节数是( )。 A.9 B.10 C.11 D.以上三项都不对
二、填空题 1、以下程序的功能是:从键盘上输入一行字符,存入一个字符数组中,构成一个字符串,并将该字符串复制到字符数组sptr中,然后输出字符数组sptr的内容。请填空。 # include # include #include main() { char str[80],sptr[80]; int i,j; for(i=0;i<80;i++) { str[i] =getchar(); if(str[i]=='\n') break; } str[i]= ______(1)________; for(j=0;j<______ (2)________ ;j++) { sptr[j]=str[j]; putchar(sptr[j]); } } 答:(1)‘\0’(2)strlen(str) 2、下面程序以每行4个数据的形式输出a数组 #include #define N 20 main() {int a[N],I; for{I=0;Ifor(I=0;I{ printf(‚%3d‛,a[I]); if(_____(2)_______) printf(‚\n‛); } } 答:(1)&a[I](2)(I+1)%4==0 3、下面程序的功能是统计年龄在16~31岁之间的学生 人数。请填空: #include main() {int a[30],n,age,I,j=0; for(I=0;I<30;I++) a[I]=0; printf("Enter the number of the students(<30)\n"); scanf("%d",&n); printf("Enter the age of each student:|\n"); for(I=0;I{scanf("%d",________(1)_______); a[I]=age;} printf("the result is\n"); for(_________(2)_________;I++) {if (a[I]>=16 &&a[I]<=31) j++; } printf("%d\n",j); } 答:(1) &age(2)I=0;I三、运行结果 1.当运行以下程序时,从键盘输入 AabD,则下面程序的运行结果是:__________________AzySD_____________________ #include main() {char s[80]; int I=0; gets(s); while(s[I]!='\0') {if(s[I]<='z'&&s[I]>='a') s[I]='z'+'a'-s[I]; I++;} puts(s);} 2.下面程序的运行结果是( 1) #include main() {char ch[7]={‚12ab56‛}; int I,s=0; for(I=0;ch[I]>=’0’&&ch[I]<=’9’;I+=2) s=10*s+ch[I]-‘0’; printf(‚%d\n‛,s);} 3.下面程序的运行结果是(LBLMNP) #include #include main() {char a[80]="AB",b[80]="LMNP"; int I=0; strcat(a,b); while(a[I++]!='\0') b[I]=a[I]; puts(b);} 4.下面程序的运行结果是:__1 3 4____________ #include main() {int I=1,n=3,j,k=3; int a[5]={1,4,5}; while(I<=n&&k>a[I]) I++; for(j=n-1;j>=I;j--) a[j+1]=a[j]; a[I]=k; for(I=0;I<=n;I++) printf("%3d",a[I]);} 5.下面程序的运行结果是:____t*M_____________________ #include #include main() {int I; char a[]="Time",b[]="Tom"; for(I=0;a[I]!='\0' && b[I]!='\0';I++) {if(a[I]==b[I]) {if(a[I]>='a'&&a[I]<='z') printf("%c",a[I]-32); else printf("%c",a[I]+32); } else printf("*"); } } 6.下面程序的运行结果是:_______s_______________________ #include main() {int I,r; char sl[80]="bus"; char s2[80]="book"; for(I=r=0;sl[I]!='\0'&&s2[I]!='\0';I++) if(sl[I]==s2[I]) I++; else {r=sl[I]; break;} printf("%c",r);}
1 一、 选择题 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. 给出下列代码,则数组初始化中哪项是不正确的? byte[] array1,array2[]; byte array3[][]; byte [][] array4; A.array2 = array1 B.array2=array3 C.array2=array4 D.array3=array4
8. 下面程序的运行结果是____ main(){ int x=30; int[] numbers=new int[x]; x=60; System.out.println(numbers.length); } A. 60 B. 20 C. 30 D. 50 2
9. 下面 不是创建数组的正确语句 A.float f[][]=new float[6][6]; B.float f[]=new float[6]; C.float f[][]=new float[][6]; D.float [][]f=new float[6][];
10. 下列关于Java语言的数组描述中,错误的是()。 A.数组的长度通常用length表示 B.数组下标从0开始 C.数组元素是按顺序存放在内存的D.数组在赋初值和赋值时都不判界
11. 数组a的第三个元素表示为() A. a(3) B. a[3] C.a(2) D. a[2]
12. 当访问无效的数组下标时,会发生 A. 中止程序 B. 抛出异常 C. 系统崩溃 D. 直接跳过
13. 使用arraycopy()方法将数组a复制到b正确的是 A. arraycopy(a,0,b,0,a.length) B. arraycopy(a,0,b,0,b.length) C.. arraycopy(b,0,a,0,a.length) D. arraycopy(a,1,b,1,a.length)
14. 关于数组默认值,错误的是()。 A. char—>'\u0000' B. Boolean—>true C. float—>0.0fD. int—>0
15. 执行String[] s=new String[10];语句后,哪些结论是正确的?() A.s[0] 为 未定义 B.s.length 为9 C.s[9] 为 null D.s[10] 为 ""
16. 关下面的表达式哪些是不正确的? ( ) A.String s="你好";int i=3; s+=i; B.String s="你好";int i=3; if(i==s){ s+=i}; C.String s="你好";int i=3; s=i+s; D. String s=null; int i=(s!=null)&&(s.length()>0)?s.length():0;
17. 下列语句会造成数组new int[10]越界是 A. a[0]+=9; B. a[9]=10; C.—a[9] D. for(int i=0;i<=10;i++) a[i]++;
18. 以下程序的运行效果。下面程序段执行完毕后,cont的值是() String strings[ ]={"string","starting","strong","street","soft"}; intcont=0; for(int i=0;i if(strings[i].endsWith("ng")) 3
cont++; A. 1 B. 2 C.3D.4
19. 如定义对象 StringBuffer ch = new StringBuffer("Shanghai") 则ch.length()=( ) A. 7 B.8 C.9 D.23
20. 执行完代码"int[]x=newint[25];"后以下()说明正确的 A.x[24]为0 B. x[24]未定义 C. x[25]为0 D.x[0]为空
21. 关于char类型的数组,说法正确的是() A. 其数组的默认值是'A' B. 可以仅通过数组名来访问数组 C. 数组不能转换为字符串 D. 可以存储整型数值
22. 对于数组a[10],下列表示错误的是 A. a[0] B. a(0) C. a[9] D. a[1]
23. 下列数组声明,下列表示错误的是 A. int[] a B. inta[] C. int[][] a D. int[]a[]
24.定义字符串:String str=“abcdefg”;则str.indexOf(‟d‟)的结果是() A) 'd' B) true C) 3 D) 4
25.下面程序段输出的结果是() StringBufferbuf1; String str=”北京2008”; buf1=new StringBuffer(str); System.out.println(buf1.charAt(2)); A. 2 B. 京 C.0 D.null
26.下面程序段输出的结果是() String s=”ABCD”; s.concat(“E”); s.replace(„C‟,‟F‟); System.out.println(s); A) ABCDEF B) ABFDE C) ABCDE D) ABCD
27.下面语句输出结果是( )。 char charArray[]={„a‟,‟b‟,‟c‟,‟d‟,‟e‟,‟f‟}; StringBufferbuf1; String str=”12345”; 4
buf1=new StringBuffer(str); buf1.insert(4,charArray); System.out.println(buf1.toString()); A) ab1234ef B) 1234abcdef5 C) 123456abcd D) abcd1234
二、 填空题 1) 数组的元素通过来访问,数组Array的长度为 。 2) 数组复制时,"="将一个数组的传递给另一个数组。 3) 矩阵或表格一般用维数组表示。 4) 如果把二维数组看成一维数组,那么数组的元素是数组。 5) Java中数组的下标的数据类型是。 6) 不用下标变量就可以访问数组的方法是。 7) 数组最小的下标是。 8) arraycopy()的最后一个参数指明。 9) 向方法传递数组参数时,传递的是数组的。 10) 数组初始化包括。 11) 浮点型数组的默认值是。 12) 对象型数组的默认值是。 13) 对象类型的数组虽然被默认初始化,但是并没有构造函数。 14) 二维数组的行的长度不同。 15) 数组创建后其大小改变。 16) 定义数组:char charArray[]={‘a’,’b’,’c’,’d’,’e’,’f’}; 则String.valueOf(charArray,2,3)的结果是。 17) 语句String s=new String(‚java program!‛); System.out.println(s.substring(5,8));的输出结果是。 18) 如有以下赋值语句: x=new StringBuffer().append(‚a‛).append(4). append(‚c‛).toString; x的类型是;它的值是。
三、简答题 1. 如何声明和创建一个一维数组? 2. 如何访问数组的元素? 3.数组下标的类型是什么?最小的下标是什么?一维数组a的第三个元素如何表示? 4.数组越界访问会发生什么错误?怎样避免该错误? 5.给方法传递数组参数与传递基本数据类型变量的值有何不同? 6.复制数组有哪些方法? 7.数组创建后,其元素被赋予的默认值有哪些?