视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
第7章 数组
2025-09-29 00:07:46 责编:小OO
文档
第七章   数   组

一   单项选择题

1.下列描述中不正确的是(   )。

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

B) 可以对字符型数组进行整体输入、输出

C) 可以对整型数组进行整体输入、输出

D) 不能在赋值语句中通过赋值运算符"="对字符型数组进行整体赋值

2.执行下面的程序段后,变量k中的值为(   )。

int k=3, s[2];

s[0]=k; k=s[1]*10;

A) 不定值     B) 33     C) 30     D) 10

3.设有数组定义: char array[ ]="China"; 则数组array所占的空间为(   )。

A) 4个字节     B) 5个字节     C) 6个字节     D) 7个字节

4.下列程序执行后的输出结果是(   )。

#include

main()

{ char arr[2][4];

  strcpy(arr,"you"); strcpy(arr[1],"me");

  arr[0][3]=’&’;

  printf("%s \\n",arr);

}

A) you&me     B) you     C) me     D) err

5.执行下列程序时输入:123<空格>456<空格>7<回车>,输出结果是(   )。

main()

{ char s[100];

  int c, i;

  scanf("%c", &c);

  scanf("%d", &i);

  scanf("%s", s);

  printf("%c, %d, %s\\n", c, i, s);

}

A) 123,456,7       B) 1,456,7

C) 1,23,456,7       D) 1,23,456

6.假定int类型变量占用两个字节,若有定义:int x[10]={0,2,4}; 则数组x在内存中所占字节数是(   )。

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

7.以下程序的输出结果是(   )。

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

8.以下数组定义中不正确的是(   )。

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

9.以下程序的输出结果是(   )。

main()

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

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

}

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

10.以下程序的输出结果是(   )。

#include

main()

{char st[20]="hello\\0\\\\\\\";

 printf(%d %d\\n", strlen(st),sizeof(st));

}

A) 9  9     B) 5  20     C) 9  20     D) 20  20

11.以下程序的输出结果是(   )。

main()

{int i,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) 20     B) 21     C) 22     D) 23

12.以下程序的输出结果是(   )。

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

}

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

13.以下程序的输出结果是(   )。

main()

{int a[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\\n", s);

}

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

14.以下程序的输出结果是(   )。

main()

{char w[ ][10]={"ABCD

for(k=1;k<3;k++) printf("%s\\n",w[k]);

}

A) ABCD     B) ABCD     C) EFG     D) EFGH

   FGH              EFG              JK              IJKL

   KL               IJ               O

   M

15.当执行下面的程序时,如果输入ABC,则输出结果是(   )。

#include

#include

main()

{char ss[10]="12345";

 gets(ss);strcat(ss,"67");printf("%s\\n", ss);

}

A) ABC67     B) ABC67     C) 12345ABC6     D) ABC4567

16.若要定义c为2×3×4的三维数组,正确的定义语句是(   )。

A) float c[2][3][4]     B) float c[2,3,4]

C) float c(2,3,4)      D) float c(2)(3)(4)

17.若定义int a[2][2]={1,2,3,4},则a数组的各数组元素值分别为(   )。

A) a[0][0]=1,a[0][1]=2,a[1][0]=3,a[1][1]=4

B) a[0][0]=1,a[0][1]=3,a[1][0]=2,a[1][1]=4

C) a[0][0]=4,a[0][1]=3,a[1][0]=2,a[1][1]=1

D) a[0][0]=4,a[0][1]=2,a[1][0]=3,a[1][1]=1

18.在下列叙述中,正确的一条是(   )。

A) 以下语句是正确的:char c[]=”ab”;

B) 一维数组的定义可采用下列格式:int a(10);

C) 下面的语句定义了一个二维数组:float a[3,4];

D) 以下两个语句中的a[3][4]的含义相同:int a[3][4]; a[3][4]=1;

19.当输入的数据为2、5时,以下程序的输出结果是(   )。

#include

main()

{int f[100],i,j,k,m;

 scanf(“%d%d”,&k,&m);

for(i=0;i<=m;i++) f[i]=0;

 f[k-1]=1;

for(i=k;i<=m;i++)

for(j=i-k;j<=i-1;j++) f[i]+=f[j];

 printf(“%d%10d%10d\\n”,k,m,f[m]);

}

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

20.在下列语句中,正确的是(   )。

A) char str[]=”China”;

B) char str[];str=”China”;

C) char str1[5],str2[]={”China”};str1=str2;

D) char str1[],str2[];str2={”China”};strcpy(str1,str2);

21.下面语句中不正确的是(   )。

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

C) int a[]={0,0,0,0,0};     D) int a[5]={0*5};

22.若先后输入4、1、5、3、7,以下程序的输出结果为(   )。

#define MAX 100

main()

