C语言各章节单元测试题及答案数组Word格式文档下载.docx
- 文档编号:21884219
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:14
- 大小:21.18KB
C语言各章节单元测试题及答案数组Word格式文档下载.docx
《C语言各章节单元测试题及答案数组Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C语言各章节单元测试题及答案数组Word格式文档下载.docx(14页珍藏版)》请在冰豆网上搜索。
{
inta[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)0650B)1470C)5430D)输出值不定
本例仅仅考查二维数组的初始化。
此类型题目虽然简单,但却是常考题型。
由题意知本题要打印数组中的四个元素,稍微注意一下本题的打印格式。
A
【例4】有以下程序
main()
intp[7]={11,13,14,15,16,17,18},i=0,k=0;
while(i<
7&
&
p[i]%2){k=k+p[i];
i++;
}
%d\n"
k);
执行后输出结果是。
A)58B)56C)45D)24
本例考查一维数组的运算。
注意while的条件,要求p[i]%2为真,那么偶数都排除,只剩下11,13,15,17。
i=0,p[0]%2=11%2为真满足条件,执行k=k+p[i]=0+p[0]=11,i=i+1=1;
i=1且p[1]%2=13%2为真满足条件,执行k=k+p[i]=11+p[1]=11+13=24,i=i+1=2;
i=2不满足条件,循环不能执行,所以,最终循环仅执行2次,且k=24。
D
【例5】有以下程序
intm[][3]={1,4,7,2,5,8,3,6,9};
inti,j,k=2;
for(i=0;
i<
3;
i++)
%d"
m[k][i]);
执行后输出结果是_______。
A)456B)258C)369D)789
本例考查二维数组在for循环中的运算。
首先本题考查二维数组的定义,intm[][3]={1,4,7,2,5,8,3,6,9};
是一个3乘以3的矩阵。
再注意for的条件,要求i<
3,则循环进行三次应该输出三个数字。
打印的值为m[k][i],k=2,i的值由0~2,所以应该打印m[2][0],m[2][1],m[2][2]。
【例6】有以下程序
intaa[4][4]={{1,2,3,4},{5,6,7,8},{3,9,10,2},{4,2,9,6}};
inti,s=0;
4;
i++)s+=aa[i][1];
s);
程序运行后的输出结果是_______。
A)11B)19C)13D)20
本例同样考查二维数组在for循环中的运算。
首先本题考查二维数组的定义:
是一个4乘4的矩阵。
4,循环进行四次,s=aa[0][1]+aa[1][1]+aa[2][1]+aa[3][1]=2+6+9+2=19。
【例7】下面程序的输出结果是_______。
inti,k,a[10],p[3];
k=5;
10;
i++)a[i]=i;
i++)p[i]=a[i*(i+1)];
i++)k+=p[i]*2;
k);
A)20B)21C)22D)23
本例考查一维数组在for循环中的运算。
首先for在本题中虽然出现的次数很多,但是之间不是嵌套关系,而是按顺序执行。
本题要打印k的值,那么我们要找与k有关的线索。
k+=p[i]*2,而p[i]=a[i*(i+1)],再a[i]=i,所以,我们要从a[i]开始分析。
a[i]=i,for(i=0;
i++)循环执行10次,给数组赋值。
再p[i]=a[i*(i+1)],for(i=0;
i++)又给p[i]赋值,注意p[i]只有三个元素。
最后k是累加k=k+p[0]*2+p[1]*2+p[2]*2=k+a[0*(0+1)]*2+a[1*(1+1)]*2+a[2*(2+1)]*2=k+a[0]*2+a[2]*2+a[6]*2=0*2+2*2+6*2=5+16=21。
【例8】以下程序的输出结果是_______。
inta[3][3]={{1,2},{3,4},{5,6}},i,j,s=0;
for(i=1;
i++)
for(j=0;
j<
=i;
j++)s+=a[i][j];
A)18B)19C)20D)21
本例考查二维数组在for循环嵌套中的运算。
本题要打印出s的值,首先由题意得s+=a[i][j],那么肯定与数组有关,再来分析与哪些数组有关。
由for(i=1;
i++)得知i的值只为1,2,再由for(j=0;
j++)得知j的值只为0,1,2,所以s=a[1][0]+a[1][1]+a[2][0]+a[2][1]+a[2][2]=3+4+5+6=18。
本题看上去有点复杂,实际上是考查循环的知识,另外用到数组的初始化。
【例9】以下程序运行后,输出结果是_______。
inty=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--)
a[j]);
\n"
);
A)0000B)0010C)0110D)0100
本例考查一维数组在复杂循环结构中的运算。
由题意得定义数组并未初始化,do-while循环给数组赋值。
do{a[i]=y%2;
}所以a[0]=0,y=9;
a[1]=1,y=4;
a[2]=0,y=2;
a[3]=0,y=1,结束循环,a[i]={0,1,0,0}。
打印的不是a[i],而是a[j],所以,再来求a[j]。
由循环for(j=i-1;
j--)printf("
不难得到,a[j]={0,0,1,0}。
4.1.2填空题
【例1】以下程序的输出结果是。
/*对y除2取余,进行数制转化*/
=1);
j--)/*逆序输出*/
本例考查数组与do-while循环。
程序中的do-while循环采用除2取余的方法将十进制数y转化成等值的二进制数,并将系数顺序存放在数组a中,然后通过for循环将数组a逆序输出。
显然当y=18时,其等值的二进制数是10010。
10010
【例2】以下程序运行后的输出结果是。
inti,n[]={0,0,0,0,0};
=4;
n[i]=n[i-1]*2+1;
%d"
n[i]);
n[]是一维数组,有5个元素,for循环4次,所以结果应该有4个数。
i=1时,n[1]=n[0]*2+1=1;
i=2时,n[2]=n[2]*2+1=3;
……依次类推,n[3]=5;
n[4]=7。
13715
【例3】以下程序运行后的输出结果是。
inti,j,a[][3]={1,2,3,4,5,6,7,8,9};
for(j=i+1;
j++)a[j][i]=0;
j++)printf("
a[i][j]);
}
本例考查二维数组在for嵌套中的运算。
for循环嵌套改变数组某些值,下一个循环嵌套打印修改后的数组。
数组值这样改变:
当i=0,j循环两次,分别是j=1和j=2;
当i=1,j循环一次j=2,所以a[1][0]=0,a[2][0]=0,a[2][1]=0。
【例4】若有以下程序
inta[4][4]={{1,2,-3,-4},{0,-12,-13,14},{-21,23,0,-24},{-31,32,-33,0}};
inti,j,s=0;
for(i=0;
i<
i++)
for(j=0;
j<
j++)
if(a[i][j]<
0)continue;
if(a[i][j]==0)break;
s+=a[i][j];
s);
本题仍然考查continue和break的区别,当break和continue同时出现在循环中时,前者提前结束整个循环,后者则提前结束当前循环。
continue语句只能用在循环中,它的作用是跳过其后面的语句,直接将控制转移到下一轮循环条件的测试。
根据题意当a[i][j]<
0时或a[i][j]=0时,s不进行运算,只有当a[i][j]>
0,s+=a[i][j],所以,s=1+2+23+32=58。
58
【例5】以下程序的功能是:
从键盘上输入若干个学生的成绩,统计计算出平均成绩,并输出低于平均分的学生成绩,用输入负数结束输入。
请填空。
floatx[1000],sum=0.0,ave,a;
intn=0,i;
Entermark:
\n"
scanf("
%f"
&
a);
while(a>
0.0&
n<
1000)
sum=【1】;
x[n]=【2】;
n++;
scanf("
ave=【3】;
Output:
ave=%f\n"
ave);
n;
if(【4】)printf("
%f\n"
x[i]);
本例考查一维数组的综合应用。
碰到此类型题时,不要急于填空,先看清楚流程,这是做综合题必须的。
本题由三部分组成,数字输入、处理和输出。
用户随机输入的数据先放入变量a,输入数据的个数也是随机的,所以在循环while(a>
1000)处理时,需要条件:
分数值在一定的区间内;
而且我们控制用户输入的数据个数小于1000,这样可以控制循环何时结束。
变量sum用来求和,则sum+=a,x[n]的作用当然是存放数组,x[n]=a,到这里处理完用户输入的数据,并把所有数据放入数组,以备使用。
下一步求平均值,变量ave用来放置平均成绩,显然ave=sum/n,并打印出ave。
题目还有要求“输出低于平均分的学生成绩”,这时显然用到前面准备的数组,只要x[i]<
ave就满足条件输出。
全部完成。
【1】=a,【2】a,【3】sum/n,【4】x[i]<
ave
4.2自测练习与参考答案
4.2.1选择题
1.下面关于数组的描述正确的是______。
A)
数组的长度是固定的,数组元素的类型可以不同
B)
数组的长度是可变的,数组元素的类型必须不同
C)
数组的长度是固定的,数组元素的类型必须不同
D)
数组的长度是可变的,数组元素的类型可以不同
2.以下一维数组a的正确定义是______。
A)inta(10)B)intn=10,a[n];
C)intn;
D)#defineSIZE10
scanf(“%d”,&
n);
inta[SIZE]
inta[n];
3.以下数组定义中不正确的是_______。
A)inta[2][3];
B)intb[][3]={0,1,2,3};
C)intc[100][100]={0};
D)intd[3][]={{1,2},{1,2,3},{1,2,3,4}};
4.以下对二维数组a进行不正确初始化的是_______。
inta[][3]={3,2,1,1,2,3};
B)inta[][3]={{3,2,1},{1,2,3}};
C)inta[2][3]={{3,2,1},{1,2,3}};
D)inta[][]={{3,2,1},{1,2,3}};
5.若已定义:
inta[]={0,1,2,3,4,5,6,7,8,9},*p=a,i;
其中0≤i≤9,则对a数组元素不正确的引用上_______。
A)a[p-a]B)*(&
a[i])C)p[i]D)a[10]
6.执行下面的程序段后,变量k中的值为_______。
intk=3,s[2];
s[0]=k;
k=s[1]*10;
A)不定值B)33C)30D)10
7.假定int类型变量占用两个字节,其有定义:
intx[10]={0,2,4};
,则数组x在内存中所占字节数是_______。
A)3B)6C)10D)20
8.下列程序执行后的输出结果是_______。
chararr[2][4];
strcpy(arr,"
you"
strcpy(arr[1],"
me"
arr[0][3]='
'
;
%s\n"
arr);
A)you&
meB)youC)meD)err
9.有如下程序
intn[5]={0,0,0},i,k=2;
k;
n[k]);
该程序的输出结果是_______。
A)不确定的值B)2C)1D)0
10.以下程序的输出结果是_______。
inti,a[10];
for(i=9;
i>
i--)a[i]=10-i;
%d%d%d"
a[2],a[5],a[8]);
A)258B)741C)852D)369
11.有如下程序
12.以下程序的输出结果是_______。
inti,x[3][3]={1,2,3,4,5,6,7,8,9};
i++)printf("
%d,"
x[i][2-i]);
A)1,5,9,B)1,4,7,C)3,5,7,D)3,6,9,
14.有以下程序
inta[3][3],*p,i;
p=&
a[0][0];
9;
i++)p[i]=i+1;
%d\n"
a[1][2]);
A)3B)6C)9D)2
15.以下能正确定义数组并正确赋初值的语句是_______。
A)intN=5,b[N][N];
B)inta[1][2]={{1},{3}};
C)intc[2][]={{1,2},{3,4}};
D)intd[3][2]={{1,2},{34}};
16.请读程序:
#include<
stdio.h>
intn[2],i,j,k;
2;
i++)n[i]=0;
k=2;
j++)n[j]=n[j]+1;
上面程序的输出结果是_______。
A)不确定的值B)3C)2D)1
4.2.2填空题
1.以下程序的功能是:
从键盘输入若干学生的成绩,统计计算出平均成绩,并输出低于平均分的学生成绩,用输入负数结束输入。
=0.0&
sum+=【1】;
ave=【3】;
if(x[i]<
【4】)printf("
2.若已定义:
inta[10],i;
,以下fun函数的功能是:
在第一个循环中给前10个数组元素依次赋1、2、3、4、5、6、7、8、9、10;
在第二个循环中使a数组前10个元素中的值对称折叠,变成1、2、3、4、5、5、4、3、2、1。
fun(inta[])
inti;
=10;
i++)【1】=i;
5;
i++)【2】=a[i];
3.下列程序段的输出结果是。
intarr[]={30,25,20,15,10,5},*p=arr;
p++;
*(p+3));
4.若变量n中的值为24,则prnt函数共输出【1】行,最后一行有【2】个数。
voidprnt(intn,intaa[])
=n;
%6d"
aa[i]);
if(!
(i%5))printf("
5.函数YangHui的功能是把杨辉三角形的数据赋给二维数组的下半三角,形式如下
1
11
121
1331
14641
┆
其构成规律是:
(1)第0列元素和主对角线元素均为1
(2)其余元素为其左上方和正上方元素之和
(3)数据的个数每行递增1
请将程序补充完整。
#defineN6
voidYangHui(intx[N][N])
{inti,j;
x[0][0]=1;
N;
x[i][0]=【1】=1;
for(j=1;
i;
x[i][j]=【2】;
4.2.3参考答案
一、
选择题:
1.C2.D3.D4.D5.D
6.A7.D8.A9.D10.C
11.A12.C13.B14.D15.C
二、
填空题:
1.
【1】a,【2】a,【3】sum/n,【4】ave
2.
【1】a[i-1],【2】a[9-i]
3.
10
4.
【1】5,【2】4
5.
【1】x[i][i],【2】x[i-1][j-1]+x[i-1][j]或x[i-1][j]+x[i-1][j-1]
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 各章 单元测试 答案 数组