C语言程序设计 第六章 数组.docx

上传人:b****5 文档编号:12213219 上传时间:2023-04-17 格式:DOCX 页数:23 大小:22.62KB
下载 相关 举报
C语言程序设计 第六章 数组.docx_第1页
第1页 / 共23页
C语言程序设计 第六章 数组.docx_第2页
第2页 / 共23页
C语言程序设计 第六章 数组.docx_第3页
第3页 / 共23页
C语言程序设计 第六章 数组.docx_第4页
第4页 / 共23页
C语言程序设计 第六章 数组.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

C语言程序设计 第六章 数组.docx

《C语言程序设计 第六章 数组.docx》由会员分享,可在线阅读,更多相关《C语言程序设计 第六章 数组.docx(23页珍藏版)》请在冰豆网上搜索。

C语言程序设计 第六章 数组.docx

C语言程序设计第六章数组

一、 选择题

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

A)、 整型常量  B)、 整型表达式

C)、 整形常量或整形表达式    D)、 任何类型的表达式

2、以下对一维整型数组a的正确说明是____

A)、 inta(10);B)、 intn=10,a[n];

C)、 intn;scanf(“%d”,&n); inta[n];

D)、#defineSIZE10      inta[SIZE];

3、若有定义:

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

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

4、以下能对一维数组a进行正确初始化的语句是      。

A)、 inta[10]={0,0,0,0,0};     B)、 inta[10]={};

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

5、若有定义:

inta[3][4],则对数组a元素的正确引用是________

A)、 a[2][4]   B)、a[1,3]    C)、a(5)    D)、a[10-10]

6、以下能对二维数组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、若有说明:

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

A)、 只有元素a[0][0]可得到初值0B)、 此说明语句不正确

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

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

8、下面是对s的初始化,其中不正确的是_____

A)、chars[5]={“abc”};B)、chars[5]={‘a’,’b’,’c’,’d’,’e’,’\0’};

C)、 chars[5]=””; D)、 chars[5]=”abcdef”;

9、在C语言中,引用数组元素时,其数组下标的数据类型允许是()

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

10、以下对一维整形数组a的正确说明是()。

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

C)intn;D)#defineSIZE10

scanf(“%d”,&n);inta[SIZE];

inta[n];

11、若有说明:

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

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

12、在C语言中,一位数组的定义方式为:

类型说明符数组名()。

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

13、以下对一维整形数组a进行正确初始化的语句是()。

A)inta[10]=(0,0,0,0,0);B)inta[10]={};C)inta[]={0};D)inta[10]={10*1};

14、以下对二维整形数组a的正确说明是(。

A)inta[3][];B)floata(3,4);C)doublea[1][4];D)floata(3)(4);

15、若有说明:

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

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

(2)

(1)

16、若有说明:

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

A)a[0][2*1]B)a[1][3]C)a[4-2][0]D)a[0][4]

17、以下对二维整形数组a进行正确初始化的语句是()。

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

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

18、以下不能对二维整形数组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};

19、若有说明:

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

A)只有元素a[0][0]可得到初值0B)此说明语句不正确

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

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

20、若有说明:

inta[][4]={0,0};则下面正确的叙述是()。

A)数组a中每个元素均可得到初值0B)二维数组a的第一维大小为1

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

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

21、若有说明:

inta[3][4];则数组a中各元素()。

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

C)不能得到确定的初值D)可在程序的编译或运行阶段得到初值0

22、C语言规定,数组名做实参时,它和对应形参之间的数据传递方式是:

()

A)用户指定传递方式B)无传递C)单向值传递D)地址传递

23、下面程序()。

(每行程序前面的数字表示行号)。

1 main()

2 {

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

4   inti;

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

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

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

8 }

A)第3行有错误    B)第7行有错误       C)第5行有错误                    D没有错误

24、下面程序()。

(每行程序前面的数字表示行号)。

1 main()

2 {

3   inta[3]={1};

4   inti;

5   scanf("%d",&a);

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

7   printf("a[0]=%d\n",a[0]);

8 }

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

25、下面程序()。

1main()

2{

3inta[3]={0};

4intI;

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

6for(I=1;I<4;I++)a[0]=a[0]+a[I];

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

8}

