c语言数组习题

上传人:博****1 文档编号:430854498 上传时间:2022-08-14 格式:DOC 页数:12 大小:138KB
返回 下载 相关 举报
c语言数组习题_第1页
第1页 / 共12页
c语言数组习题_第2页
第2页 / 共12页
c语言数组习题_第3页
第3页 / 共12页
c语言数组习题_第4页
第4页 / 共12页
c语言数组习题_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《c语言数组习题》由会员分享,可在线阅读,更多相关《c语言数组习题(12页珍藏版)》请在金锄头文库上搜索。

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

2、0. 0, 0. 0, 0. 0;方法三:float a4= 0. 0;方法四:static float 4;2下列数组定义语句中,错误的是() char x1= a; auto char x1=0; static char xl ; char xl ;【分析】显然答案中给字符型数组赋初值的格式不对(不能直接赋予字符常量,必须用花括号括住),所以备选答案是符合题意的答案。【答案】3用”冒泡排序法”对n个数据排序,需要进行 n 1步。其中第k步的任务是:自下而上,相邻两数比较,小者调上;该操作反复执行n k次。现在假设有4个数据:4、I、3、2要排序,假定4为上、2为下,则利用”冒泡排序法”执行

3、第2步后的结果是 。【分析】开始排序前的排列执行第1步后的排列执行第 2步后的排列4111 423242 33【答案】I、2、4、34用选择排序法”对n个数据排序,需要进行 n1步。其中第k步的任务是:在第k个数据到第n个数据中寻找最小数,和第 k个数据交换。现在假设有4个数据:4、1、3、2要排序,则利用”冒泡排序法”执行第2步后的结果是【分析】开始排序前的排列为:4执行第1步后的排列为:执行第2步后的排列为:【答案】1、2、3、45下列数组定义语句中,正确的是() int a=1, 2, 3, 4, 5, 6; int a3= 1, 2, 3, 4, 5, 6;13214321234 ch

4、air a23 = a , b; static int a= 1,2,3,4,5,6【分析】C语言规定,二维数组定义时不允许省略第二维的长度,所以备选答案是错误的。C语言还规定,定义字符型数组时不允许直接使用”字符常量”的方式赋初值,所以备选答案也是错误的。显然备选答案符合题意。【答案】6定义一个名为s的字符型数组,并且赋初值为字符串123的错误语句是()char s=1 , 2 , 3 , 0 ;char s =123;char s=123n; char s4=1, 2 , 3;【分析】备选答案中省略了数组长度,所以每个元素都赋了初值,共计4个元素,初值依次为T 、2、3、 0,最后一个元素

5、的值为字符串结束标记,所以数组S中存放的是字符串123,该答案不符合题意(即正确的);备选答案中直接赋予字符串作为初值所以数组s的长度为4,其中的初值是字符串123,不符合题意(即正确的);备选答案中也是给数组 s赋予字符串的初值, 但是字符串不是123,而是123 n,所以该答案符合题意(即错误的);显然答案也不符合题意(即正确的)。下面来分析答案为什么是正确的,该答案给出了数组长度为4,赋初值时仅给前3个元素赋予字符1 、2、3 ,第4个元素没有赋初值,按照C_语言的规定,也有初值,且初值为空值,对字符型数组来说,空值就是0,即字符率结束标记,所以数组S中存放的也是字符串123。【答案】7

