C语言练习3数组参考答案.docx

上传人:b****5 文档编号:8336766 上传时间:2023-01-30 格式:DOCX 页数:21 大小:34.04KB
下载 相关 举报
C语言练习3数组参考答案.docx_第1页
第1页 / 共21页
C语言练习3数组参考答案.docx_第2页
第2页 / 共21页
C语言练习3数组参考答案.docx_第3页
第3页 / 共21页
C语言练习3数组参考答案.docx_第4页
第4页 / 共21页
C语言练习3数组参考答案.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

C语言练习3数组参考答案.docx

《C语言练习3数组参考答案.docx》由会员分享,可在线阅读,更多相关《C语言练习3数组参考答案.docx(21页珍藏版)》请在冰豆网上搜索。

C语言练习3数组参考答案.docx

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

C语言(数组)

一、选择题

1.设有程序:

main()

{inti,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.设已定义:

inta[15];则数组a占用的内存单元数是(C).

A)15B)16C)30D)32

3.阅读程序:

main()

{inta[2]={0},i,j,k=2;

for(i=0;i

for(j=0;j

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

}

以上程序的输出结果是(D).

A)1B)3C)2D)不确定的值

4.阅读程序:

f(intb[],intn)

{inti,r=1;

for(i=0;i<=n;i++)r=r*b[i];

returnr;

}

main()

{intx,a[]={2,3,4,5,6,7,8,9};

x=f(a,3);

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

}

以上程序的输出结果是(D).

A)720B)6C)24D)120

5.以下定义语句中,错误的是(B).

A)inta[]={6,7,8};

B)intn=5,a[n];

C)chara[]="string";

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

6.以下描述中正确的是(D).

A)数组名后面的常量表达式用一对圆括弧括起来

B)数组下标从1开始 

C)数组下标的数据类型可以是整型或实型

D)数组名的规定与变量名相同

7.若定义数组并初始化chara[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.若定义数组inta[10],其最后一个数组元素为(C).

A)a[0]

B)a[1]

C)a[9]

D)a[10]

9.若定义数组并初始化inta[10]={1,2,3,4},以下语句哪一个不成立(B)?

A)a[8]的值为0

B)a[1]的值为1

C)a[3]的值为4

D)a[9]的值为0

10.指出以下错误语句(A).

A)intn=10,a[n];

B)intn,a[10];

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

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

11.请读程序:

main()

{intn[2],i,j,k;

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

k=2;

for(i=0;i

for(j=0;j

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

}

上面程序的输出结果是(A).

A)不确定的值B)3C)2D)1

12.若有以下的定义和语句:

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

charc='e',

则数值为2的表达式是(C).

A)str['g'-c]B)str[2]C)str['d'-'c']D)str['d'-c]

13.设有数组定义:

inta[5];则下列给数组元素赋值错误的是(B).

A)a[3]=93;

B)scanf("%c",a[3]);

C)a[3]=getchar();

D)a[3]='a'+3;

14.以下数组定义中错误的是(D).

A)#defineN30

inta[N+30];

B)#defineN30

inta[N];

C)inta[30];

D)inta[N];

15.在定义一个一维数组时,不能用来表示数组长度的是(D).

A)常量B)符号常量C)常量表达式D)已被赋值的变量

16.若float型变量占用4个字节,有定义floata[20]={1.1,2.1,3.1};则数组a在内存中所占的字节数是(D).

A)12B)20C)40D)80

17.设已定义:

intx[2][4]={1,2,3,4,5,6,7,8};则元素x[1][1]的正确初值是(A).

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

18.设有定义:

inta[][3]={{1,2,3},{4,5,6},{7,8,9}};则a[1][2]的初值为(C).

A)2B)4C)6D)8

19.设有:

inta[4][5];则数组a占用的内存字节数是(C).

A)12B)24C)40D)20

20.以下数组定义中,不正确的是(B).

A)intb[3][4]; 

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

C)intb[200][100]={0}; 

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

21.定义数组:

intx[2][3];则数组x的维数是

(2).

A)1B)2C)3D)6

22.若定义数组并初始化intb[2][3]={1,2,3,4,5,6},以下语句哪一个成立(C)?

A)表达式b[1][2]的值为1

B)表达式b[1][2]的值为4

C)表达式b[1][2]的值为6

D)表达式b[1][2]的值为2

23.若定义数组并初始化inta[2][3]={{1,2,3},{4,5,6}};

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

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

printf("%d",a[i][j]);语句的结果是哪一个(C)?

A)1,2,3,4,5,6

B)123456

C)123456

24.若定义数组并初始化inta[2][3]={{1,2,3},{4,5,6}};以下语句哪一个不成立(B)?

A)a数组中有6个元素

B)a[2][3]是a数组的最后一个元素的引用