{

 int i,j,n,flag,t,a[MAX];

 printf(“输入数据个数:”);

 scanf(“%d\\n”,&n);

for(i=1;i<=n;i++) scanf(“%d”,&a[i]);

for(i=1;i {flag=1;

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

if(a[j]>a[j+1])

    {flag=0;

     t=a[j];

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

     a[j+1]=t;

    }

   if(flag) break;

 }

for(i=1;i<=n;i++) printf(“%-3d”,a[i]);

 printf(“\\n”);

}

A) 2  4  6  7     B) 1  2  3  4

C) 1  5  4  7     D) 1  3  5  7

23.以下程序的输出结果是(   )。

main()

{int n,a[10];

for(n=0;n<=9;n++)

  a[n]=n;

for(n=9;n>=0;n--)

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

}

A) 1 2 3 4 5 6 7 8 9 10     B) 9 8 7 6 5 4 3 2 1 0

C) 10 9 8 7 6 5 4 3 2 1     D) 0 1 2 3 4 5 6 7 8 9

24.若输入aefjhi、c、adfjhijk,以下程序的输出结果为(   )。

#include

#include

main()

{int i;

 char string[20],str[3][20];

for(i=0;i<3;i++) gets(str[i]);

if(strcmp(str[0],str[1])>0) strcpy(string,str[0]);

 else strcpy(string,str[1]);

if(strcmp(str[2],string)>0) strcpy(string,str[2]);

 printf(“The largest string is\\n%s\\n”,string);

}

A) adfjhi     B) c     C) aefjhijk     D) aefjhi

25.以下程序的输出结果是(   )。

#include

#include

main()

{char str[12]={’s’,’t’,’r’,’i’,’n’,’g’};

 printf(“%d\\n”,strlen(str));

}

A) 6     B) 7     C) 11     D) 12

26.有以下程序:

#include

#define  N  6

main()

{char c[N];

 int i=0;

for(;ifor(i=0;i}

输入以下三行,每行输入都是在第一列上开始,代表一个回车符:

a

b

cdef

程序的输出结果是(   )。

A) abcdef     B) a     C) a     D) a

b             b            b

                    c             cd           d

                    d                          cdef

                    e

                    f

27.设有:char str[ ]=“Beijing”; 则执行:printf(“%d\\n”, strlen(strcpy(str, “China”)));后输出的结果为(   )。

A) 5        B) 7     C) 12     D) 14

28.请选出以下程序的输出结果(   )。

#include

main()

{char s1[10],s2[10],s3[10],s4[10];

 scanf(“%s%s”,s1,s2);gets(s3);gets(s4);

 puts(s1);puts(s2);puts(s3);puts(s4);

}

输入数据如下:(此处代表回车符)

aaaa bbbb

cccc dddd

A) aaaa     B) aaaa     C) aaaa     D) aaaa bbbb

  bbbb            bbbb            bbbb             cccc

                  cccc             cccc dddd        dddd

  cccc dddd        dddd            eeee

29.请读程序:

main()

{int n[2],i,j,k;

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

 k=2;

for(i=0;ifor(j=0;j printf(“%d\\n”,n[k]);

}

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

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

30.请读程序片段(字符串内没有空格字符):printf(“%d\\n”,strlen(“ATS\\n012\\1\\\\”));其输出结果应为(   )。

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

31.下述对C语言字符数组的描述中错误的是(   )。

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

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

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

D) 不可以用关系运算符对字符数组中的字符串进行比较

32.阅读下列程序:

main()

{int n[3],i,j,k;

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

  n[i]=0;

 k=2;

for(i=0;ifor(j=0;j   n[j]=n[i]+1;

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

}

上述程序运行后,输出的结果是(   )。

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

33.以下程序的输出结果是(   )。

main()

{int n[3][3], i, j;

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

for(j=0;j<3;j++) 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) 14     B) 0     C) 6     D) 值不确定

34.以下语句的输出结果为(   )。

printf(“%d\\n”, strlen(“\\\”\\065\\xff\\n”));

A) 5     B) 14     C) 8     D) 输出项不合法,无正常输出

35.合法的数组定义是(   )。

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

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

36.以下程序的输出结果是(   )。

main()

{char w[ ][10]={"ABCD

for(k=1;k<3;k++) printf("%s\\n", &w[k][k]);

}

A) ABCD     B) ABCD     C) EFG     D) FGH

   FGH              EFG              JK              KL

   KL               IJ               O

   M

37.函数调用strcat( strcpy(str1,str2), str3 )的功能是(   )。

A) 将串str1复制到串str2中后再连接到串str3之后

B) 将串str1连接到串str2之后再复制到串str3之后

C) 将串str2复制到串str1中后再将串str3连接到串str1之后

D) 将串str2连接到串str1之后再将串str1复制到串str3之后

38.有以下定义:

char x[ ]=“abcdefg”;

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

则正确的叙述为(   )。

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

C) 数组x的长度大于数组y的长度     D) 数组x的长度小余数组y的长度

39.下面程序的运行结果是(   )。

main()

{char ch[7]={"65ab21"};

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

}

A) 12ba56     B) 6521     C) 6     D) 62

