当前位置:文档之家› c语言数组习题

c语言数组习题

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

空值(对数值型数组来说,初值为0),可以写出方法四(参瞧答案)。

【答案】方法一 :float a[4] = (0.0,0.0,0.0,0.0};方法二:float a[] = ( 0.0,0.0,0.0,0.0};规定,定义字符型数组时不允许直接使用 "字符常量"的方式赋初值,所以备选答案②也就是错误的。

备选答案③符合题意。

【答案】③6定义一个名为"s"的字符型数组,并且赋初值为字符串"123"的错误语句就是()① char s[]={ '1','2','3',' \0 '};② char s 「」={"123"};③ char s[]={"123\n"};④ char s[4]={'1','2','3'};【分析】备选答案①中省略了数组长度 ,所以每个元素都赋了初值,共计4个元素,初值依次为T '3'、’ \0',最后一个元素的值为字符串结束标记,所以数组S 中存放的就是字符串"123",该答案不符合题意(即正确的);备选答案③中直接赋予字符串作为初值所以数组 s 的长度为4,其中的初值就是字符串 "123",不符合题意(即正确的);备选答案③中也就是给数组s 赋予字符串的初值,但就是字符串不就是方法三:float a[4]= {0.0}; 方法四:static float [4];2下列数组定义语句中,错误的就是()① char x[1]= 'a';② auto char x[1]={0};③ static char x[l];④ char x[l];【分析】显然答案①中给字符型数组赋初值的格式不对 以备选答案①就是符合题意的答案。

【答案】①3用"冒泡排序法"对n 个数据排序,需要进行n 一 1 较,小者调上;该操作反复执行 n- k 次。

现在假设有则利用"冒泡排序法"执行第2步后的结果就是【分析】开始排序前的排列执行第41 -3 :(不能直接赋予字符常量,必须用花括号括住),所步。

其中第k 步的任务就是:自下而上,相邻两数比 4个数据:4、l 、3、2要排序,假定4为上、2为下,O1步后的排列执行第 2步后的排列1242 【答案】l 、2、4、3 4用"选择排序法"对n 个数据排序,需要进行n-1 据中寻找最小数,与第k 个数据交换。

现在假设有 行第2步后的结果就是 ____________________ 【分析】 开始排序前的排列为:4执行第1步后的排列为: 执行第2步后的排列为:【答案】1、2、3、45下列数组定义语句中,正确的就是()① int a[][]={1,2,3,4,5,6}; ② char a[2]③ int a[][3]= {1,2,3,4,5,6};④ static int a[][] 【分析】C 语言规定,二维数组定义时不允许省略第二维的长度 步。

其中第k 步的任务就是:在第k 个数据到第n 个数 4个数据:4、1、 3、2要排序,则利用"冒泡排序法"执「3] = 'a','b';={{1,2,3},{4,5,6}};,所以备选答案①④就是错误C 语言还 显然、'2'、"123",而就是"123 \n",所以该答案符合题意(即错误的);显然答案④也不符合题意(即正确的)。

下面来c语言数组习题分析答案④为什么就是正确的,该答案给出了数组长度为4,赋初值时仅给前3个元素赋予字符'1 '、’2'、'3',第4个元素没有赋初值,按照C语言的规定,也有初值,且初值为空值,对字符型数组来说,空值就就是'\0',即字符率结束标记,所以数组S中存放的也就是字符串"123"。

【答案】③7设有下列数据定义语句,则数组元素x[i]的值就是。

int i = 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]〕输出结果就是。

char s[4][5]=(('l',' \ 0'},("23"},"345","4 \ 0"};【分析】首先分析字符型数组s的初值,s的第1行中存放的字符串就是"1”、第2行中存放的符串就是"23”、第3行中存放的字符串就是"345"、第4行中存放的字符串就是"4”。

puts()函数的功能就是输出从”参数”处开始存放的字符串中有效字符。

按照上的分析,第1个输出的结果就是从"& S[0][0]"开始的字符串,这个地址对应的就就是数s的第1行,所以输出结果为1;第2个输出的结果就是从“ s[] ”开始的字符串,这个址对应的也就是数组s的第1行,所以输出结果也为1。

【答案】119设有下列数据定义语句:char a[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个地址开始存放的字符串依次为:"11"、"22"、"33"、"44” 。

strcat(a[1],a[3]) 函数调用的功能就是将s[3]处的字符串连接到a[l]的字符串后面,所以执行该函数调用后的a「I」处的字符串为"2244",而该函数的返回值就就是a[1 ]的首地址,puts()函数的功能就就是输出这个地址存放的字符串,由此,第1个输出的结果就就是:2244。

同样理由可以分析strcpy(a[0],a[2]) 的功能就是将a[2]处的字符串("33")复制到a[0]处,返回a[0]的地址,puts()输出的就就是a[0]处的字符串,结果为:33。

【答案】2244 3310设有下列数据定义语句:char str[2][10]=("abc","ABC"};则printf(" % d",strcmp(str[1],str[0 ]))的输出结果就是;printf(" % d",strcmp(strlwr(str[1],str[0])),str[0])) 的输出结果就是。

【分析】字符型数组str中,从str[0]开始存放的字符串就是"abc”、从str[l] 开始存放的字符串就是"ABC”。

strcmp(str[l],str[0]) 就是比较str[l] 与str【0」处的两个字符串的大小,由于"ABC"就是小于"abc"的,按照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的任意整数011下列程序的功能就是读取10个实数,然后依次输出前l个实数与、前2个实数与、…、前9个实数与、前10个实数与。

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

main()(float f[10],X = 0.0;int i;for(i=0;i v 10;i++)scanf(" % f", & f[i]);for(i=1;i < =10;i++)( ______________________printf("sum of NO % 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 ④ 222main()(int a[]=(1,2,3,4, 5 },i;for( i=1;i v 5; i + + )printf(" % 1d", a[i] — a[i 一1]);}【分析】首先分析数组a各元素的值,由于就是赋初值,很容易瞧出:a[0] = 1、a[1] = 2・・・、a[4] = 5。

相关主题