C)a数组中每个元素都为整数

D)a数组是整型数组

25.定义如下变量和数组:

inti;

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

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

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

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

26.如有以下定义:

doubles[][5]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14};则数值为2的元素是(C).

A)s[1][3]B)s[0][3]C)s[0][2]D)s[1][2]

27.以下程序的输出结果是(A).

main()

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

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

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

s+=a[i][j];

printf("%d",s);

}

A)18B)19C)20D)21

28.若已有charb[10][50];则该二维字符数组在内存所占字节数为(D).

A)10B)50C)60D)500

29.设有:

chara[10];下列语句那个是正确的(D)?

A)scanf("%s",a[0]);

B)scanf("%s",&a);

C)printf("%s",a[0])

D)printf("%s",a)

30.阅读程序:

main()

{chara[10];

inti;

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

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

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

}

设从键盘输入字符串:

abcde,则程序的输出结果是(C).

A)aB)空格C)不确定D)0

31.合法的数组定义是(D).

A)inta[]="string";

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

C)chara="string";

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

32.设有数组定义:

charstring[]="China";则数组string所占的空间为(B).

A)5个字节 

B)6个字节 

C)7个字节 

D)10个字节

33.定义字符数组c:

charc[]={"clanguage"};数组c在内存中所占字节数是(C).

A)9 B)10 C)11 D)12

34.指出以下错误语句(C).

A)chara[10]={'0','1','2','3','4','5','6','7','8','9'};

B)chara[10]={'0','1','2','3'};

C)chara[2]={"1","2"};

D)chara[2]={'a’,'b’};

35.若定义数组并初始化chara[10]={"hello"},该数组的元素个数是(A).

A)10

B)5

C)6

D)7

36.若定义数组并初始化chara[10]={"HELLO"},该数组的元素中a[2]是(A).

A)'L'

B)'E'

C)'H'

D)'O'

37.若定义数组并初始化intb[10]={1,2,3,4},以下哪几个语句成立(ACD)?

A)b[8]的值为0

B)b[1]的值为1

C)b[3]的值为整数

D)b[10]不是b数组中的元素

38.若定义数组inta[10];指出下列错误语句:

ABCD

A)a数组共有10个元素,其引用方法是:

a[1],a[2]...a[10];

B)a数组是整型数组,其元素自动初始化为0;

C)a数组最后一个元素的引用方法是a[10];

D)a数组第一个元素的引用方法是a[1];

二、判断题

1.数组是数目固定的若干变量的有序集合,数组中各元素的类型可以不同。

2.数组是C语言的一种构造数据类型,其元素的类型可以是整型、实型、字符型甚至结构类型。

3.设需定义一个有15个元素的数组a,并对其前5个元素赋初值,可用如下语句实现:

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

4.数组定义时,只允许使用常量表达式定义数组的大小,其值必须是正整数,而不能用变量来定义数组长度。

5.C语言数组的下标从0开始,下标必须是整数型的常量或变量。

6.数组是数目固定、类型相同的若干变量的有序集合。

数组中的每一个数(变量)称为数组元素,数组中的所有元素都属于同一种数据类型。

7.数组元素下标的下界是固定的,总是为0。

8.一维数组在引用时下标的范围是:

0<=下标<数组的长度。

9.若有数组定义为:

inta[100];则该数组的下界为0,上界为100。

数组元素下标范围是:

下界<=下标<上界。

10.设已定义:

doublea[5][5];则数组a在内存中的存放顺序是:

a[0][0],a[0][1],a[0][2],...,a[4][3],a[4][4]。

二.填空题

1.在C语言中,二维数组的元素在内存中的存放顺序是按行的顺序依次存放。

2.若有定义:

doublex[3][5],则x数组中行下标的下限为0,列下标的下限为0。

3.若有定义:

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

4.字符串”ab\n\\012\\”的长度是8。

5.下面程序段的运行结果是he。

      charx[]=”theteacher”;

      inti=0;

      while(x[++i]!

=’\0’)

         if(x[i-1]==’t’)printf(“%c”,x[i]);

6.欲为字符串S1输入”HelloWorld!

”,其语句是scanf(“%s”,S1);。

7.欲将字符串S1复制到字符串S2中,其语句是strcpy(S2,S1);。

8.如果在程序中调用了strcat函数,则需要预处理命令#include

如果调用了gets函数,则需要预处理命令#include

9.C语言数组的下标总是从0开始,不可以为负数;构成数组各个元素具有相同的数据类型。

10.字符串是以‘\0’为结束标志的一维字符数组。

有定义:

chara[]=””;则a数组的长度是0。

三.程序阅读题

1.写出下面程序的运行结果。

      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”);

         }

      }

运行结果:

