当前位置:文档之家› C语言复习题及答案 第七章 数组

C语言复习题及答案 第七章 数组

第七章数组 (8学时)学习目的与要求:1 、重点掌握一维数组的定义和引用;2 、基本掌握二维数组的定义和引用;3 、重点掌握字符型数组的定义与引用;4 、能正确使用字符串处理函数;5 、学会使用数组解决实际问题。

重点:1 、一维数组的定义与引用;2 、二维数组的定义与引用;3 、字符数组的定义与引用;第1讲知识归纳:1、一维数组的定义:类型说明符数组名[ 常量表达式] ;(1) (1)数组名后必须用方括弧[ ] ,用其他括弧均错误;(2) 方括弧中的常量表达式表示数组的元素个数;(3) 方括弧中的常量表达式,必须是能计算出具体数值,且不改变的常量,不能是变量;2、一维数组的引用:数组名[ 下标] //下标从0开始,可以是整型常量或整型表达式;(1) 注意:数组元素引用时,不要超出数组范围;如int a[10] ;//可以引用的数组元素为a[0]……a[9] , a[10] 不是本数组元素;3、一维数组的初始化:(1) (1)可以在定义数组后,立刻赋值;如int a [3] = { 1,3, 5} ;但下面这样是错误的:int a[3] ;a = { 1,3, 5} ;(2) (2)可以给数组的部分元素赋值,不赋值的元素,默认值为int 0, char, ‘’, float 0.0 ;如int a [3]= {1,3 } ; //a[0] =1 ; a[1]= 3 ; a[2]= 0 ;(3) 在对数组全部元素赋初值时,可以不指定元素个数;(4) 可以在循环控制下,给数组各元素赋值;如:int a[10] ;for ( i=0 ; i <10 ;i ++ )a [ i ] = i ;基础训练(A)一、选择题1、在c语言中,引用数组元素时,其数组下标的数据类型允许是()。

A)整型常量B)整型表达式C)整型常量或整型表达式D)任何类型的表达式2、要说明一个有10个int元素的数组,应当选择语句()。

A) int a[10]; B) int a(10); C) int a[9] D) int a[11]3、以下对数组的正确定义是:()。

A) float b[5.0] B) float b[5] C) float b(5) D) float b[]4、对以下说明语句的正确理解是()。

int a[10]={6,7,8,9,10};A)将5个初值依次赋给a[1]至a[5]B)将5个初值依次赋给a[0]至a[4]C)将5个初值依次赋给a[6]至a[10]D)因为数组长度与初值的个数不相同,所以此语句不正确5、已知:int a[10];则对a数组元素的正确引用是()。

A) a[10] B) a[3.5] C) a(5) D) a[10-10]6、以下能对一维数组a进行正确初始化的语句是()。

A) int a[10]=(0,0,0,0,0); B)int a[10]={}C) int a[]={0}; D) int a[10]={10*1};7、以下能对一维数组a进行正确初始化的语句是()。

A) A)int a[5]; B)int a[3];a={0,1,2,3,4}; for(i=0;i<3;i++)scanf(“%d”,a);C) int a[3]={0,1,2,3}; D) int a[5];for(i=0;i<5;i++)scanf(“%d”,&a[i]);1、C2、A3、B4、B5、D6、C7、D二、填空题1、构成数组的各个元素必须具有相同的类型。

C语言中数组的下标必须是整正数、0或整型表达式。

如果一维数组的长度为n ,则数组下标的最小值为0,最大值为n-1。

2、在C语言中,一维数组的定义方式为:类型说说明符数组名[常量表达式]。

