您好,欢迎来到爱学范文!

当前位置:爱学范文网>>实用资料>>C语言数组试题

C语言数组试题

【综合文库】

第4章 数组

4.1内容概述

本章主要介绍了数值数组和字符数组的定义、初始化、元素引用和数组数据的输入与输出,字符数组实现字符串、字符串函数的实现与调用。指针数组与数组指针定义、元素引用。利用一维数组实现如挑数、排序、求和等实际应用问题。利用二维数组实现矩阵的应用问题。利用字符数组实现字符串的各种操作。本章知识结构如图4.1所示。

定义

初始化

数值数组

元素引用

数组元素输入和输出

定义

初始化数组 字符数组

元素引用

数组元素输入和输出

定义

指针数组初始化

应用

图4.1 第4章知识结构图

考核要求:掌握一维数组、二维数组、字符数组和指针数组的定义和初始化;掌握数组元素存储地址计算;掌握数组元素的下标法、指针法引用;掌握字符数组与字符串的区别与联系;掌握有关字符串处理函数的使用方法;能利用一维数组、二维数组解决向量、矩阵等实际应用问题。

重点难点:本章的重点是一维数组、二维数组和字符数组的定义、初始化、元素引用,字符串处理函数的使用。本章的难点是字符串与字符数组的区别,指针数组和数组元素的指针法引用。

核心考点:数组的定义、初始化和数组元素的引用方法,一维数组、二维数组和字符数组的实际应用,字符串的处理方法。

4.2 典型题解析

【例4.1】以下对一维数组a的定义中正确的是()。A. char a(10);B. int a[0..100];

C. inta[5]; D. intk=10;int a[k];解析:一维数组定义的一般形式为:

类型标识符 数组名[常量表达式]

其中,常量表达式可以是任意类型,一般为算术表达式,其值表示数组元素的个数,即数组长度。

答案:C

【例4.2】以下对一维数组的定义中不正确的是()。 A. double x[5]={2.0,4.0,6.0,8.0,10.0};

62

B. inty[5]={0,1,3,5,7,9};

C. char ch1[ ]={"1", "2", "3", "4", "5"}; D. charch2[ ]={"\\x10", "\\xa", "\\x8"};

解析:可以对一维数组的全部元素或部分元素赋初值。在对全部数组元素初始化时,数组长度可以省略。若数组长度没有省略,则初始化列表中值的个数不能超过数组的长度。

答案:B

【例4.3】以下对二维数组的定义中正确的是()。

A.int a[4][]={1,2,3,4,5,6};B. inta[][3];

C.int a[][3]= {1,2,3,4,5,6}; D. int a[][]={{1,2,3},{4,5,6}};

解析:定义二维数组时,若按一维格式初始化,则第一维的长度可以省略,此时,系统可根据初始化列表中值的个数及第二维的长度计算出省略的第一维长度,但无论如何,第二维的长度不能省略。没有初始化时,每一维的长度都不能省略。

答案:C

【例4.4】假定一个int型变量占用两个字节,若有定义:int x[10]={0,2,4}; 则数组x在内存中所占字节数是()。

A. 3B. 6 C. 10 D. 20

解析:一维数组在内存中所占的字节数为:数组长度×sizeof(元素类型)。 答案:D

【例4.5】以下程序的输出结果是()。 main()