2.写出下面程序的运行结果。

      main()

      {inti=0;

         chara[]=”abm”,b[]=”aqid”,c[10];

         while(a[i]!

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

=’\0’){

            if(a[i]>=b[i])c[i]=a[i]-32;

            elsec[i]=b[i]-32;

            i++;

         }

         c[i]=’\0’;

         puts(c);

      }

运行结果:

AQM

3.当运行下面程序时,从键盘上输入AabD↙,则写出下面程序的运行结果。

      main()

      {chars[80];

         inti=0;

         gets(s);

         while(s[i]!

=’\0’){

            if(s[i]<=’z’&&s[i]>=’a’)

               s[i]=’z’+’a’-s[i];

            i++;

         }

         puts(s);

      }

运行结果:

AzyD

4.写出下面程序的运行结果。

      main()

     {inti,c;

          chars[2][5]={“8980”,”9198”};

          for(i=3;i>=0;i--){

              c=s[0][i]+s[1][i]-2*’0’;

              s[0][i]=c%10+‘\0’;

          }

          for(i=0;i<=1;i++)puts(s[i]);

      }

运行结果:

注:

s数组中每个字符的ASCII值为:

5.当运行下面程序时,从键盘上输入748915↙,则写出下面程序的运行结果。

      main()

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

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

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

          for(i=5;i>=0;i--){

             k=a[5];

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

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

             a[0]=k;

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

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

             printf(“\n”);

          }

       }

运行结果:

四.程序填空题

1.下面程序可求出矩阵a的主对角线上的元素之和,请填

(2)空使程序完整。

    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(【i==j】)

                sum=sum+【a[i][j]】;

       printf(“sum=%d”,sum);

}

2.下面程序将十进制整数n转换成base进制,请填(3)空使程序完整。

main()

{inti,base,n,j,num[20];

   scanf(“%d”,&n);

   scanf(“%d”,&base);

   do{

      i++;

      num[i]=【n%base】;

      n=【n/base】;

   }while(n!

=0);

   for(【j=i;j>0;j--】)

      printf(“%d”,num[j]);

}

3.下面程序的功能是输入10个数,找出最大值和最小值所在的位置,并把两者对调,然后输出调整后的10个数,请填(3)空使程序完整。

main()

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

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

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

  max=min=a[0];

  for(i=0;i<10;i++){

     if(a[i]

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

  }

  【max=a[j];a[j]=a[k];a[k]=max;】

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

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

}

4.下面程序的功能是在一个字符串中查找一个指定的字符,若字符串中包含该字符则输出该字符在字符串中第一次出现的位置(下标值),否则输出-1,请填

(2)空使程序完整。

#include

main()

{charc=’a’;/*需要查找的字符*/

   chart[50];

   inti,j,k;

   gets(t);

   i=【strlen(t)】;

   for(k=0;k

      if(【t[k]==c】)

         {j=k;break;}

      elsej=-1;

   printf(“%d”,j);

}

5.下面程序用“顺序查找法”查找数组a中是否存在某一关键字,请填

(2)空使程序完整。

main()

{inta[10]={25,57,48,371,123,291,18,22,44};

   inti=0,x;

   scanf(“%d”,&x);

   【a[10]=x】;

   while(a[i]!

=x)i++;

   if(【i<10】)printf(“found=%d\n”,i);

   elseprintf(“can\’tfound!

\n”);

}

6.以下程序是将字符串b的内容连接字符数组a的内容后面,形成新字符串a,请填

(2)空使程序完整。

main()

{chara[40]=”Great”,b[]=”Wall”;

   inti=0,j=0;

   while(a[i]!

=’\0’)i++;

   while(【b[j]!

='\0'】){

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

   }

   【a[i]='\0'】;

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

}

五、编程题

[1]输入一行数字字符,请用数组元素作为计数器来统计每个数字字符的个数。

用下标为0元素统计字符“0”的个数,下标为1的元素统计字符“1”的个数,...。

#include

#defineN80

voidmain()

{

charchs[N];

inti,count[10];

printf("Inputastring:

");

scanf("%s",chs);

for(i=0;i<10;i++)count[i]=0;

for(i=0;i

{

count[chs[i]-'0']++;

}

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

if(count[i])printf("%dcounts:

%d\n",i,count[i]);

}

[2]编写程序求任意方阵每行、每列、两对角线元素之和。

#include

#defineN5

#defineM5

voidmain()

{

inta[N][M]={{3,4,7,8,9},

{6,8,2,1,3},

{8,5,4,3,2},

{7,6,9,1,5},

{5,6,4,1,7}};

ints1[N];//存放每行的和

ints2[M];//存放每列的和

intsum1=0,sum2=0;//存放两对角线的和

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

当前位置:首页 > IT计算机 > 互联网

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

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