C语言练习3数组参考答案Word格式文档下载.docx
- 文档编号:19614509
- 上传时间:2023-01-08
- 格式:DOCX
- 页数:21
- 大小:32.20KB
C语言练习3数组参考答案Word格式文档下载.docx
《C语言练习3数组参考答案Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C语言练习3数组参考答案Word格式文档下载.docx(21页珍藏版)》请在冰豆网上搜索。
=n;
i++)r=r*b[i];
returnr;
{intx,a[]={2,3,4,5,6,7,8,9};
x=f(a,3);
printf("
x);
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]={'
1'
5'
6'
7'
8'
9'
指出以下错误语句(AB).
A)scanf("
%c"
a[0]);
B)scanf("
%s"
&
a);
C)printf("
a[3]);
D)printf("
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.请读程序:
{intn[2],i,j,k;
2;
i++)n[i]=0;
k=2;
j++)n[j]=n[i]+1;
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['
-c]
13.设有数组定义:
inta[5];
则下列给数组元素赋值错误的是(B).
A)a[3]=93;
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++)
for(j=0;
3;
j++)
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).
i++)printf("
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).
{inta[3][3]={{1,2},{3,4},{5,6}},i,j,s=0;
for(i=1;
=i;
s+=a[i][j];
s);
A)18B)19C)20D)21
28.若已有charb[10][50];
则该二维字符数组在内存所占字节数为(D).
A)10B)50C)60D)500
29.设有:
chara[10];
下列语句那个是正确的(D)?
a[0])
a)
30.阅读程序:
{chara[10];
inti;
for(i=1;
=5;
scanf("
a[i]);
设从键盘输入字符串:
abcde,则程序的输出结果是(C).
A)aB)空格C)不确定D)0
31.合法的数组定义是(D).
A)inta[]="
B)inta[5]={0,1,2,3,4,5};
C)chara="
D)chara[]={'
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]={'
B)chara[10]={'
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<
string.h>
。
如果调用了gets函数,则需要预处理命令#include<
stdio.h>
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<
j++)
a[i][j]=(i/j)*(j/i);
i++){
printf(“%2d”,a[i][j]);
printf(“\n”);
运行结果:
2.写出下面程序的运行结果。
{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↙,则写出下面程序的运行结果。
{chars[80];
gets(s);
while(s[i]!
if(s[i]<
=’z’&
s[i]>
=’a’)
s[i]=’z’+’a’-s[i];
puts(s);
AzyD
4.写出下面程序的运行结果。
{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;
=1;
i++)puts(s[i]);
注:
s数组中每个字符的ASCII值为:
5.当运行下面程序时,从键盘上输入748915↙,则写出下面程序的运行结果。
{inta[6],i,j,k,m;
for(i=0;
scanf(“%d”,&
for(i=5;
=0;
k=a[5];
for(j=4;
j>
j--)
a[j+1]=a[j];
a[0]=k;
for(m=0;
m<
m++)
printf(“%d”,a[m]);
四.程序填空题
1.下面程序可求出矩阵a的主对角线上的元素之和,请填
(2)空使程序完整。
{inta[3][3]={1,3,5,7,9,11,13,15,17},sum=0,i,j;
3;
for(j=0;
if(【i==j】)
sum=sum+【a[i][j]】;
printf(“sum=%d”,sum);
2.下面程序将十进制整数n转换成base进制,请填(3)空使程序完整。
{inti,base,n,j,num[20];
scanf(“%d”,&
n);
base);
do{
num[i]=【n%base】;
n=【n/base】;
}while(n!
=0);
for(【j=i;
j>
0;
j--】)
printf(“%d”,num[j]);
3.下面程序的功能是输入10个数,找出最大值和最小值所在的位置,并把两者对调,然后输出调整后的10个数,请填(3)空使程序完整。
{inta[10],max,min,i,j,k;
10;
max=min=a[0];
if(a[i]<
min){min=a[i];
【j=i】;
max){max=a[i];
【k=i】;
【max=a[j];
a[j]=a[k];
a[k]=max;
】
printf(“%d”,a[i]);
4.下面程序的功能是在一个字符串中查找一个指定的字符,若字符串中包含该字符则输出该字符在字符串中第一次出现的位置(下标值),否则输出-1,请填
(2)空使程序完整。
#include<
{charc=’a’;
/*需要查找的字符*/
chart[50];
inti,j,k;
gets(t);
i=【strlen(t)】;
for(k=0;
k<
i;
k++)
if(【t[k]==c】)
{j=k;
break;
elsej=-1;
printf(“%d”,j);
5.下面程序用“顺序查找法”查找数组a中是否存在某一关键字,请填
(2)空使程序完整。
{inta[10]={25,57,48,371,123,291,18,22,44};
inti=0,x;
x);
【a[10]=x】;
=x)i++;
if(【i<
10】)printf(“found=%d\n”,i);
elseprintf(“can\’tfound!
\n”);
6.以下程序是将字符串b的内容连接字符数组a的内容后面,形成新字符串a,请填
(2)空使程序完整。
{chara[40]=”Great”,b[]=”Wall”;
inti=0,j=0;
=’\0’)i++;
while(【b[j]!
='
\0'
】){
a[i]=b[j];
i++;
j++;
【a[i]='
】;
printf(“%s\n”,a);
五、编程题
[1]输入一行数字字符,请用数组元素作为计数器来统计每个数字字符的个数。
用下标为0元素统计字符“0”的个数,下标为1的元素统计字符“1”的个数,...。
#include<
#defineN80
voidmain()
{
charchs[N];
inti,count[10];
Inputastring:
"
);
chs);
i++)count[i]=0;
N;
{
count[chs[i]-'
]++;
if(count[i])printf("
%dcounts:
i,count[i]);
[2]编写程序求任意方阵每行、每列、两对角线元素之和。
#defineN5
#defineM5
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;
//存放两对角线的和
inti=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 练习 数组 参考答案