第七章 数组.docx

上传人:b****8 文档编号:28229853 上传时间:2023-07-09 格式:DOCX 页数:42 大小:40.99KB
下载 相关 举报
第七章 数组.docx_第1页
第1页 / 共42页
第七章 数组.docx_第2页
第2页 / 共42页
第七章 数组.docx_第3页
第3页 / 共42页
第七章 数组.docx_第4页
第4页 / 共42页
第七章 数组.docx_第5页
第5页 / 共42页
点击查看更多>>
下载资源
资源描述

第七章 数组.docx

《第七章 数组.docx》由会员分享,可在线阅读,更多相关《第七章 数组.docx(42页珍藏版)》请在冰豆网上搜索。

第七章 数组.docx

第七章数组

第七章数组

数组是程序设计语言中最基本,最重要的组成部分,本章的习题将从C语言数组的基本概念出发,讨论C语言数组的特点和使用方法,并通过典型的例题和常见算法研究数组的一般应用,本章的主要内容包括:

●数组基本概念。

包括:

数组的定义,数组的类型,数组维数,体积,数组元素和数组下标的概念,数组说明,对数组进行初始化的方法,多维数组中元素的排列次序及初始化等问题。

●字符型数组。

包括:

字符型数组与其它数组的区别,字符串及其特点,对字符型数组进行初始化,使用不同的库函数输入输出字符串,对字符串的简单处理(求串长,串复制,串连接,串比较,串反向等)等。

●数组与函数之间的关系。

包括:

将数组作为组与函数之间进行传递等。

●常见的使用数组的算法。

包括:

排序算法,查找算法等。

 

7.1选择题

【7.1】错误的说明语句是。

A)staticcharword[]={‘T’,’u’,’r’,’b’,’o’,’\0’};

B)staticcharword[]={“Turbo\0”};

C)staticcharword[]=”Turbo\0”;

D)staticcharword[]=‘Turbo\0’;

【7.2】已知:

chars[5],c;registerintb;则调用函数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);

【7.3】要说明一个有10个int元素的数组,应当选择语句

A)inta[10];B)inta[2,5];

C)inta[];D)int*a[10];

【7.4】合法的数组说明语句是。

A)inta[]=”string”;

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

C)chara=”string”;

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

【7.5】在下述对C语言字符数组的描述中错误的是。

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

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

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

D)字符数组的下标从0开始

【7.6】调用strlen(“abcd\0ef\0g”)的返回值为。

A)4B)5C)8D)9

【7.7】若有以下语句,则正确的描述是。

staticcharx[]=”12345”;

staticchary[]={‘1’,’2’,’3’,’4’,’5’};

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

B)x数组长度大于y数组长度

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

D)x数组等价于y数组

【7.8】已知:

charstr1[10],str2[10]={“books”};则在程序中能够将字符串“books”赋给数组str1的正确语句是。

A)str1={“Books”};

B)strcpy(str1,str2);

C)str1=str2;

D)strcpy(str2,str1);

【7.9】以下程序段的输出是。

staticchara[]=“-12345”;

intk=0,symbol,m;

if(a[k]==‘+’||a[k]==‘-’)

symbol=(a[k++]==‘+’)?

1:

-1;

for(m=0;a[k]>=‘0’&&a[k]<=‘9’;k++)

m=m*10+a[k]-’0’;

printf(“number=&d\n”,symbol*m);

A)number=-12345

B)number=12345

C)number=-1000

D)number=1000

【7.10】若用数组名作为函数调用时的实参,则实际上传递给形参的是。

A)数组首地址

B)数组的第一个元素值

C)数组中的全部元素的值

C)数组元素的个数

【7.11】已知:

charstr1[20]=”abcde”,str2[20]=”xyz”;则执行语句:

printf(“&d”,strlen(strcpy(str1,str2)));

输出结果是。

A)9B)3C)5D)8