6、设有下列数据定义语句,则数组元素xi的值是。int i = 3 , x4= 1, 2, 3;【分析】由于i的初值为3,所以xi就是x3。由于数组的下标是从0开始的,所以x3 实际上是数组x的第4个元素。从定义语句中可以看出数组x的前3个元素的初值依次为1、2、3,第4个元素没有赋初值,其初值自动设为空值,对整型数组来说,空值是0,显然x3的值是0.【答案】08设有下列数据定义语句,则puts (& s00)的输出结果是 ; puts (s0输出结果是。char s45=T, 0 , 23 , 345 , 4 0;【分析】首先分析字符型数组s的初值,s的第1行中存放的字符串是1、第2行中存放的符

7、串是23、第3行中存放的字符串是345、第4行中存放的字符串是4。puts ()函数的功能是输出从”参数”处 开始存放的字符串中有效字符。按照上的分析,第 1个输出的结果是从” & S00开始的字符串,这个 地址对应的就是数s的第1行,所以输出结果为1;第2个输出的结果是从“s ”开始的字符串,这个址对应的也是数组s的第1行,所以输出结果也为1。【答案】119设有下列数据定义语句:char a410=11, 22 , 33 , 44;则 puts (strcat (a1 , a3)的输出结果是 ;putS (strcpy (a0 , a2)的输出结果是 。【分析】字符数组a共有4行,每行存放一

8、个字符串。这4行的首地址依次为:a0、a1、a2、a3,从这4个地址开始存放的字符串依次为:11、22、33、44。strcat (a1 , a3)函数调用的功能是将s3处的字符串连接到 al的字符串后面,所以执行该函数调用后的al处的字符串为2244,而该函数的返回值就是a1的首地址,puts ()函数的功能就是输出这个地址存放的字符串,由此,第1个输出的结果就是:2244。同样理由可以分析strcpy (a0 , a2)的功能是将a2处的字符串(33)复制到a0处,返回a0的地址,puts()输出的就是a0处的字符串,结果为:33。【答案】22443310设有下列数据定义语句:char s

9、tr210=abc, ABC;则 printf(% d, strcmp ( str1 , str0 )的输出结果是 ;printf ( %d, strcmp(strlwr(str1,str0), str0)的输出结果是 。【分析】字符型数组str中,从str0开始存放的字符串是abc、从strl开始存放的字符串是ABC。strcmp(strl , str0)是比较strl 和str【0处的两个字符串的大小,由于ABC是小于abc的,按照srrcmp函数的功能可知,返回值是一个小于0的整数,这是第1个空的答案。再来分析第 2个空的答案,strlwr (strl)函数的功能是将strl处的字符串中

10、大写字母改为小写字母,其返回值是修改后字符串的地址。strcmp (stlwr (sir1 ), str0)函数的功能是比较 strl 和str0 处的字符串,由于strl处的字符串已经改为小写字母了,所以和 str0处的字符串完全相同,返回值是0,这就是第2个空的答案。答案某个小于0的任意整数011下列程序的功能是读取10个实数,然后依次输出前I个实数和、前2个实数和、前9个实数和、前10个实数和。请填写程序中缺少的语句。mai n ()float f10, X= 0. 0;int ifor (i=0 ; i v 10; i+ )scanf ( f , fi );for ( i=1;i v

11、=10; i+ )printf (sum of NO % 2d% f、n, i , x);【分析】浏览程序清单后,可以发现前一个次数型循环是输入10 个实数存入数组 f 中。后一个次数型循环是计算前i个实数和并存入变量 X中,然后再输出这个 x的值。程序中所缺少的语句就是实现”计算前i个实数和并存入变量X中”的。当i等于1时,x要等于f0 的值,即fi 门的值;当i等于2时,x要等于f0+ fl的值,即f0 + fi 1的值,此时f0的值已经计算并存入变量x中;当i等于3时,x要等于f0 + f1 + f2的值,即f0 + f1 + fi I 的值,此时f0 + f1的值已 经计算并存入变量

12、x中;由此可以推出:前i个值的计算公式为:x= x + fi 1,将这个表达式组成语 句就是需要填写的内容。【答案】x=x + fi l ; 或 x + = fi l;12 运行下列程序的输出结果是() 111ll llll lll 222main ()int a=1, 2, 3, 4, 5 , i;for ( i=1;i v 5 ; i )printf (% 1d , ai ai 一1);【分析】首先分析数组 a各元素的值,由于是赋初值,很容易看出: a0 = 1、a1 = 2、a4 = 5。 再分析次数型循环共计执行 4次(i = 1、i = 2、i = 3、i = 4),每次输出1位整数

13、;i ai 1 ,当i =1时,输出的是 2 1 = 1;当i = 2时,输出的是 3 2= l ;当i=3时,输出的是 4 3 = l ;当i = 4时, 输出的是 54= 1。整个程序的输出结果是 1111。【答案】13 下列程序的功能是输入一个 5行5列的实数矩阵, 然后求出其中的最大数和最小数, 并且对调这两个 数后,再输出,请填写程序中缺少的语句。main () float f 55, max, x ;int i , j , max_l, max_J, min_i , min_J ;for ( i = 0; i v 5; i )for ( j = 0; j v 5; j )scanf ( % f , x);fij= x;max= min = f00;max_i = max_i = min_i = min_j = 0;for ( i= 0 ; i v 5; i )for ( j = 0; j v 5; j )if( maxv fij)max= fij, max_i = i , max_j = j ;if (min fij)fmax_imax_j

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 医学/心理学 > 基础医学

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