第06章 数组补充练习题

  • 格式:doc
  • 大小:159.50 KB
  • 文档页数:25

第06章数组补充练习题一、选择题1、设有数组定义int a[10];则下列各组赋值语句中,不正确的是。

A、a[10]=0;B、for(int i=0;i<10;i++)a[i]=i;C、a[5]=’a’;D、a={0,1,2,3,4,5,6,7,8,9};2、设有数组定义int a[2][2]={1,2,3,4},则元素a[1][1]的值为。

A、1B、2C、3D、43、下列语句中,不正确的是。

A、int a[2][3]={1,2,3};B、int a[2][3]={{1},{2,3}};C、int a[ ][3]={{1},{2,3}};D、int a[ ][ ]={{1},{2,3}};4、下列语句中,不正确的是。

A、int a[ ]={1,2};B、char a[4]={‘a’,’b’,’c’};C、int a[ ];D、char a[3]={‘a’,’b’,’c’};5、下列语句中,不正确的是。

A、char s1[ ]=”abc”;B、char s1[ ]={”abc”};C、char s1[4]={‘a’,’b’,’c’};D、char s1[3]=”abc”;6、下列数组的定义中,不正确的是。

A、#define N 5B、#define N 3int a[N]; int a[N+2] ;C、int n=5;int a[n];D、int a[‘a’];7、对于数组定义int a[5],n=2;则对数组a元素的正确引用是。

A、a[5]B、a[3.5]C、a(3)D、a[n+1]8、对于以下各组语句:(1)char str1[ ]=”This is a string!”;(2)char str1[12];str1=”This is a string!”;(3)char str1[12];strcpy(str1, ”This is a string!”);(4)char str1[ ]={”This is a string!”};则下列说法正确的是。

A、只有(1)、(3)、(4)正确B、只有(1)、(3)正确C、只有(3)、(4)正确D、只有(1)、(2)正确9、对于以函数原形为void fun(int a[5],int n)的函数,若有变量说明int b[10];则下列函数调用出现语法错误的是。

A、fun(b,b[0])B、fun(b,5)C、fun(&b[0],10)D、fun(b[0],5)10、下列说法中错误的是。

A、一个数组中只允许存储相同类型的数据;B、数组名其实是数组在内存中的起始地址;C、当数组名作为参数被传递给某个函数时,原数组中的元素的值可能被修改;D、在C++中,编译程序将严格检查程序中数组的下标是否越界。

11、下列定义的各字符串中,的输出可能会出现异常现象。

A、char str1[ ]=”abc’;B、char str2[10]={‘a’,’b’,’c’};C、char str3[3]={‘a’,’b’,’c’};D、char str4[4]={97,98,99,0};12、在C++中,一维数组的定义格式为:类型说明符数组名。

A [常量表达式]B [整型表达式]C [整型常量]或[整型表达式]D [整型常量]13、以下一维数组a定义,正确的为。

A int a(10);B int n=10,a[n];C int n;cin>>n;int a[n];D #define SIZE 10int a[SIZE]14、以下对一维数组a进行初始化,正确的为。

A int a[6]=(0,1,2,3,4,5);B int a[10]={ };C int a[]={0};D int a[5]={0,1,2,3,4,5};15、以下对二维数组a进行初始化,正确的为。

A int a[2][3]={{0,1},{2,3},{4,5}};B int a[][3]={0,1,2,3,4,5};C int a[2][]={0,1,2,3,4,5};D int a[2][]={{0,1,2},{3,4,5}};16、若有说明:int a[][3]={1,2,3,4,5,6,7};则a数组第一维的大小为。

A 2B 3C 4D 无确定值17、设有定义int a[][3]={1,2,3,4,5};下面关于数组a的描述,正确的为。

A a为一维数组,含有5个元素B a为二维数组,含有5个元素C a为2行3列二维数组D 这种定义方式,无法确定行数和列数18、若有说明int a[3][4]={0};则下面叙述正确的为。

A 只有元素a[0][0]可得到初值0;B 此说明语句不正确C 数组a中各元素都可得到初值,但其值不一定为0D 数组a中每个元素均可得到初值019、若把数组a定义为全局变量或静态变量,则数组a中各元素。

A 可在程序运行阶段得到初值0B 可在程序的编译阶段得到初值0C 得不到确定的初值D 可在程序编译或运行阶段得到初值020、设有说明int a[][4]={{1},{3,2},{4,5,6},{0}};则a[3][3]的值为。

A 0B 5C 6D 221、以下对C++字符数组的描述错误的为。

A 字符数组可以存放字符串B 字符数组的字符串可以整体输入和输出C 可以在赋值语句中通过赋值符“=”对字符数组整体赋值D 不可以用关系运算符对字符数组中的字符串进行比较22、以下描述正确的为。

A 两个字符所包含的字符个数相同时,才能比较字符串B 字符个数多的字符串比字符个数少的字符串大C 字符串“STOP ”与“STOP”相等D 字符串“That”小于字符串“THe”23、以下程序段的执行结果为。

char c[]={‘a’,’b’,’\0’,’c’,’\0’};cout<<c<<endl;A ab0c0B abC ab cD abc24、在C++中,以下叙述不正确的为。

A 在输入字符串时,遇到空格字符或换行字符,认为一个字符串结束,接着的非空格字符作为一个新的字符串开始B 一个字符数组中的字符作为字符串输出时,遇到字符’\0’时认为字符串结束C 把一维字符数组作为字符串输入输出,在cin和cout中只需给出数组名D 用cin可以接收输入的任何字符串25、若二维数组a有m列,则计算任一元素a[I][j]在数组中位置的公式为。