【7.12】下面关于字符串的说明中,错误的是。

A)charstr[7]=”FORTRAN”;

B)charstr[]=”FORTRAN”;

C)char*str=”FORTRAN”;

D)charstr[]={‘F’,’0’,’R’,’T’,‘R’,’A’,’N’,’\0’};

【7.13】已知:

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

则下面语句的输出结果是。

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

printf(“&d”,x[i][2-i]);

A)159B)147C)357D)369

【7.14】已知:

charstr[]=”ab\n\012\\\””;则执行语句:

printf(“&d”,strlen(str));

A)3B)4C)6D)12

【7.15】在C语言中,引用数组元素时,其数组下标的数据类型允许是。

A)整型常量

B)整型表达式

C)整型常量或整型表达式

D)任何类型的表达式

【7.16】以下对一维整型数组a的正确说明是。

A)inta(10);

B)intn=10,a[n];

C)intn;

scanf(“&d”,&n);

inta[n];

D)#defineSIZE10

inta[SIZE];

【7.17】已知:

inta[10];则对a数组元素的正确引用是。

A)a[10]B)a[3.5]

C)a(5)D)a[10-10]

【7.18】在C语言中,一维数组的说明方式为:

类型说明符数组名。

A)[常量表达式]

B)[整型表达式]

C)[整型常量]或[整型表达式]

D)[整型变量]

【7.19】以下对外部的一维数组a进行正确初始化的语句是

A)inta[10]=(0,0,0,0,0);

B)inta[10]={};

C)inta[]={0};

D)inta[10]={10*1};

【7.20】以下对二维数组a的正确说明是。

A)inta[3][];

B)floata(3,4);

C)doublea[1][4];

D)floata(3)(4);

【7.21】已知:

inta[3][4];则对数组元素引用正确的是。

A)a[2][4]B)[1,3]

C)a[1+1][0]D)a

(2)

(1)

【7.22】已知:

inta[3][4];则对数组元素的非法引用是。

A)a[0][2*1]B)a[1][3]

C)a[4-2][0]D)a[0][4]

【7.23】以下能对外部的二维数组a进行正确初始化的语句是。

A)inta[2][]={{1,0,1},{5,2,3}};

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

C)inta[2][4]={{1,2,3},{4,5},{6}};

D)inta[][3]={{1,0,1},{},{1,1}};

【7.24】以下不能对二维数组a进行正确初始化的语句是。

A)inta[2][3]={0};

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

C)inta[2][3]={{1,2},{3,4},{5,6}};

D)inta[][3]={1,2,3,4,5,6};

【7.25】已知:

staticinta[3][4]={0};则下面正确的叙述是。

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

B)此说明语句是错误的

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

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

【7.26】已知在函数的外面有:

inta[][4]={0,0};则下面

叙述中错误的是。

A)数组a的每个元素都可得到初值0

B)二维数组a的第一维大小为1

C)因为二维数组a中第二维大小的值除以初值个数的商为1,故数组a的行数为1

D)只有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0

【7.27】已知:

staticinta[3][4];则数组a中各元素。

A)可在程序的运行阶段得到初值0

B)可在程序的编译阶段得到初值0

C)不能得到确定的初值

D)可在程序的编译或运行阶段得到初值0

【7.28】以下各组中选项中,均能正确说明二维实型数组a的是。

A)floata[3][4];

floata[][4];

floata[3][]={{1},{0}};

B)floata(3,4);

floata[3][4];

floata[][]={{0},{0}};

C)floata[3][4];

floata[][4]={{0},{0}};

autofloata[][4]={{0},{0},{0}}

E)floata[3][4];

floata[3][];

floata[][4];

【7.29】在C语言中,二维数组元素在内存中的存放顺序是。

A)按行存放B)按列存放

C)由用户自己定义D)由编译器决定

【7.30】对以下说明语句的正确理解是。

inta[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)因为数组长度与初值的个数不相同,所以此语句不正确

