c语言数组习题Word文件下载.docx

上传人:b****2 文档编号:14833415 上传时间:2022-10-25 格式:DOCX 页数:9 大小:21.91KB
下载 相关 举报
c语言数组习题Word文件下载.docx_第1页
第1页 / 共9页
c语言数组习题Word文件下载.docx_第2页
第2页 / 共9页
c语言数组习题Word文件下载.docx_第3页
第3页 / 共9页
c语言数组习题Word文件下载.docx_第4页
第4页 / 共9页
c语言数组习题Word文件下载.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

c语言数组习题Word文件下载.docx

《c语言数组习题Word文件下载.docx》由会员分享,可在线阅读,更多相关《c语言数组习题Word文件下载.docx(9页珍藏版)》请在冰豆网上搜索。

c语言数组习题Word文件下载.docx

【分析】显然答案①中给字符型数组赋初值的格式不对(不能直接赋予字符常量,必须用花括号括住),所以备选答案①是符合题意的答案。

【答案】①

3用"

冒泡排序法"

对n个数据排序,需要进行n一1步。

其中第k步的任务是:

自下而上,相邻两数比较,小者调上;

该操作反复执行n-k次。

现在假设有4个数据:

4、l、3、2要排序,假定4为上、2为下,则利用"

执行第2步后的结果是_________________。

【分析】开始排序前的排列执行第1步后的排列执行第2步后的排列

1

2

4

3

【答案】l、2、4、3

4用"

选择排序法"

对n个数据排序,需要进行n-1步。

在第k个数据到第n个数据中寻找最小数,和第k个数据交换。

4、1、3、2要排序,则利用"

执行第2步后的结果是______________________。

【分析】 

开始排序前的排列为:

执行第1步后的排列为:

执行第2步后的排列为:

【答案】1、2、3、4

5下列数组定义语句中,正确的是()

①inta[][]={1,2,3,4,5,6};

②chara[2]「3]='

,'

b'

③inta[][3]={1,2,3,4,5,6};

④staticinta[][]={{1,2,3},{4,5,6}};

【分析】C语言规定,二维数组定义时不允许省略第二维的长度,所以备选答案①④是错误的。

C语言还规定,定义字符型数组时不允许直接使用"

字符常量"

的方式赋初值,所以备选答案②也是错误的。

显然备选答案③符合题意。

【答案】③

6定义一个名为"

s"

的字符型数组,并且赋初值为字符串"

123"

的错误语句是()

①chars[]={‘1'

2'

3'

\0'

};