3、已知数组b定义为int b[ ]={9,6,3};,则b的各元素的值分别是,最小下标是,最大下标的4、在C5、已知数组T为一有10T中的10个元素的值的语句为:for (j=请补充完整下面的语句:for(j=9;j>=0;j- -)三、综合题1、下面程序(,请指出存在错误的行号(3)1 main()2 {3 int a[3]={3*0};4 int i;5 for(i=0;i<3;i++) scanf("%d",&a[i]);6 for(i=1;i<3;i++) a[0]=a[0]+a[i];7 7printf("%d\n",a[0]);8 }2、下面程序(每行程序前面的数字表示行号),请指出存在错误的行号(5)1 1main()2 2{3 3int a[3];4 4int i;5 5scanf(“%d”,&a);6 6for(i=0;i<3;i++) a[0]=a[0]+a[i];7 7printf(“a[0]=%d”,a[0]);8 8}3、下面程序(每行程序前面的数字表示行号),请指出存在错误的行号(7)1 1main()2 2{3 3int a[3];4 4int i;5 5for (i=0;i<3;i++) scanf(“%d”,&a[i]);6 6for(i=1;i<3;i++) a[0]=a[0]+a[i]);7 7printf(“%d\n”,a);8 8}第2讲知识归纳:1、二维数组的定义:类型说明符数组名[ 常量表达式1 ][常量表达式2] ;(1)常量表达式1------可以形象理解为行数;常量表达式2-----可以形象理解为列数;(2) 二维数组中元素存放顺序是:先存放第一行的元素,再存放第二行的元素,依次类推;2、二维数组的引用:数组名[ 下标] [ 下标]//下标从0开始,可以是整型常量或整型表达式;(1) 注意:数组元素引用时,不要超出数组范围;如int a[3 ] [4] ;//可以引用的数组元素为a[0][0]……a[2][3] , a[3][4]不是本数组元素;(2) 可以在循环控制下,给二维数组各元素赋值;如:int a[3] [4];for ( i=0 ; i <3 ;i ++ )for ( j=0 ; j<4;j++)a [ i ] = i * j;3、二维数组的初始化:(1)可以在定义数组后,立刻赋值;如int a [3][4] = { 1,3, 5,7,9,11} ;但下面这样是错误的:int a[3][4] ;a = { 1,3, 5,7,9,11} ;(2) (2)可以给数组的部分元素赋值,不赋值的元素,默认值为int 0, char, ‘’, float 0.0 ;(3) 在对数组全部元素赋初值时,可以省略行数,但不能省略列数;基础练习(A)一、选择题1、在C语言中,二维数组元素在内存中的存放顺序是()。

A)按行存放B)按列存放C)由用户自己定义D)由编译器决定2、以下对二维数组a的正确说明是()。

A)int a[3][] B) float a(3,4) C) double a[1][4] D) float a(3)(4)3、已知:int a[3][4];则对数组元素引用正确的是()。

A)a[2][4] B)a[1,3] C) a[2][0] D) a(2)(1)4、已知:int a[3][4]={0};则下面正确的叙述是()。

A)只有元素a[0][0]可得到初值0B)此说明语句是错误的C)数组a中的每个元素都可得到初值,但其值不一定为0D)数组a中的每个元素均可得到初值05、以下正确的语句是()。

A)int a[1][4]={1,2,3,4,5}; B) float x[3][]={{1},{2},{3}};C) long b[2][3]={{1},{1,2},{1,2,3}}; D) double y[][3]={0};6、以下能对二维数组元素a进行正确初始化的语句是()。

A)int a[2][]={{1,0,1},{5,2,3}};B) int a[][3]={1,2,3},{4,5,6}};C) int a[2][4]={{1,2,3},{4,5},{6}};D) int a[][3]={{1,0,1},{},{1,1}};1、A2、C3、C4、D5、D6、B二、填空题下面的程序是求出数组a的两条对角线上的元素之和。

#include "stdio.h"main(){ int a[3][3]={{1,3,6},{7,9,11},{14,15,17}},sum1=0,sum2=0,i,j;for (i=0;i<3;i++)for (j=0;j<3;j++)if (i==j) sum1=sum1+a[i][j];for (i=0;i<3;i++)for ( ; ; j--)if (i+j==2)sum2=sum2+a[i][j];printf("sum1=%d,sum2=%d\n",sum1,sum2);}1、j=22、j>=i三、编程题1、在一个二维数组中形成并输出如下矩阵:1 2 33 2 11 1 1main(){ int a[5][5],i,j;printf("input 5*5:\n");for (i=0; i<5; i++)for (j=0; j<5; j++)scanf("%d",&a[i][j]);for (i=0;i<5; i++){ for (j=0; j<5; j++)printf("%d",a[i][j]);printf("\n");}}2、有一个3*4的矩阵,求其中的最大元素的值。

main(){ int a[3][4],i,j,max;for (i=0;i<3; i++)for (j=0; j<4; j++)scanf("%d",&a[i][j]);max=a[0][0];for (i=0;i<3;i++)for (j=0;j<4;j++)if (a[i][j]>max) max=a[i][j];printf("max=%d\n",max);}第3讲知识归纳:1、字符数组的定义与引用:类型说明符数组名[ 常量表达式] ;(1) 与一维数组、二维数组定义、引用相同,只是类型说明符固定为:char2、字符数组的初始化:(1)逐字符赋值如char c1 [10] = { ‘W’,’e’,’l’,’c’,’o’,’m’,’e’} ;但下面这样是错误的:char c1 [10] ;c1 = { ‘W’,’e’,’l’,’c’,’o’,’m’,’e’} ;(2) 字符串赋值和字符串结束标志如char c1[10 ] = “ Welcome ” ;但下面这样是错误的:char c1 [10] ;c1 = “ Welcome ” ;注意:系统会自动在字符串末尾加一个结束标志’\0’ , 所以,定义字符数组时需要在字符个数基础上,多定义一个字节存储空间,存放结束标子;3、字符数组的输入输出:(1) 逐个字符输入输出。

相关主题