【7.31】下列数组说明语句中错误的是。

A)doublex[5]={2.0,4.0,6.0,8.0,10.0};

B)inty[5]={0,1,3,5,7,9};

C)charc1[]={‘1’,‘2’,‘3’,‘4’,‘5’};

D)charc2[]={‘\x10’,‘\xa’,‘\x8’};

【7.32】已知:

inta[][3]={1,2,3,4,5,6,7};则数组a的第一维的大小是。

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

【7.33】若二维数组a有m列,则在a[i][j]之前的元素各数为。

A)j*m+iB)i*m+j

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

【7.34】以下正确的语句是。

A)inta[1][4]={1,2,3,4,5};

B)floatx[3][]={{1},{2},{3}};

C)longb[2][3]={{1},{1,2},{1,2,3}};

D)doubley[][3]={0};

【7.35】下面是对外部变量s的初始化,其中错误的是。

A)chars[5]={“abc”};

B)chars[5]={‘a’,‘b’,‘c’};

C)chars[5]=“”;

D)chars[5]=”abcdef”;

【7.36】已知:

chara[20],b[20];则以下不正确的输入语句是。

A)gets(a,b);

B)scanf(“%s%s”,a[],b[]);

C)scanf(“%s%s”,&a,&b);

D)gets(“a”),gets(“b”);

【7.37】有字符数组a[80]和b[80],则正确的输出语句是。

A)puts(a,b);

B)printf(“%s,%s”,a[],b[]);

C)putchar(a,b);

D)puts(a),puts(b);

【7.38】若要求:

如果字符串s1大于字符串s2则要执行if语句的语句1应当使用。

A)if(s1>s2)

B)if(strcmp(s1,s2))

C)if(strcmp(s2,s1)>0)

D)if(strcmp(s1,s2)>0)

【7.39】下面描述正确的是。

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

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

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

D)字符串“That”小于字符串”The”

【7.40】下面程序的运行结果是。

charc[5]={‘a’,‘b’,‘\0’,‘c’,‘\0’};

printf(“%s”,c);

A)‘a’’b’B)\0

C)abcD)以上三个答案均有错误

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

chara[7]=“abcdef”,b[4]=”ABC”;

strcpy(a,b);

printf(“%c”,a[5]);

A)~B)\0C)eD)f

【7.42】已知以下程序段,则。

chara[3],b[]=”China”;

a=b;

printf(“%s”,a);

A)运行后将输出China

B)运行后将输出Ch

C)运行后将输出Chi

1.D)程序出错

【7.43】下面程序段的运行结果是。

charc[]=”\t\v\\\0will\n”;

printf(“%d”,strlen(c));

A)14

B)3

C)9

D)字符串中有非法字符,输出值不确定

【7.44】若有以下程序段:

inta[]={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];j--;}

a[j+1]=t;

}

则该程序段的功能是。

A)对数组a进行插入排序(升序)

B)对数组a进行插入排序(降序)

C)对数组a进行选择排序(升序)

D)对数组a进行选择排序(降序)

【7.45】下面程序(程序每行前面的数字表示行号)。

1main()

2{

3floata[10];

4inti;

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

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

7.printf(“%f\n”,a[0];

8.}

A)没有错误B)第3行有错误

C)第五行有错误D)第7行有错误

【7.46】下面程序中有错误的行是(程序每行前面的数字表示行号)。

1main()

2{

3inta[3];

4inti;

5canf(“%d”,&a);

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

7printf(“a[0]=%d”,a[0];

}

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

【7.47】下面程序(程序每行前面的数字表示行号)。

1main()

2{

3inta[3];

4inti;

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

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

7printf(“%d\n”,a);

8{

A)没有错误B)第5行有错误

C)第6行有错误D)第7行有错误

【7.48】下面程序(程序每行前面的数字表示行号)。

1main()