②chars「」={"

③chars[]={"

123\n"

};

④chars[4]={'

1'

【分析】备选答案①中省略了数组长度,所以每个元素都赋了初值,共计4个元素,初值依次为'

l'

、'

\0'

,最后一个元素的值为字符串结束标记,所以数组S中存放的是字符串"

,该答案不符合题意(即正确的);

备选答案③中直接赋予字符串作为初值所以数组s的长度为4,其中的初值是字符串"

,不符合题意(即正确的);

备选答案

③中也是给数组s赋予字符串的初值,但是字符串不是"

,而是"

123\n"

,所以该答案符合题意(即错误的);

显然答案④也不符合题意(即正确的)。

下面来分析答案④为什么是正确的,该答案给出了数组长度为4,赋初值时仅给前3个元素赋予字符'

1'

、'

,第4个元素没有赋初值,按照C语言的规定,也有初值,且初值为空值,对字符型数组来说,空值就是'

,即字符率结束标记,所以数组S中存放的也是字符串"

123"

7设有下列数据定义语句,则数组元素x[i]的值是__________________。

inti=3,x[4]={1,2,3};

【分析】由于i的初值为3,所以x[i]就是x[3]。

由于数组的下标是从0开始的,所以x[3]实际上是数组x的第4个元素。

从定义语句中可以看出数组x的前3个元素的初值依次为1、2、3,第4个元素没有赋初值,其初值自动设为空值,对整型数组来说,空值是0,显然x[3」的值是0.【答案】0

8设有下列数据定义语句,则puts(&s[0][0])的输出结果是__________;

puts(s[0]〕

输出结果是_____________。

chars[4][5]={{'

},{"

23"

},"

345"

,"

4\0"

【分析】首先分析字符型数组s的初值,s的第1行中存放的字符串是"

1"

、第2行中存放的符串是"

、第3行中存放的字符串是"

、第4行中存放的字符串是"

4"

puts()函数的功能是输出从"

参数"

处开始存放的字符串中有效字符。

按照上的分析,第1个输出的结果是从"

&S[0][0]"

开始的字符串,这个地址对应的就是数s的第1行,所以输出结果为1;

第2个输出的结果是从“s[]”开始的字符串,这个址对应的也是数组s的第1行,所以输出结果也为1。

【答案】 

9设有下列数据定义语句:

chara[4][10]={"

11"

22"

33"

44"

则puts(strcat(a[1],a[3]))的输出结果是________________;

putS(strcpy(a[0],a[2]))的输出结果是________________。

【分析】字符数组a共有4行,每行存放一个字符串。

这4行的首地址依次为:

a[0]、a[1]、a[2]、a[3],从这4个地址开始存放的字符串依次为:

"

、"

strcat(a[1],a[3])函数调用的功能是将s[3]处的字符串连接到a[l]的字符串后面,所以执行该函数调用后的a「l」处的字符串为"

2244"

,而该函数的返回值就是a[1]的首地址,puts()函数的功能就是输出这个地址存放的字符串,由此,第1个输出的结果就是:

2244。

同样理由可以分析strcpy(a[0],a[2])的功能是将a[2]处的字符串("

)复制到a[0]处,返回a[0]的地址,puts()输出的就是a[0]处的字符串,结果为:

33。

【答案】2244 

33

10设有下列数据定义语句:

charstr[2][10]={"

abc"

ABC"

则printf("

%d"

,strcmp(str[1],str[0]))的输出结果是__________;

printf("

,strcmp(strlwr(str[1],str[0])),str[0]))的输出结果是_______。

【分析】字符型数组str中,从str[0]开始存放的字符串是"

、从str[l]开始存放的字符串是"

strcmp(str[l],str[0])是比较str[l]和str【0」处的两个字符串的大小,由于"

是小于"

的,按照srrcmp函数的功能可知,返回值是一个小于0的整数,这是第1个空的答案。

再来分析第2个空的答案,strlwr(str[l])函数的功能是将str[l]处的字符串中大写字母改为小写字母,其返回值是修改后字符串的地址。

strcmp(stlwr(sir[1]),str[0]))函数的功能是比较str[l]和str[0]处的字符串,由于str[l]处的字符串已经改为小写字母了,所以和str[0]处的字符串完全相同,返回值是0,这就是第2个空的答案。

[答案]某个小于0的任意整数 

0

11下列程序的功能是读取10个实数,然后依次输出前l个实数和、前2个实数和、…、前9个实数和、前10个实数和。

请填写程序中缺少的语句。

main()

{floatf[10],X=0.0;

inti;

for(i=0;

i<10;

i++)

scanf("

%f"

,&f[i]);

for(i=1;

i<=10;

{_______________________

printf("

sumofNO%2d----%f\n"

,i,x);

}

【分析】浏览程序清单后,可以发现前一个次数型循环是输入10个实数存入数组f中。

后一个次数型循环是计算前i个实数和并存入变量X中,然后再输出这个x的值。

程序中所缺少的语句就是实现"

计算前i个实数和并存入变量X中"

的。

当i等于1时,x要等于f[0]的值,即f[i-l]的值;

当i等于2时,x要等于f[0]+f[l]的值,即f[0]+f[i-1」的值,此时f[0]的值已经计算并存入变量x中;

当i等于3时,x要等于f[0]+f[1]+f[2]的值,即f[0]+f[1]+f[i-l]的值,此时f[0]+f[1]的值已经计算并存入变量x中;

由此可以推出:

前i个值的计算公式为:

x=x+f[i-1],将这个表达式组成语句就是需要填写的内容。

【答案】x=x+f[i-l];

或 

x+=f[i-l];

12运行下列程序的输出结果是()

①111ll 

②llll 

③lll 

④222

{inta[]={1,2,3,4,5},i;

for(i=1;

i<5;

i++)

%1d"

,a[i]-a[i一1]);

【分析】首先分析数组a各元素的值,由于是赋初值,很容易看出:

a[0]=1、a[1]=2…、a[4]=5。

再分析次数型循环共计执行4次(i=1、i=2、i=3、i=4),每次输出1位整数;

[i]-a[i-1],当i=1时,输出的是2-1=1;

当i=2时,输出的是3-2=l;

当i=3时,输出的是4-3=l;

当i=4时,输出的是5-4=1。

整个程序的输出结果是1111。

【答案】②

13下列程序的功能是输入一个5行5列的实数矩阵,然后求出其中的最大数和最小数,并且对调这两个数后,再输出,请填写程序中缺少的语句。

main()

{floatf[5][5],max,x;

inti,j,max_l,max_J,min_i,min_J;

for(i=0;

i<5;

i++)

for(j=0;

j<5;

j++)

{scanf("

%f"

,&x);

f[i][j]=x;

max=min=f[0][0];

max_i=max_i=min_i=min_j=0;

for(i=0;

{if(max<f[i][j])

max=f[i][j],max_i=i,max_j=j;

if(min>f[i][j])

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1