在C语言中 若定义二维数组a,2012年计算机等级二级C语言章节习题及答案(6)

第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来源:-计算机二级考试

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来源:-计算机二级考试

二、填空题(请将每一个空的正确答案写在答题卡相应序号后。)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");

}

正确答案: nºse [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;i

if(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; i

printf("=",a[i]);

n=fun(a,n);

printf("\nThe data after deleted :\n");

for(i=0; i

printf("=",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

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值