2{

3inta[3]={3*0};

4inti;

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

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

7printf(“%d\n”,a[0]);

8}

A)第3行有错误B)第7行有错误

C)第5行有错误D)没有错误

7.2阅读程序

【7.49】阅读下列程序,选择程序的运行结果。

intm[3][3]={{1},{2},{3}};

intn[3][3]={1,2,3};

main()

{printf(“%d\n”,m[1][0]+n[0][0]);

/*①*/

printf(“%d\n”,m[0][1]+n[1][0]);

/*②*/

}

①A)0B)1C)2D)3

②A)0B)1C)2D)3

【7.50】阅读下列程序,选择程序的运行结果。

#defineFMT“%X\n”

#include

main( )

    {staticinta[][4]={1,2,3,4,5,6,7,8,9,10,11,12};

printf(FMT,a[2][2]);/*①*/

printf(FMT,*(*(a+1)+1));/*②*/

}

①A)9B)AC)BD)前面三个答案均是错误的

②A)6B)7C)8D)前面三个答案均是错误的

【7.51】选择下列程序的运行结果。

#include

main()

{intn[3][3],i,j;

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

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

n[i][j]=i+j;

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

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

n[i+1][j+1]+=n[i][j];

printf(“%d\n”,n[i][j];

}

A)14B)0C)6D)不确定

【7.52】阅读下列程序,选择程序的运行结果。

main()

{inta[6][6],i,j;

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

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

a[i][j]=(i/j)*(j/i);

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

{for(j=1;j<6;j++)

printf(“%2d”,a[i][j]);

printf(“\n”);

}

}

A)11111B)00001

1111100010

1111100100

1111101000

1111110000

C)10000D)10001

0100001010

0010000100

0001001010

0000110001

【7.53】阅读下列程序,选择程序的运行结果。

main()

{inta[6],i;

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

{a[i]=9*(i-2+4*(i>3))%5;

printf(“%2d”,a[i]);

}

}

A)-3-40404

B)-3-40403

C)-3-40443

D)-3-40440

【7.54】阅读下列程序,选择程序的运行结果。

#include

main()

{inti,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);

}

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

【7.55】阅读程序,写出执行结果。

#include

main()

{charstr[30];

scanf(“%s”,str);

printf(“%s”,str);

}

运行程序,输入:

FortranLanguage

 

【7.56】阅读程序,写出执行结果。

#include“stdio.h”

main()

{charstr[30];

gets(str);

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

{

运行程序,输入:

FortranLanguage

【7.57】阅读程序,写出执行结果。

#include“stdio.h”

func(intb[])

{intj;

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

b[j]=j;

}

main()

{inta[4],i;

func(a);

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

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

}

【7.58】写出程序的运行结果。

#include

#include

main()

{charstr[100]=“Howdoyoudo”;

strcopy(str+strlen(str)/2,”esshe”);

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

}

【7.59】运行下面的程序,如果从键盘上输入字符串“qwerty”和字符串“abcd“,请写出程序的运行结果。

#include

strle(chara[],charb[])

{intnum=0,n=0;

while(a[num]!

=’\0’)num++;

while(b[n])

{a[num]=b[n];

num++;n++;

}

return(num);

}

main()

{charstr1[81],str2[81];

gets(str1);

gets(str2);

printf(“%d\n”,strle(str1,str2));

}

7.3程序选择填空

【7.60】下面程序输出两个字符串中对应位置相同的字符。

请选择填空。

#include

charx[]=”programming”;

chary[]=”Fortran”;

main()

{inti=0;

while(x[i]!

=’\0’&&y[i]!

=’\0’)

if(x[i]==y[i])printf(“%c”,①);

elsei++;

}

A)x[i++]B)y[++i]C)x[i]D)y[i]

【7.61】有已按升序排好序的字符串a,下面的程序是将字符串s中的每个字符按升序的规则插到数组a中。

#include

#include

main

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 政史地

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1