c语言第七章数组课后练习题答案.docx
- 文档编号:15168311
- 上传时间:2023-07-02
- 格式:DOCX
- 页数:23
- 大小:19.79KB
c语言第七章数组课后练习题答案.docx
《c语言第七章数组课后练习题答案.docx》由会员分享,可在线阅读,更多相关《c语言第七章数组课后练习题答案.docx(23页珍藏版)》请在冰点文库上搜索。
c语言第七章数组课后练习题答案
c语言第七章数组课后练习题答案
第七章数组
学习目的与要求:
1、重点掌握一维数组的定义和引用;
、基本掌握二维数组的定义和引用;
、重点掌握字符型数组的定义与引用;
、能正确使用字符串处理函数;
、学会使用数组解决实际问题。
重点:
1、一维数组的定义与引用;
、二维数组的定义与引用;
、字符数组的定义与引用;
第1讲
知识归纳:
1、一维数组的定义:
类型说明符数组名[常量表达式];
数组名后必须用方括弧[],用其他括弧均错误;
方括弧中的常量表达式表示数组的元素个数;
方括弧中的常量表达式,必须是能计算出具体数值,且不改变的常量,不能是变量;
2、一维数组的引用:
数组名[下标]//下标从0
如inta[10];
//可以引用的数组元素为不是本数组元素;
3、一维数组的初始化:
inta[3];
a={1,3,};
可以给数组的部分元素赋值,不赋值的元素,默认值为int0,char,?
?
float0.0;
如inta[3]={1,};//a[0]=1;a[1]=;a[2]=0;
在对数组全部元素赋初值时,可以不指定元素个数;
可以在循环控制下,给数组各元素赋值;
如:
inta[10];
for
a[i]=i;
基础训练
一、选择题
1、在c语言中,引用数组元素时,其数组下标的数据类型允许是。
A)整型常量B)整型表达式)整型常量或整型表达式D)任何类型的表达式
2、要说明一个有10个int元素的数组,应当选择语句。
)inta[10];B)inta;C)inta[9]D)inta[11]
3、以下对数组的正确定义是:
。
A)floatb[5.0])floatb[5]C)floatbD)floatb[]
4、对以下说明语句的正确理解是。
inta[10]={6,7,8,9,10};
A)将5个初值依次赋给a[1]至a[5]
C语言复习题
)将5个初值依次赋给a[0]至a[4]
C)将5个初值依次赋给a[6]至a[10]
D)因为数组长度与初值的个数不相同,所以此语句不正确
5、已知:
inta[10];则对a数组元素的正确引用是。
A)a[10]B)a[3.5]C)a)a[10-10]
6、以下能对一维数组a进行正确初始化的语句是。
A)inta[10]=;B)inta[10]={})inta[]={0};D)inta[10]={10*1};
7、以下能对一维数组a进行正确初始化的语句是。
A)A)inta[5];B)inta[3];
a={0,1,2,3,4};for
scanf;
C)inta[3]={0,1,2,3};)inta[5];
for
scanf;
二、填空题
1、构成数组的各个元素必须具有相同的类型。
C语言中数组的下标必须是整正数、0或整型表达式。
如果一维数组的长度为n,则数组下标的最小值为,最大值为。
2、在C语言中,一维数组的定义方式为:
类型说说明符数组名。
3、已知数组b定义为intb[]={9,6,3};,则b的各元素的值分别是,
最小下标是
4、在C
5、已知数组T为一有10T中的10个元素的值的语句为:
for
{
inta[3]={3*0};
inti;
forscanf;
fora[0]=a[0]+a[i];
printf;
}
2、下面程序,请指出存在错误的行号
11main
{
inta[3];
inti;
scanf;
fora[0]=a[0]+a[i];
printf;
}
3、下面程序,请指出存在错误的行号
11main
{
inta[3];
inti;
forscanf;
fora[0]=a[0]+a[i]);
printf;
C语言复习题
}
第2讲
知识归纳:
1、二维数组的定义:
类型说明符数组名[常量表达式1][常量表达式2];
常量表达式1------可以形象理解为行数;
常量表达式2-----可以形象理解为列数;
二维数组中元素存放顺序是:
先存放第一行的元素,再存放第二行的元素,依次类推;
2、二维数组的引用:
数组名[下标][下标]
//下标从0开始,可以是整型常量或整型表达式;
注意:
数组元素引用时,不要超出数组范围;
如inta[][4];
//可以引用的数组元素为a[0][0]……a[2][3],a[3][4]不是本数组元素;
可以在循环控制下,给二维数组各元素赋值;
如:
inta[3][4];
for
for
a[i]=i*j;
3、二维数组的初始化:
可以在定义数组后,立刻赋值;如inta[3][4]={1,3,,7,9,11};
但下面这样是错误的:
inta[3][4];
a={1,3,,7,9,11};
可以给数组的部分元素赋值默认值为int0,char,?
?
float0.0;
基础练习
一、选择题
1、在C)。
)按行存放B)按列存放
C)由用户自己定义D)由编译器决定
2、以下对二维数组a的正确说明是。
A)inta[3][]B)floata)doublea[1][4]D)floata
3、已知:
inta[3][4];则对数组元素引用正确的是。
A)a[2][4]B)a[1,3])a[2][0]D)a
4、已知:
inta[3][4]={0};则下面正确的叙述是。
A)只有元素a[0][0]可得到初值0
B)此说明语句是错误的
C)数组a中的每个元素都可得到初值,但其值不一定为0)数组a中的每个元素均可得到初值0
5、以下正确的语句是。
A)inta[1][4]={1,2,3,4,5};B)floatx[3][]={{1},{2},{3}};
C)longb[2][3]={{1},{1,2},{1,2,3}};)doubley[][3]={0};
6、以下能对二维数组元素a进行正确初始化的语句是。
A)inta[2][]={{1,0,1},{5,2,3}};)inta[][3]={1,2,3},{4,5,6}};
C)inta[2][4]={{1,2,3},{4,5},{6}};
D)inta[][3]={{1,0,1},{},{1,1}};
二、填空题
C语言复习题
下面的程序是求出数组a的两条对角线上的元素之和。
#include“stdio.h”
main
{inta[3][3]={{1,3,6},{7,9,11},{14,15,17}},sum1=0,sum2=0,i,j;
for
for
ifsum1=sum1+a[i][j];
for
for
if
sum2=sum2+a[i][j];
printf;
}
三、编程题
1、在一个二维数组中形成并输出如下矩阵:
1
1
111
main
{inta[5][5],i,j;
printf;
for
for
scanf;
for
{for
printf;
printf;
}
}
2、有一个3*4
main
{inta[3][4],i,j,max;
for
for
scanf;
max=a[0][0];
for
for
ifmax=a[i][j];
printf;
}
第3讲
知识归纳:
1、字符数组的定义与引用:
类型说明符数组名[常量表达式];
与一维数组、二维数组定义、引用相同,只是类型说明符固定为:
char
2、字符数组的初始化:
逐字符赋值
如charc1[10]={?
W?
?
e?
?
l?
?
c?
?
o?
?
m?
?
e?
};
但下面这样是错误的:
charc1[10];
C语言复习题
c1={?
W?
?
e?
?
l?
?
c?
?
o?
?
m?
?
e?
};
字符串赋值和字符串结束标志
如charc1[10]=“Welcome”;
但下面这样是错误的:
charc1[10];
c1=“Welcome”;
注意:
系统会自动在字符串末尾加一个结束标志?
\0?
所以,定义字符数组时需要在字符个数基础上,多定义一个字节存储空间,存放结束标子;
3、字符数组的输入输出:
逐个字符输入输出。
用格式符%c输入或输出一个字符;往往与循环结合使用;如:
charc1[10];
forscanf;
…….
forprintf;
将整个字符串一次输入输出,用格式符%s;
如:
charc1[10];
scanf;//数组名代表数组的首地址
……
printf;
基础练习
一、选择题
1、要使字符数组str存放一个字符串”ABCDEFGH”,正确的定义语句是。
A)charstr[8]={‘A’,’B’,’C’,’D’,’E’,’F’,’G’,’H’};
B)charstr[8]=“ABCDEFGH”;
C)charstr[]={‘A’,’B’,’C’,’D’,’E’,’F’,’G’,’H’}charstr[]=“ABCDEFGH”;
2、下面是对数组s。
A)C)chars[5]=““;、对两个数组a和bchara[]=“ABCDEF”;
charb[]={‘A’,’B’,’C’,’D’,’E’,’F’};
则以下叙述正确的是。
A)a与b数组完全相同B)a与b长度相同
C)a和b中都存放字符串)a数组比b数组长度长
4、下面程序的运行结果是。
charc[5]={‘a’,’b’,’\0’,’c’,’\0’};
printf;
A)‘a’’b’)abC)abcD)以上三个答案均有错误
二、填空题
1、字符数组是用来存放的数组。
字符数组中一个元素存放个字符。
2、在C语言中存放字符’A’需要占用个字节,存放字符串”A”需要占用个字节。
3、以下语句的输出结果是。
printf;
三、程序填空
1、下列程序最多从键盘上输入99个字符,遇到’\n’后则退出,遇到空格则换成字符’#‘,对其他字符依次原样送入数组c中。
#include“stdio.h”
main
{inti;
第七章数组
一、选择题:
1-A、A、D、C、C-10B、D、D、B、A11-15D、D、D、D、A16-20A、C、C、D、B1-C、D、C、C、D
二、填空题:
1、标识符、常量、符号常量、变量、m-1、n-1、字符数组5、数组名
6、s[j++]=s[i]、C1!
=C2&&C1==′′
三、阅读程序,写出结果
1、1,2,3,、2,3,、f、-0
5、10000
00000
00000
00001
四、编程题:
1、#include
#include
#defineN10
voidmain
{
inta[N],i,max,min,m,n,t;
clrscr;
for
scanf;
for
printf;
printf;
max=min=a[0];
m=n=0;
for
if
{max=a[i];
m=i;
}
elseif
{min=a[i];
n=i;
}
t=a[m];
a[m]=a[n];
a[n]=t;
for
printf;
}
2、#include
#include
#defineM10
#defineN
voidmain
{floatscore[M][N],sum,i,j;
clrscr;
for
for
scanf;
for
{sum=0;
for
sum+=score[i][j];
score[i][N-1]=sum/;
}
printf;
printf;
for
{for
printf;
printf;
}
}
3、
#include
#include
#defineM
#defineN
voidmain
{inta[M][N],i,j,sum=0;
for
for
scanf;
for
{for
printf;
printf;
}
for
for
ifsum+=a[i][j];
for
for
a[i][j]--;
for
for
a[i][j]++;
printf;
for
{for
printf;
printf;
}
printf;
}
4、#include
#include
#defineM0
voidmain
{inti,n=0;
longf[M]={1,1};
clrscr;
for
f[i]=f[i-1]+f[i-2];
for
{printf;
n++;
ifprintf;
}
}
5、#include
#defineM10
voidmain
{
staticinta[M]={122,107,96,87,80,56,40,10,8,-20};intx,low,mid,high,found;
clrscr;
low=0;
high=M-1;
found=0;
printf;
scanf;
while
{
mid=/2;
if
{
found=1;
break;
}
elseif
low=mid+1;
else
high=mid-1;
}
if
printf;
else
printf;
}
6、#include
#include
#include
voidmain
{chars[80];
inti;
clrscr;
gets;
for/2;i++)
if-1-i])break;
if/2)printf;elseprintf;
}
7、#include
#include
#defineM
#defineN
voidmain
{inta[M][N],i,j,k,row,colum,flag=0;
intmax;
clrscr;
for
for
scanf;
printf;
for
{for
printf;
printf;
}
for
{
max=a[i][0];
row=i;
colum=0;
for
if
{max=a[i][j];
row=i;
colum=j;
}
for
ifbreak;
if
{printf;flag=1;}
}
if
printf;
}
8、
#include
#include
#include
#defineM0
#defineN0
voidmain
{charstr1[M],str2[N];
inti,j;
clrscr;
gets;
gets;
for,j=0;str2[j]!
=‘\0’;i++,j++)
str1[i]=str2[j];
str1[i]=‘\0’;
puts;
}
9、
#include
#include
#include
voidmain
{charstr[80]=“\0”;
数组复习题
一.选择题
1.若有以下定义语句:
inta[]={1,2,3,4,5,6,7,8,9,10};则值为的表达式是:
a)a[5]b)a[a[4]]c)a[a[3]]d)a[a[5]]
2.要求定义具有80个、char类型元素的一维数组,错误的定义语句是:
a)#defineN0b)intN=80;
chars[N];chars[N];
c)#defineN0d)chars[40+40];chars[2*N];
3.若有以下定义语句:
inta[10]={1,2,3,4,5,6,7,8,9,10};则对a数组元素正确的引用是:
a)a[10]b)a[a[3]-5]c)a[a[9]]d)a[a[4]+4]
4.若有以下定义语句:
floata[11]={0,1,2,3,4,5,6,7,8,9,10};则以下叙述中错误的是:
a)a数组在内存中占44个字节
b)a数组的最后一个元素为a[10]
c)a数组的第一个元素为a[0]
d)以上定义语句给a数组所赋初值是整数,不能正确赋值
5.若有以下定义语句:
doublea[5];inti=0;能正确给a数组元素输入数据的语句是:
a)scanf;
b)forscanf;
c)whilescanf;
d)whilescanf;
6.以下关于数组的描述正确的是:
a)数组的大小是固定的,但可以有不同数据类型的数组元素b)数组的大小是可变的,但所有数组元素的数据类型须相同c)数组的大小是固定的,且所有数组元素的数据类型须相同d)数组的大小是可变的,且可以有不同数据类型的数组元素
7.若有说明:
inta[10];,则对a数组元素引用不正确的是:
a)a[5+5]b)a[5.5]c)a[10-10]d)a[5]
8.执行inta[][3]={1,2,3,4,5,6,7};语句后,a[1][0]的值是:
a)1b)c)d)4
9.若有说明:
intk[][4]={1,2,3,4,5,6,7,8,9,10,11};,则k数组的第一维长度是:
a)b)c)1d)无确定值
10.若有以下程序:
voidmain
{intk[9]={19,16,17,15,13,11,10,9},i=1,s=0;
while
s=s+k[i++];
printf;
}
程序执行后的输出结果是:
a)b)c)101d)110
11.若有以下程序:
voidmain
{intm[][3]={1,3,2,4,5,7,6,8,9,10,11};
inti,k=2;
for
printf;
}
程序执行后的输出结果是:
a)b)c)1011d)
12.若有以下程序:
voidmain
{inta[3][4]={1,0,2,1,0,2,1,0,1,1,0,1};
inti,j,sum=0;
for
forsum+=a[i][j];
}
程序执行后的输出结果是:
a)0b)c)d)
13.下面程序段的输出结果是。
chara[7]=”abcdef”;charb[4]=”ABC”;
strcpy;printf;
A)cB)\0C)eD)f
14.下面程序段的输出结果是。
charc[]=”\t\v\\\0will\n”;
printf);
A)14B)3C)D)6
15.判断字符串a和b是否相等,应当使用。
A)ifB)if
C)if)D)if)
16.判断字符串a是否大于b,应当使用。
A)ifB)if)
C)if>0)D)if>0)
17.下面叙述正确的是。
A)两个字符串所包含的字符个数相同时,才能比较字符串
B)字符个数多的字符串比字符个数少的字符串大
C)字符串”STOP”与”STOP”相等
D)字符串”That”小于字符串”The”
18.下面有关字符数组的描述中错误的是。
A)字符数组可以存放字符串
B)字符串可以整体输入,输出
C)可以在赋值语句中通过赋值运算对字符数组整体赋值
D)不可以用关系运算符对字符数组中的字符串进行比较
19.下面程序的输出结果是。
voidmain
{charch[7]=”12ab56”;
inti,s=0;
for;
}
A)1B)125C)12ab56
20.下面程序的输出结果是。
voidmain
{charstr[]=”SSWLIA”,c;
intk;
for!
=’\0’;k++)
{switch
{case‘I’:
++k;break;
case‘L’:
continue;
default:
putchar;continue;
}
putchar;D)ab;i+=2)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 第七 数组 课后 练习题 答案