A)没有错误B)第3行有错误C)第5行有错误D)第6行有错误、

26、若二维数组a有m列,则计算任一元素a[i][j]在数组中位置的公式为()。

A、i*m+jB、j*m+iC、i*m+j-1D、i*m+j+1

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

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

28、以下不正确的定义语句是()。

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

29、若有说明:

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

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

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

A)j*m+IB)i*m+jC)i*m+j-1D)i*m+j+1

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

intk;

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

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

for(k=0;k<3;k++)printf(“%d”,a[k][2-k]);

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

32、以下正确的定义语句是()。

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

33、下面程序的运行结果是()。

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)11111

11111

11111

11111

11111

B)00001

00010

00100

01000

10000

C)10000

01000

00100

00010

00001

D)10001

01010

00100

01010

10001

34、下面程序的运行结果是()。

main()

{inta[6],i;

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

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

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

A)–40404B)–40403C)–40443D)–40440

35、下面是对S的初始化,其中不正确的是()。

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

C)chars[5]=””;D)chars[5]=”abcdef”;

二、填空题

1、在C语言中,二维数组的定义方式为:

类型说明符数组名【】;

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

3、若有定义:

doublex[3][5];则x数组中行下标的下限为【,列下标的上限为【】。

4、若二维数组a有m列,则计算任一元素a[i][j]在数组中位置的公式为:

【】。

(假设a[0][0]位于数组的第一个位置上。

5、若有定义:

inta[3][4]={{1,2},{0},{4,6,8,10}};则初始化后,a[1][2]得到的初值是【】,a[2][1]得到的初值是【】。

6、若有以下输入(代表回车符),则下面程序的运行结果是【】。

main()

{intb[51],x,i,j=0,n=0;

scanf(“%d”,&x);

while(x>-1){b[++n]=x;scanf(“%d”,&x);}

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

if(b[i]%2==0)b[++j]=b[i];

for(i=1;i<=j;i++)printf(“3%d”,b[i]);printf(“\n”);

}

7、下面程序以每行4个数据的形式输出a数组,请填空。

#defineN20

main()

{inta[N],i;

for(i=0;i

for(i=0;i

{if(【】)【】

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

printf(“n”);}

8、下面程序将二维数组a的行和列元素互换后存到另一个二维数组b中。

请填空。

main()

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

intb[3][2],i,j;

printf(“arrara:

\n”);

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

{for(j=0;【】;j++)

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

【】;}

printf(“\n”);}

printf(“arrayb:

\n”);

for(i=0;【】;i++)

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

printf(“5%d”,b[i][j]);

printf(“\n”);

}}

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

main()

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

intb[3][2],i,j;

printf(“arrara:

\n”);

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

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

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

b[j][i]=a[i][j];}

printf(“\n”);}

printf(“arrayb:

\n”);

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

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

printf(“5%d”,b[i][j]);

printf(“\n”);}}

10、下面程序可求出矩阵a的两条对角线上的元素之和。

请填空。

mian()

{inta[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--)

if((i+j)==2sum2=sum2+a[i][j];

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

}

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

main()

{inta[5][5],i,j,n=1;

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

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

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

printf(“Theresultis:

\n”);

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

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

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

printf(“\n”);}}

12、下面程序可求出矩形阵a的主对角线上的元素之和。

请填空。

main()

{inta=[3][3]={1,3,5,7,9,11,13,15,17},sum=0,I,j;

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

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

if(【】)sum=sum+【】;

printf(“sum=%d\n”,sum);}

13、以下程序可求出所有的水仙花数。

(提示:

所谓水仙花数是指一个三位正整数,

其各位数字之和的立方之和等于该正整数。

例如:

407=4×4×4+0×0×0+7×7×7。

故407是一个水仙花数。

)请填空。

main()

{intx,y,z,a[8],m,i=0;

printf(“Thespecialnumbersare(inthearrangeof1000):

\n”);

for(【】;m++)

x=m/100;

y=【】;

z=m%10;

if(x*100+y*10+z==x*x*x+y*y*y+z*z*z)

{【】;i++;}}

for(x=0;x

printf(“%6d”,a[x]);}

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

main()

{inti,j,a[2][3]={{2,4,6},{8,10,12}};

printf(“Theorigianalarrayis:

\n”);

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

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

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

printf(“\n”);}

