《C语言数组典型例题分析与解答》

上传人:tang****xu4 文档编号:271134859 上传时间:2022-03-28 格式:DOCX 页数:8 大小:31.79KB
返回 下载 相关 举报
《C语言数组典型例题分析与解答》_第1页
第1页 / 共8页
《C语言数组典型例题分析与解答》_第2页
第2页 / 共8页
《C语言数组典型例题分析与解答》_第3页
第3页 / 共8页
《C语言数组典型例题分析与解答》_第4页
第4页 / 共8页
《C语言数组典型例题分析与解答》_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《《C语言数组典型例题分析与解答》》由会员分享,可在线阅读,更多相关《《C语言数组典型例题分析与解答》(8页珍藏版)》请在金锄头文库上搜索。

1、数组练习解答定义一个名为a的单精度实型一维数组,长度为4,所有元素的初值均为的数定义语句是【分析】按照一般数据定义语句的格式,可以直接写出方法一(参看答案);考虑到所有元素均赋初值时可以省略数组长度,可以写出方法二(参看答案);考虑到不省略数组长度,给部分元素赋初值时,所有未赋初值的元素均有空值(对数值型数组来说,初值为),可以写出方法三(参看答案);考虑到选用静态型,不赋初值所有元素也自动赋予。空值(对数值型数组来说,初值为0),可以写出方法四(参看答案)。【答案】方法一:fota(0,00,0,.0;方法二:fla=(0.0,0.0,0.0,0.0;方法三:loata4=(0.0;方法四:

2、sticfloat;2下列数组定义语句中,错误的是()chax=a;aoch1=(0;saticharl;charxl;【分析】显然答案中给字符型数组赋初值的格式不对(不能直接赋予字符常量,必须用花括号括住),所以备选答案是符合题意的答案。【答案】3用冒泡排序法对个数据排序,需要进行一步。其中第k步的任务是:自下而上,相邻两数比较,小者调上;该操作反复执行nk次。现在假设有4个数据:4、l、2要排序,假定为上、2为下,则利用冒泡排序法执行第2步后的结果是。【分析】开始排序前的排列执行第1步后的排列执行第2步后的排列【答案】、2、4、34用选择排序法对n个数据排序,需要进行n1步。其中第k步的任

3、务是:在第k个数据到第n个数据中寻找最小数,和第k个数据交换。现在假设有4个数据:4、1、3、2要排序,则利用冒泡排序法执行第2步后的结果是【分析】开始排序前的排列为:3执行第1步后的排列为:43执行第步后的排列为:123【答案】、2、3、45下列数组定义语句中,正确的是()cara23=a,;in=(1,2,3,4,6;na3=(1,2,3,4,5,6;stticinta(,,3,(,5,6【分析】语言规定,二维数组定义时不允许省略第二维的长度,所以备选答案是错误的。C规定,定义字符型数组时不允许直接使用字符常量的方式赋初值,所以备选答案也是错误的。显然备选答案符合题意。【答案】6定义一个名

4、为s的字符型数组,并且赋初值为字符串2的错误语句是()chrs=(1,2,3,0;chars=(2;chars=(23n;hrs4=(,2,3;【分析】备选答案中省略了数组长度,所以每个元素都赋了初值,共计个元素,初值依次为T、2、3、0,最后一个元素的值为字符串结束标记,所以数组中存放的是字符串23,该答案不符合题意(即正确的);备选答案中直接赋予字符串作为初值所以数组s的长度为,其中的初值是字符串23,不符合题意(即正确的);备选答案中也是给数组赋予字符串的初值,但是字符串不是12,而是123n”,所以该答案符合题意(即错误的);显然答案也不符合题意(即正确的)。下面来分析答案为什么是正确

5、的,该答案给出了数组长度为4,赋初值时仅给前3个元素赋予字符1、2、3,第4个元素没有赋初值,按照C语言的规定,也有初值,且初值为空值,对字符型数组来说,空值就是0,即字符率结束标记,所以数组S中存放的也是字符串123”。【答案】设有下列数据定义语句,则数组元素的值是。iti3,x=(1,,3;【分析】由于i的初值为3,所以就是x。由于数组的下标是从0开始的,所以x3:实际上是数组x的第4个元素。从定义语句中可以看出数组x的前3个元素的初值依次为1、2、3,第4个元素没有赋初值,其初值自动设为空值,对整型数组来说,空值是0,显然x3的值是.【答案】0设有下列数据定义语句,则puts(&s00)

6、的输出结果是;pus(s输出结果是。chrs4(l,0,(23,”35”,40;【分析】首先分析字符型数组s的初值,的第1行中存放的字符串是1、第2行中存放的符串是2、第3行中存放的字符串是345、第4行中存放的字符串是4。uts()函数的功能是输出从参数”处开始存放的字符串中有效字符。按照上的分析,第个输出的结果是从&S0开始的字符串,这个地址对应的就是数s的第1行,所以输出结果为1;第个输出的结果是从“s”开始的字符串,这个址对应的也是数组的第1行,所以输出结果也为1。【答案】119设有下列数据定义语句:hara410=(11,2”,33”,44;则t(strc(1,a3)的输出结果是;u

7、S(strcy(a0,a)的输出结果是。【分析】字符数组a共有4行,每行存放一个字符串。这4行的首地址依次为:a0、1、2、a,从这4个地址开始存放的字符串依次为:11、2、33、4。cat(a1,a3)函数调用的功能是将3处的字符串连接到al的字符串后面,所以执行该函数调用后的al处的字符串为224”,而该函数的返回值就是1的首地址,puts()函数的功能就是输出这个地址存放的字符串,由此,第1个输出的结果就是:224。同样理由可以分析stpy(a0,2)的功能是将2处的字符串(33”)复制到a0处,返回a0的地址,t()输出的就是a0处的字符串,结果为:33。【答案】224310设有下列数

8、据定义语句:charsr21=(abc,AC;则rintf(%,tcm(str1,str)的输出结果是;pri(%d,rcp(rlwr(sr1,str0)),sr0)的输出结果是。【分析】字符型数组str中,从t0开始存放的字符串是bc”、从strl开始存放的字符串是ABC。trcmp(stl,str)是比较st和sr【0处的两个字符串的大小,由于B”是小于ab的,按照srrc函数的功能可知,返回值是一个小于0的整数,这是第1个空的答案。再来分析第2个空的答案,stlwr(trl)函数的功能是将rl处的字符串中大写字母改为小写字母,其返回值是修改后字符串的地址。strpslwr(sir1),t

9、r0))函数的功能是比较srl和tr0处的字符串,由于rl处的字符串已经改为小写字母了,所以和str0处的字符串完全相同,返回值是0,这就是第个空的答案。答案某个小于0的任意整数11下列程序的功能是读取10个实数,然后依次输出前l个实数和、前2个实数和、前9个实数和、前1个实数和。请填写程序中缺少的语句。main()(floaf1,X=0.0;it;for(=0;iv1;i+)scan(%f,&f);or(i=1;iv=10;i+)printf(smofNO%2%fn,i,x);【分析】浏览程序清单后,可以发现前一个次数型循环是输入0个实数存入数组f中。后一个次数型循环是计算前i个实数和并存入

10、变量中,然后再输出这个x的值。程序中所缺少的语句就是实现”计算前i个实数和并存入变量中”的。当i等于1时,x要等于f0:的值,即l的值;当i等于2时,x要等于f0+fl的值,即f0+fi1的值,此时f的值已经计算并存入变量x中;当等于3时,要等于f0f12的值,即f0:+f1+fi-l:的值,此时f0的值已经计算并存入变量x中;由此可以推出:前i个值的计算公式为:x=+fi,将这个表达式组成语句就是需要填写的内容。【答案】x=+fi-l;或xfil;运行下列程序的输出结果是()1llllll22mai()(inta(1,2,,4,i;fr(i1;iv5;+)pnf(%,ai一1);【分析】首先

11、分析数组a各元素的值,由于是赋初值,很容易看出:01、=2、a4=5o再分析次数型循环共计执行4次(i、i=2、=3、i4),每次输出1位整数;i,当i=1时,输出的是21=1;当i2时,输出的是2=;当i=3时,输出的是4-=l;当i=4时,输出的是5-41。整个程序的输出结果是111。【答案】13下列程序的功能是输入一个行5列的实数矩阵,然后求出其中的最大数和最小数,并且对调这两个数后,再输出,请填写程序中缺少的语句。an()(foatf5inti,max_l,ma_J,min_i,mi_J;fo(i=0;i5;i)for(j=0;j5;)(scanf(,&x);ij=x;m后min=f0

12、0;maxi=maxm_i=mn_j0;or(i0;i5;i+)fo(j=0;v5;j+)(i(ax:fij)max=fij,max_ii,maj;if(miij)fx_imax_j=min;fmiii_jma;fr(i=0;iv5;i+)(prin(n);fo(j=0;jv5;j+)printf(8.2f,fij);【分析】首先宏观上阅读程序,可以看出程序的基本结构是:用双重次数型循环读取5行5列矩阵的元素值存入二维数组f中;寻找矩阵中的最大数和最小数;交换最大数和最小数;输出交换后的矩阵元素值。需要填写的语句属于第个部分。现在来仔细分析这个部分的程序。通常寻找最大数(或最小数)的算法是首先

13、假定最前面的数是最大数(或最小数),并记录该数及其在数组中的下标,然后依次处理所有元素,若当前处理的元素大于(小于)最大数(最小数),则重新记录新的最大数(最小数)及其下标。从本程序清单来看,的确是采用了这个算法,由于是同时求最大数和最小数,所以用max、max_i、max_j分别记录当前的最大数及其行列下标,用i、i_i、min_j分别记录当前的最小数及其行列下标。在二重循环的循环体中有两条单分支语句,前一个单分支语句的功能很清楚,判断当前的数组元素是否大于最大数,是则重新记录最大数及其行列下标(注意,这里是用一个逗号表达式完成三项赋值工作的)。循环体中的第2条单分支语句当然是求当前最小数的,由此分析,当条件成立(当前数组元素小于当前最小数)时,需要重新记录当前的最小数及其行列下标,所

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号