(假设a[0][0]位于数组的第一个位置上)A I*m+jB j*m+IC I*m+j-1D I*m+j+126.对以下说明语句的正确理解为。

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 因为数组长度与初值的个数不相同,所以此语句不正确27.以下不正确的定义语句为。

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’}28.若二维数组a有m列,则在a[I][j]前的元素个数为。

A j*m+IB I*m+j-1C I*m+jD I*m+j+129.定义如下变量和数组:int k;int a[3][3]={1,2,3,4,5,6,7,8,9};则下面语句的输出结果为。

for(k=0;k<3;k++)cout<<a[k][2-k];A 3 5 7B 3 6 9C 1 5 9D 1 4 730.若有以下程序:#include <iostream.h>void main(){int a[]={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;}for(i=0;i<5;i++)cout<<a[i]<<'\t';cout<<'\n';}则该程序段的功能为。

A 对数组a进行插入排序(升序)B 对数组a进行插入排序(降序)C 对数组a进行选择排序(升序)D 对数组a进行选择排序(降序)31.下面程序的运行结果为。

#include <iostream.h>void main(){int a[6];for(int i=0;i<6;i++){a[i]=9*(i-2+4*(i>3))%5;cout<<'\n';}A -3-40404B -3-40403C -3-40443D -3-4044032.对两个数组a和b进行如下初始化char a[]=”ABCDEF”;char b[]={‘A’,’B’,’C’,’D’,’E’,’F’};则以下叙述正确的为。

A a和b数组完全相同B a和b长度相同C a和b是都存放字符串D a数组比b数组长度长33.下面程序段的运行结果为。

#include <iostream.h>#include <string.h>void main(){char a[7]="abcdef";char b[4]="ABC";strcpy(a,b);cout<<a[5];cout<<endl;}A __B \0C eD f(其中__表示空格)34.下面程序段的运行结果为。

char c[]=”\t\v\\\0will\n”cout<<strlen(c);A 14B 3C 9D 字符串中有非法字符,输出值不确定35.判断字符串a和b是否相等,应当使用。

A if(a==b)B if(a=b)C if(strcpy(a,b))D if(strcmp(a,b))36.判断字符串s1是否大于字符串s2,应当使用。

A if(strcmp(s1,s2)>0)B if(strcmp(s1,s2)C if(strcmp(s2,s1)>0)D if(s1>s2)37.有已排好序的字符串a,下面的程序是将字符串s中的每个字符按升序的规律插入到a中,请选择填空。

#include <iostream.h>#include <string.h>void main(){char a[20]="cehiknqtw";char s[]="fbla";int i,k,j;for(k=0;s[k]!='\0';k++){j=0;while(s[k]>=a[j]&&a[j]!='\0')j++;for( 【1】 )【2】 ;cout<<a;cout<<endl;}【1】 A I=strlen(a);I>j;I- - B I=strlen(a);I>=j;I- -C I=j;I<=strlen(a)+k;I++D I=j;I<strlen(a);I++【2】 A a[I]=a[I+1] B a[I+1]=a[I]C a[I]=a[I-1]D a[I-1]=a[I]38.下面程序的功能是将已按升序排好的两个字符串a和b中的字符串按升序归并到字符串c中,请选择填空#include <iostream.h>#include <string.h>void main(){char a[]="acegikm";char b[]="bdfghjlnpq";char c[80],*p;int i=0,j=0,k=0;while(a[i]!='\0'&&b[j]!='\0'){if(a[i]<b[j]){【1】 }else{【2】 }k++;}c[k]='\0';if( 【3】 )p=b+j;else p=a+i;strcat(c,p);cout<<c<<endl;}【1】 A c[k]=a[i];i++; B c[k]=a[j];i++;C c[k]=a[i];j++D c[k]=a[j];j++;【2】 A c[k]=b[i];I++; B c[k]=b[j];i++;C c[k]=b[i];j++D c[k]=b[j];j++;【3】 A a[i]= =’\0’ B a[i]!=’\0’C a[i-1]= =’\0’D a[i-1]!=’\0’39.下面程序的功能是将字符串s中所有的字符c删除,请选择填空#include <iostream.h>#include <string.h>void main(){char s[80];int i,j;cin.getline(s,20);for(i=j=0;s[i]!='\0';i++)if(s[i]!='c') 【1】 ;s[j]='\0';cout<<s<<endl;}【1】A s[j++]=s[i] B s[++j]=s[i] C s[j]=s[i];j++; D s[j]=s[i] 40.下面程序的功能是从键盘输入一行字符,统计其中有多少个单词,单词之间用空格分隔,请选择填空#include <iostream.h>void main(){char s[80],c1,c2=' ';int i=0,num=0;cin.getline(s,30);while(s[i]!='\0'){c1=s[i];if(i==0)c2=' ';else c2=s[i-1];if( 【1】 )num++;i++;}cout<<"There are "<<num<<" words."<<endl;}【1】A c1= =’’&&c2= =’’ B c1!=’’&&c2= =’’C c1= =’’&&c2! =’’D c1! =’’&&c2! =’’41.口袋中有红、黄、蓝、白、黑色彩球各一个,任意从中取出3个,问:可以有多少种不同(顺序不限)的取法。