printf(“\ntheresultis:

\n”);

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

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

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

printf(“\n”);}}

15、下面程序的功能是输入5个整数,找出最大数和最小数所在的位置,并把二者对调,然后输出调整后的5个数。

请填空。

main()

{inta[5],max,min,i,j,k;

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

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

min=a[0];

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

if(a[i]

max=a[0];

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

if(a[i]>max){max=a[i];【】;}

【】

print(“\nThepositionofminis:

%3d\n”,k);

printf(“Thepositionofmaxis:

%3d\n”,j);

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

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

三、编程题

1、用选择法对10个整数排序(从小到大)

2、有一篇文章,共有3行文字,每行有80个字符。

要求分别统计出其中英文大写字母,小写字母,中文字母,中文字符,数字,空格及其他字符的个数。

(提示:

中文字符是两个字节,且数值均大于128的字符)。

3、编程实现将一个字符串的内容颠倒过来。

4、求整形数组的最大值。

5、找出二维数组的鞍点,即该位置上的元素是该行上的最大值,是该列上的最小值。

二维数组也可能没有鞍点。

6、从键盘上输入若干个学生的成绩,计算出平均成绩,并输出不及格的成绩和人数。

7、设计函数,在二维数组中产生如下形式的扬辉三角形。

1

11

121

1331

14641

······

8、回文是从前向后和从后向前读起来都一样的句子。

写一个函数,判断一个字符串是否为回文,注意处理字符串中有中文也有西文的情况。

9、某人有5张2角和4张3角的邮票,使用这些邮票能组合出多少种不同面值的邮资。

约瑟夫环问题:

编号为1,2,3,···,n的n个人按顺时针方向围坐一圈,每人持有一个正整数密码。

一开始任选一个正整数m作为报数上限值,从第一个人开始按顺时针报数,报到m时停止,报m的人出列,将他的密码作为新的m值,从他在顺时针方向的下一个人开始重新从1报数,如此下去,直到所有人全部出列为止。

设计程序求出出列顺序。

 

参考答案

一、 选择题

题号

1

2

3

4

5

6

7

8

9

答案

A

A

A

B

D

A

C

题号

10

11

12

13

14

15

16

17

18

答案

D

D

D

C

C

C

D

B

C

题号

19

20

21

22

23

24

25

26

27

答案

D

D

B

D

A

D

D

D

B

题号

28

29

30

31

32

33

34

35

答案

B

B

B

A

D

C

C

D

二、填空题

1、常量表达式常量表达式2、按行主顺序存放3、0,44、i*m+j+i

5、0,66、104682461227105467983246122-1

7、&a[i]i%4==0printf(“\n”)8、j<=2b[j][i]=ai<=2

9、arraya:

23

56

arrayb:

4

5

6

10、j=2j>=0

11、Theresultis:

1

67

1213

171819

2122232425

12、i==ja[i][j]13、m=100;m<1000m/10-x*10a[i]=m

14、Theoriginalarrayis:

46

81012

Theresultis:

28

410

612

15、j=ik=ia[j]=max;a[k]=min

三、 编程题

1、 main()

{inti,j,min,temp,a[11];

printf("enterdata:

\n");

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

scanf("%d",&a[i]);6

printf("\n");

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

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

printf("\n");

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

{min=i;

for(j=i+1;j<=10;j++)

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

temp=a[i];

a[i]=a[min];

a[min]=temp;}

printf("\nthesortednumber:

\n");

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

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

2、 main()

{inti,j,upp,low,dig,spa,oth;

chartext[3][80];

upp=low=dig=spa=oth=0;

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

{printf("\npleaseinputline%d:

\n",i++);

gets(text[i]);

for(j=0;j<80&&text[i][j]!

='\0';j++)

{if(text[i][j]>'A'&&text[i][j]<='Z')

upp++;

elseif(text[i][j]>='a'&&text[i][j]<='z')

low++;

elseif(text[i][j]>='0'&&text[i][j]<='9')

dig++;

elseif(text[i][j]=='')

spa++;

else

oth++;}}

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

printf("%s\n",text[i]

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

当前位置:首页 > 表格模板 > 合同协议

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

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