当前所在位置:珠峰网资料 >> 计算机 >> 计算机等级考试 >> 正文
2015年计算机等级二级C语言章节习题及答案(6)
发布时间:2010/11/7 23:35:27 来源:城市学习网 编辑:ziteng
  第7章 数组
  一、选择题(在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项填涂在答题卡相应位置上。)
  7.1 若有说明 int a[3][4];则a数组元素的非法引用是
  A)a[0][2*1]
  B)a[1][3]
  C)a[4-2][0]
  D)a[0][4]
  正确答案:D
  7.2 在C语言中,引用数组元素时,其数组下标的数据类型允许是
  A)整型常量
  B)整型表达式
  C)整型常量或整型表达式
  D)任何类型的表达式
  正确答案:C
  7.3 执行下面的程序段后,变量k中的值为
  int k=3, s[2];
  s[0]=k; k=s[1]*10;
  A)不定值
  B)33
  C)30
  D)10
  正确答案:A
  7.4 定义如下变量和数组:
  int k;
  int a[3][3]={9,8,7,6,5,4,3,2,1};
  则下面语句的输出结果是
  for(k=0;k<3;k++)printf("%d",a[k][k]);
  A)7 5 3
  B)9 5 1
  C)9 6 3
  D)7 4 1
  正确答案:B
  7.5 下列程序执行后的输出结果是
  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
  正确答案:A
  7.6 设有数组定义: char array[]="China"; 则数组 array所占的空间为
  A)4个字节
  B)5个字节
  C)6个字节
  D)7个字节
  正确答案:C
  7.7 以下不正确的定义语句是
  A)double x[5]={2.0,4.0,6.0,8.0,10.0};
  B)int y[5]={0,1,3,5,7,9};
  C)char c1[]={′1′,′2′,′3′,′4′,′5′};
  D)char c2[]={′\x10′,′\xa′,′\x8′};
  正确答案:B
  7.8 若有说明:int a[][3]={1,2,3,4,5,6,7};则a数组第一维的大小是
  A)2
  B)3
  C)4
  D)无确定值
  正确答案:B
  7.9 对以下说明语句的正确理解是
  int a[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)因为数组长度与初值的个数不相同,所以此语句不正确
  正确答案:B
  7.10 若有说明:int a[][4]={0,0};则下面不正确的叙述是
  A)数组a的每个元素都可得到初值0
  B)二维数组a的第一维大小为1
  C)当初值的个数能被第二维的常量表达式的值除尽时,所得商数就是第一维的大小
  D)只有元素a[0][0]和a[0][1]可得到初值,其余元素均得不到确定的初值
  正确答案:D
  7.11 有以下程序
  main()
  { char a[]={ ′a′, ′b′, ′c′,′d′, ′e′, ′f′, ′g′,′h′,′\0′};
  int i,j;
  i=sizeof(a);
  j=strlen(a);
  printf("%d,%d\b",i,j);
  }
  程序运行后的输出结果是
  A)9,9
  B)8,9
  C)1,8
  D)9,8
  正确答案:D
  7.12 假定int类型变量占用两个字节,其有定义:int x[10]={0,2,4};,则数组x在内存中所占字节数是
  A)3
  B)6
  C)10
  D)20
  正确答案:D
  7.13 以下能对二维数组c进行正确的初始化的语句是
  A)int c[3][]={{3},{3},{4}};
  B)int c[][3]={{3},{3},{4}};
  C)int c[3][2]={{3},{3},{4},{5}};
  D)int c[][3]={{3},{},{3}};
  正确答案:B
  7.14 在C语言中,一维数组的定义方法为
  类型说明符 数组名
  A)[常量表达式]
  B)[整型常量]
  C)[整型变量]
  D)[整型常量]或[整型表达式]
  正确答案:A
  7.15 若二维数组a有m列,则计算任一元素a[i][j]在数组中相对位置的公式为 (假设a[0][0]位于数组的第一个位置上)
  A)i*m+j
  B)j*m+I
  C)i*m+j-1
  D)i*m+j+1
  正确答案:A
  7.16 下面程序输出的结果是
  main()
  { int i;
  int a[3][3]={1,2,3,4,5,6,7,8,9};
  for(i=0;i<3;i++)
  printf("%d ",a[2-i][i]);
  }
  A)1 5 9
  B)7 5 3
  C)3 5 7
  D)5 9 1
  正确答案:B
  7.17 以下不能对二维数组a进行正确初始化的语句是
  A)int a[2][3]={0};
  B)int a[][3]={{1,2},{0}};
  C)int a[2][3]={{1,2},{3,4},{5,6}};
  D)int a[][3]={1,2,3,4,5,6};
  正确答案:C
  7.18 阅读下面程序,则程序段的功能是
  #include "stdio.h"
  main()
  { int c[]={23,1,56,234,7,0,34},i,j,t;
  for(i=1;i<7;i++)
  { t=c[i];j=i-1;
  while(j>=0 && t>c[j])
  {c[j+1]=c[j];j--;}
  c[j+1]=t;
  }
  for(i=0;i<7;i++)
  printf("%d ",c[i]);
  putchar(′\n′);
  }
  A)对数组元素的升序排列
  B)对数组元素的降序排列
  C)对数组元素的倒序排列
  D)对数组元素的随机排列
  正确答案:B
  7.19 下列选项中错误的说明语句是
  A)char a[]={′t′,′o′,′y′,′o′,′u′,′\0′};
  B)char a[]={"toyou\0"};
  C)char a[]="toyou\0";
  D)char a[]=′toyou\0′;
  正确答案:D
  7.20 下述对C语言字符数组的描述中错误的是
  A)字符数组的下标从0开始
  B)字符数组中的字符串可以进行整体输入/输出
  C)可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值
  D)字符数组可以存放字符串
  正确答案:C [NextPage]   7.21 阅读下列程序,则在执行后,程序的运行结果为
  #include "stdio.h"
  #include "string.h"
  main()
  { char a[30]="nice to meet you!";
  strcpy(a+strlen(a)/2,"you");
  printf("%s\n",a);
  }
  A)nice to meet you you
  B)nice to
  C)meet you you
  D)nice to you
  正确答案:D
  7.22 现有如下程序段
  #include "stdio.h"
  main()
  { int k[30]={12,324,45,6,768,98,21,34,453,456};
  int count=0,i=0;
  while(k[i])
  { if(k[i]%2==0‖k[i]%5==0)
  count++;
  i++;
  }
  printf("%d,%d\n",count,i);
  }
  则程序段的输出结果为
  A)7,8
  B)8,8
  C)7,10
  D)8,10
  正确答案:D
  7.23 有如下定义语句:int aa[][3]={12,23,34,4,5,6,78,89,45};,则45在数组aa中的行列坐标各为
  A)3,2
  B)3,1
  C)2,2
  D)2,1
  正确答案:C
  7.24 现在有如下程序
  #include "stdio.h"
  main()
  { char s[80];
  int i,j;
  gets(s);
  for(i=j=0;s[i]!=′\0′;i++)
  if(s[i]!=′H′______)
  s[j]=′\0′;
  puts(s);
  }
  这个程序段的功能是删除输入的字符串中字符′H′,则空线上应当添入的是
  A)s[j++]=s[i];j++;
  B)s[j]=s[i++];j++;
  C)s[j++]=s[i];
  D)s[j]=s[i];
  正确答案:C
  7.25 以下二维数组c的定义形式是
  A)int c[3][]
  B)float c[3,4]
  C)double c[3][4]
  D)float c(3)(4)
  正确答案:C
  7.26 已知:int c[3][4];则对数组元素引用正确的是
  A)c[1][4]
  B)c[1.5][0]
  C)c[1+0][0]
  D)以上表达都错误
  正确答案:C
  7.27 若有以下语句,则正确的描述是
  char a[]="toyou";
  char b[]={′t′,′o′,′y′,′o′,′u′};
  A)a数组和b数组的长度相同
  B)a数组长度小于b数组长度
  C)a数组长度大于b数组长度
  D)a数组等价于b数组
  正确答案:C
  7.28 已知:char a[15],b[15]={"I love china"};则在程序中能将字符串I love china赋给数组a的正确语句是
  A)a="I love china";
  B)strcpy(b,a);
  C)a=b;
  D)strcpy(a,b);
  正确答案:D
  7.29 已知:char a[20]= "abc",b[20]= "defghi";则执行下列语句后的输出结果为
  printf("%d",strlen(strcpy(a,b)));
  A)11
  B)6
  C)5
  D)以上答案都不正确
  正确答案:B
  7.30 阅读如下程序段,则程序在先后输入love和china后,输出结果是
  #include
  #include
  main()
  { char a[30],b[30];
  int k;
  gets(a);
  gets(b);
  k=strcmp(a,b);
  if(k>0) puts(a);
  else if(k<0) puts(b);
  }
  A)love
  B)china
  C)lovechina
  D)没有输出结果
  正确答案:A
 [NextPage]   二、填空题(请将每一个空的正确答案写在答题卡相应序号后。)
  7.31 下面程序的功能是输出数组s中最大元素的下标,请填空。
  main()
  { int k, p,s[]={1, -9, 7, 2, -10, 3};
  for(p =0, k =p; p< 6; p++)
  if(s[p]>s[k])【1】
  printf("%d\n", k);
  }
  正确答案:k=p;
  7.32 以下程序可把输入的十进制数以十六进制数的形式输出,请填空。
  main()
  { char b[17]={"0123456789ABCDEF"};
  int c[64],d,i=0,base=16;
  long n;
  printf("Enter a number:\n");scanf("%ld",&n);
  do
  { c[i]=【2】;
  i++;
  n=n/base;
  }while(n!=0);
  printf("Transmite new base:\n");
  for(--i;i>=0;--i)
  { d=c[i];
  printf("%c",b【3】);
  }
  printf("\n");
  }
  正确答案: nose [d]
  7.33 以下程序的功能是:删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。
  例如,若一维数组中的数据是:
  2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10
  删除后,数组中的内容应该是:
  2 3 4 5 6 7 8 9 10。
  请填空。
  #include
  #define N 80
  int fun(int a[], int n)
  { int i,j=1;
  for(i=1;iif(a[j-1]【4】a[i])
  a[j++]=a[i];
  【5】;
  }
  main()
  { int a[N]={ 2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10}, i, n=19;
  printf("The original data :\n");
  for(i=0; iprintf("=",a[i]);
  n=fun(a,n);
  printf("\nThe data after deleted :\n");
  for(i=0; iprintf("=",a[i]);
  printf("\n\n");
  }
  正确答案: != return j
  7.34 下列程序的输出的结果是 【6】 , 【7】 。
  main()
  { int i,j row,colum,m;
  static 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)
  { m=array[i][j];
  colum=j;
  row=i;
  }
  printf("%d,%d,%d\n",m,row,colum);
  }
  正确答案:-850,~2,0
  7.35 下面程序是求出数组arr的两条对角线上元素之和,请填空。
  #include "stdio.h"
  main()
  { int arr[3][3]={2,3,4,8,3,2,7,9,8},a=0,b=0,i,j;
  for(i=0;i<3;i++)
  for(j=0;j<3;j++)
  if( 【8】)
  a=a+arr[i][j];
  for(i=0;i<3;i++)
  for( 【9】 ;j>=0;j--)
  if( 【10】)
  b=b+ arr[i][j];
  printf("%d,%d\n",a,b);
  }
  正确答案:i==j j=2 i+j==2
广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved