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

当前位置:爱学范文网>>实用资料>>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、积极配合学校、中文学院及各位领导、教授和辅导员分配的工作,认真负责并讲求效率地完成任务,遇到困难时不退缩,寻找有效的方法尽快解决问题。2、在大型活动中要起到带头和组织的作

    一、为了提高我校教师坚守职业道德规范的自觉性,树立依法执教、敬业奉献、为人师表、服务育人的行业新风,努力提高师德师风建设的整体水平。努力争办人民满意的教育,争创人民满意的学校,争做人民满意的教师。岩头

    安全生产月工作总结篇1  11月15日至12月15日为我公司的安全生产月,变电站围绕“夯实基础、提高素质、树立标杆、争创一流”的主题,开展了丰富多彩、形式多样的具体行动:通过看板形式宣传安全第一、预防

    前台文员年度个人工作总结篇1  岁末年初,回顾过去,展望未来!在过去的一年里,在公司的指导下,在部门领导的关心和帮助下,在同事之间的友好合作下,我在工作和学习上取得了很大的进步。  前台是展示公司形象

    2023承揽系统合同范本(通用16篇) 2023承揽系统合同范本 篇1_________________________(以下简称甲方)__________________________(以下简称乙

    本页是爱学范文网最新发布的《通用版中国农民丰收节心得体会优秀范文5篇》的详细范文参考文章,感觉很有用处,这里给大家转摘到爱学范文网。通用版中国农民丰收节心得体会优秀范文5篇傍晚你在沙发上慵懒的

    四年级语文教师家长会示范发言(一般3)在我们平常的日常生活中,演讲可以运用的场合越来越多,演讲需要内容充实、条理清晰、重点突出。你的演讲稿是怎么写的?以下是小编收集的四年级语文教师家长会的发言样本。欢

    班主任培训心得体会(31篇)班主任培训心得体会篇1周日有幸参加__班主任培训,聆听了专家的讲座,使我对班主任工作有了更深刻的认识,学到了一科学的管理方法,领会了一些解放自己的管理理念,使自己对

    财产保险合同格式(涉外)一、_____财产_____财产指在本_____单明细表中列明的财产及费用。经被_____人特别申请,并经本公司书面同意,下列物品及费用经专业人员或公估部门鉴定并确定价值后,亦

    为了确定工作或事情顺利开展,常常需要预先制定方案,方案是为某一行动所制定的具体行动实施办法细则、步骤和安排等。大家想知道怎么样才能写一篇比较优质的方案吗?以下是小编给大家介绍的方案范文的相关内容,希望