40.以下程序运行后,输出结果是(   )。

main()

{int y=18, i=0, j, a[8];

 do

 {a[i]=y%2; i++;

  y=y/2;

}while(y>=1);

for(j=i-1;j>=0;j--) printf("%d", a[j]);

printf(“\\n”);

}

A) 10000     B) 10010     C) 00110     D) 10100

41.以下程序的输出结果是(   )。

main()

{int n[5]={0,0,0}, i, k=2;

for(i=0; i printf("%d\\n", n[k]);

}

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

42.若有定义和语句:char s[10];s=”abcd”;printf(“%s\\n”,s);则输出结果是(   )。

A) abcd     B) a     C) abc     D) 编译通不过

二   填空题

1.下面程序的功能是:将字符数组a中下标值为偶数的元素从小到大排列,其它元素不变。请填空。

#include

#include

main()

{char a[ ]="clanguage", t;

 int i, j, k;

 k=strlen(a);

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

for(j=i+2; j if(          )

 { t=a[i]; a[i]=a[j]; a[j]=t; }

 puts(a);

 printf("\\n");

}

2.若有定义语句:char s[100],d[100]; int j=0, i=0;,且s中已赋字符串,请填空以实现字符串拷贝。(注:不得使用逗号表达式)

while(s[i]){ d[j]=     ;j++;}

d[j]=0;

3.下列程序段的输出结果是         。

main()

{ char b[]="Hello,you";

b[5]=0;

printf("%s\\n", b);

}

4.若想通过以下输入语句使a中存放字符串1234,b中存放字符5,则输入数据的形式应该是             。

char a[10], b;

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

5.以下程序可以把从键盘上输入的十进制数(long型)以二到十六进制数的形式输出,请填空。

main()

{int b[16]={‘0’, ‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’, ‘9’, ‘A’, ‘B’, ‘C’, ‘D’, ‘E’, ‘F’};

 int c[], d, i=0, base;

 long n;

 printf(“Enter a number:\\n”); scanf(“%ld”, &n);

 printf(“Enter new base:\\n”); scanf(“%d”, &base);

 do

 {c[i]=         ; 

  i++;

  n=n/base;

 }while(n!=0);

 printf(“Transmite new base:\\n”);

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

 {d=c[i]; 

  printf("%c", b      );

 }

}

6.以下程序用来对从键盘上输入的两个字符串进行比较,然后输出两个字符串中的第一个不相同字符的ASCII码之差。例如:输入的两个字符串分别为abcdefg和abceef,则输出为-1。请填空。

main()

{char str1[100], str2[100], c;

 int i, s;

 printf(“\\n Input string 1:\\n”); gets(str1);

 printf(“\\n Input string 2:\\n”); gets(str2);

 i=0;

 while((str1[i]= =str2[i])&&(str1[i]!=           ))

  i++;

 s=            ;

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

}

7.以下语句的输出结果是           。

printf(“%d\\n”, strlen(“\\\”\\085\\xff\\n”));

8.对数组中的元素值进行排序:

main()

{int a[ ]={2,4,15,3,17,5,8,23,9,7,11,13}, i, j, k;

 for(k=0;k<12;k++)

for(i=k;i<12;i++)

if(a[i]>        )

  {j=a[i];

   a[i]=           ;

              =j;

  }

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

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

}

9.由25人围坐成圆圈,先从任意一人出发用1到25顺时针依次编号,然后从1号开始顺时针报数(1、2、3、……),凡报5的倍数者出圈,剩下者继续报数,求出最后出圈者的编号。

          

{int a[26], j, n, count;

for(j=1;j<=25;j++) a[j]=j;

 j=1;count=0;n=        ;

 do

 {if(a[j]!=0)

   {n++;

    if(n%5= =0)

     {            ;

      if(count= =24) printf(“%d\\n”, j);

      count++;

     }

   }

  j++;

if(j>25) j=1;

 }

 while(           );

}

10.阅读下列程序:

main()

{int i, j, row, column, m;

 int array[3][3]={{100, 200, 300}, {28, 72, -30}, {-850, 2, 6}};

 m=array[0][0];

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

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

if(array[i][j]   {m=array[i][j]; row=i; column=j;}

 printf("%d, %d, %d\\n", m, row, column);

}

上述程序的输出结果是                    。

11.以下程序的功能是:从键盘上输入若干个学生的成绩,计算出平均成绩,并输出低于平均分的学生成绩,用输入负数结束输入。请填空。

main()

{float x[1000], sum=0.0, ave, a;

 int i, n=0;

 printf(“Enter mark:\\n”); scanf(“%f”, &a);

while(a>=0.0&&n<1000)

 {sum+=        ; x[n]=         ; n++; scanf(“%f”, &a);}

 ave=            ;

 printf(“Output:\\n”);

 printf(“ave=%f\\n”, ave);

for(i=0;i  if(            ) printf(“%f\\n”, x[i]);

}下载本文

显示全文
专题