{ int a[4][4]={{1,3,5},{2,4,6},{3,5,7}};

printf(\}

A. 0650 B. 1470 C. 5430 D. 输出值不定

解析:定义的数组a为4行4列,且前三行三列元素已初始化,根据C语法规定,未初始化的元素值为0。

答案:A

【例4.6】以下程序的输出结果是()。 main()

{ int m[][3]={1,4,7,2,5,8,3,6,9};int i,j,k=2; for(i=0;i<3;i++){ printf(\}

A. 4 5 6 B. 2 5 8C. 3 6 9D. 7 8 9

解析:根据初始化列表中值的个数和第二维的长度,可求得第一维长度为3。第一行的元素值依次为1,4,7;第二行元素值依次为2,5,8;第三行元素值依次为3,6,9。循环执行三次,依次输出行标为2的三个元素,即第三行的3个元素。

答案:C

【例4.7】以下程序的输出结果是()。 main()

{ int b[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=0; for(i=0;i<3;i++)for(j=i;j<=i;j++) t=t+b[i][b[j][j]]; printf(\

63

}

A. 3 B. 4C. 1D. 9

解析:程序中,引用的b数组元素的行下标为循环变量i,列下标为数组元素b[j][j]。外层循环共进行3次,对于每次外循环,内层循环只执行一次(即j=i),所以变量t 的值为元素b[0][b[0][0]]、b[1][b[1][1]]、b[2][b[2][2]]的和。由于数组元素b[0][0]、b[1][1]、b[2][2]的值分别为0、1、2,所以t的值为:0+0+1+2=3。

答案:A

【例4.8】若有定义:int a[2][4];,则引用数组元素正确的是()。 A. a[0][3] B. a[0][4] C. a[2][2]D. a[2][2+1]

解析:引用二维数组元素时,行下标范围为0~行数-1,列下标范围为0~列数-1。 答案:A

【例4.9】若有定义:int aa[8];,则不能代表数组元素aa[1]地址的是( ) 。 A. &aa[0]+1 B. &aa[1]C. &aa[0]++D. aa+1

解析: &aa[1]、&aa[0]+1和aa+1都是数组元素aa[1]的地址。由于&aa[0]是地址值常量,不能进行自加、自减运算,所以选项C不能代表aa[1]地址。

答案:C

【例4.10】下列程序执行后的输出结果是() 。 main()

{ int a[3][3], *p,i;p=&a[0][0]; for(i=0;i<9;i++) p[i]=i+1; printf(\}

A. 3B. 6C. 9D. 随机数

解析:二维数组的物理存储结构为一维,即按行序顺序存储在连续存储空间中。

本题中,p为指向数组元素的指针变量,初始时,p指向a[0][0]。通过指针p实现对对二维数组元素按行依次赋值。a[1][2]即p[5],其值6。

答案:B

【例4.11】下列程序的输出结果是()。 main()

{ char a[10]={9,8,7,6,5,4,3,2,1,0},*p=a+5; printf(\}

A. 运行出错B. a[4]的地址 C. 5D. 3

解析:初始时,p指向a[5]。由于单目运算符的结合方向为右结合,所以,*--p等价于*(--p),即先执行--p,p指向a[4],再输出a[4]的值(5)。

答案:C

【例4.12】若有如下定义,则b的值是()。

int a[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],b=p[5];

A. 5 B. 6C. 8 D. 9

解析:p指向a[3],即p=a+3;b=p[5],即b=*(p+5)。因此,b=*(a+8)=a[8]=9。答案:D

【例4.13】若二维数组y有m列,则排在y[i][j]前的元素个数为() A.j*m+iB.i*m+j C.i*m+j-1D.i*m+j+1 解析:C语言中的二维数组按行存储。行标为i的元素前共有i行元素,元素个数为i*m,

64

每行列标为j的元素前共有j个元素。因此,y[i][j]前的元素个数为i*m+j。

答案:B

【例4.14】若有定义:char a[10],*b=a;,则不能给数组a输入字符串”This is a book”的语句是()。

A. gets(a)B. scanf(\

解析: gets为字符串输入函数,调用该函数时需给出字符串的存储地址,以回车作为字符串输入的结束,并将回车符转换成为’\\0’。而scanf函数则以回车、空格或跳格作为串输入结束,因此scanf不能输入有空格的字符串。

答案:B

【例4.15】以下程序执行后的输出结果是()。

A. 2B. 3C. 4 D. 5 #include \main( )

{ char *p[10]={ \printf(\} 解析:定义了一个含有10个元素的字符指针数组p,并对前5个元素初始化,其中p[4]指向字符串\,其串长为2。

答案:A 【例4.16】若定义一个名为s且初值为\的字符数组,则下列定义错误的是()。 A.char s[]={’1","2","3","\\0 "};B.char s[]={\

C.char s[]={\.char s[4]={"1","2","3"}; 解析:字符数组中所存字符中有’\\0’时,字符数组才能作为字符串使用。选项A是用字符常量对字符数组初始化,且最后一个元素的值为字符串结束标记(’\\0’),所以数组s中存放的就是字符串\;选项D是用字符常量对部分元素初始化,根据 C语言的规定,系统为第四个元素赋初值为空值,即"\\0",所以数组s中存放的也是字符串\123\。选项B是直接使用字符串\对字符数组初始化;选项C也是使用字符串初始化,但是字符串不是\,而是\\n\,数组长度为5。

答案:C

【例4.17】下列程序的功能是输入N个实数,然后依次输出前l个实数和、前2个实数和、…、前N个实数和。填写程序中缺少的语句。

#defineN10 main()

{ float f[N],x=0.0;int i; for(i=0;i

{①;

printf(\} }

解析:分析程序可知,第一个循环实现数据的输入,第二个循环实现求和并输出,程序中缺少的是计算前i个实数和并存入变量x的语句。由于每次循环的x值都是在前一次循环的基础上作累加,即前i个实数和(x)等于前i-1个实数和(x)加上第i个实数f[i-1],

65

因此,①处应填写:x=x+f[i-1];。

答案:x=x+f[i-l]; 或x+=f[i-l]; 【例4.18】下面程序的功能是检查一个N×N矩阵是否对称(即判断是否所有的a[i][j]等于a[j][i])。请填空。 #define N 4

main()

{ int a[N][N]={1,2,3,4,2,2,5,6,3,5,3,7,4,6,7,4}; int i,j,found=0; for(j=0;j

for( ①;i

if(found) printf(\else printf(\}

解析:设置判断标志found,初始值为0。对于主对角线以上每个元素,分别与对称元素比较,若不相等,则将found置为1并结束比较。循环结束后,根据found的值确定是否对称。

答案:① i=j+1 ② found=1

【例4.19】编写程序,从一整型数组a的第一个元素开始,每三个元素求和并将和值存入到另一数组中(最后一组可以不足3个元素),最后输出所求的所有和值且每行输出5个值。

解析:用于存储和值的数组设为b,所有元素都初始化为0。从数组a的第一个元素开始,进行累加操作b[j]+=a[i],累加过程中,数组a的下标每自加3次,数组b的下标自加1次。重复此操作,直到数组a的所有元素累加完为止。输出时,每输出5个元素输出一次换行符\。

#define N20 #define MN/3+1 main()

{ inta[N],i,j,b[M]={0};

for(i=0;i

if((i+1)%3==0) j++; }

if(N%3==0) j--; for(i=0;i<=j;i++) { printf(\

if((i+1)%5==0) printf(\} }

【例4.20】已知数组b中存放N个人的年龄,编写程序,统计各年龄段的人数并存入数

66

推荐阅读:

    想了解更多实用资料的资讯,请访问:实用资料
    下载文档

    看过《C语言数组试题》的人还看了以下文章

    延伸阅读

    合同编号:_________定作方:_________承揽方:_________一、项目名称、任务量、酬金、完成期限、备注二、项目的内容及质量技术要求三、技术资料、图纸提供办法及保密要求四、验收标准、

    公司年度安全工作总结篇1  一、建立考核机制,落实安全责任我们把安全工作切实摆在各项工作的首位,与各架子队层层签订安全生产目标管理责任书,各部门,架子队一把手是安全生产的第一责任人,安全奖惩等的兑现和

    年检自查报告在当下社会,报告使用的频率越来越高,报告具有双向沟通性的特点。我敢肯定,大部分人都对写报告很是头疼的,下面是小编为大家整理的年检自查报告,欢迎大家分享。 年检自查报告1 为了认真贯彻执行《

    纪委,又称纪检委,是&ldquo;纪律检查委员会&rdquo;的简称(CommissionforDisciplineInspection)。纪委属于中国共产党的纪律检查机关,不属于政府部门。中央纪委是

    如今创建文明城市也融入到各行各业和人们的生活工作中,让我们从自我做起。下面是本站为大家整理的住建系统创建文明城市实施方案,供大家参考选择。  住建系统创建文明城市实施方案  为了全面推动我镇创建全国文

    当您看见这信息时,幸运已降临到你头上,财神已进了您家门,荣华富贵已离您不远,祝福您朋友元旦快乐!本站精心为大家整理了元旦短信 经典元旦祝福短信,希望对你有帮助。  元旦短信 经典元旦祝福短信  1.

    在疫情防控关键时刻,如何在基层做好疫情防控是一个令人头疼的问题,必须做到&ldquo;早发现、早报告、早隔离、早诊断、早治疗&rdquo;。本站为大家整理的相关的幼儿园疫情报告工作制度,供大家参考选择

    会计专业的大学生实习报告这是第一次进行会计的实习,因为学校课程安排的原因,目前结束的大二的功课,只学习了基础会计这一门会计专业课,所以在去实习之前有些担心自己会做不来。实习的第一天,刚好是工人发工资的

    计算机实验报告(通用3篇)计算机实验报告篇1一、实验题目文件和文件夹的管理二、实验目的1.熟悉WindowsXP的文件系统。2.掌握资源管理器的使用方法。3.熟练掌握在WindowsXP资源管理器下,

    很多人在看完电影或者活动之后都喜欢写一些观后感,这样能够让我们对这些电影和活动有着更加深刻的内容感悟。观后感对于我们来说是非常有帮助的,那么我们该如何写好一篇观后感呢?下面我就给大家讲一讲优秀的观后感