C语言程序设计上机指导与同步训练 (3)在对数组全部元素赋初值时,可以省略第一个常量表达式,但不能省略第二个常 量表达式。 基础训练(A) 选择题 1.在C语言中,二维数组元素在内存中的存放顺序是()。 A)按行存放 B)按列存放 C)由用户自己定义 D)由编译器决定 2.以下对二维数组a的正确说明是 A)int a[30 ) float a(3, 4) C)double a[ 1 [4 D)float a(3)(4) 3.已知:inta[3[4则对数组元素引用正确的是() A)a[2][4I B)a[1,3 C)a[20 D)a(2)(1) 4.已知:inta[3I4}={0};则下面正确的叙述是() A)只有元素a[]0可得到初值0 B)此说明语句是错误的 C)数组a中的每个元素都可得到初值,但其值不一定为0 D)数组a中的每个元素均可得到初值0 5.以下正确的语句是()。 A)inta[l[4={1,2,34,5 B) float x[3l={{1},{2},{3} C) long b2[3={{1},{1,2},{1,2,3}; D)double y03]=(0) 6.以下能对二维数组元素a进行正确初始化的语句是() A)inta[2={{1,0,1},{5,2,3} B)inta[}={1,2,3},4,5,6} C)inta[24}={{1,2,3},14,5},{6}; D)inta[3}={1,0,1},{},{1,1}; 填空题 下面的程序是求出数组a的两条对角线上的元素之和。 #include " stdio. h inta[3][3]={1,3,6},{7,9,11},{14,15,17}},sum1=0,sum2=0,i,j m1+a[i][j] for(i=0;i<3;i++ printf ("suml=gd, sum2=%d\n", suml, sum2)
·182· C 语言程序设计上机指导与同步训练 ·182· (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]可得到初值 0 B) 此说明语句是错误的 C) 数组 a 中的每个元素都可得到初值,但其值不一定为 0 D) 数组 a 中的每个元素均可得到初值 0 5. 以下正确的语句是( )。 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}}; 二、填空题 下面的程序是求出数组 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); }
第二部分¢语言程序设计同步训练 183· 三、编程题 1.在一个二维数组中形成并输出如下矩阵 2.有一个3*4的矩阵,找出其中的最大元素。 能力提高(B) 、选择题 1.以下各组选项中,均能正确说明二维实型数组a的是() A)float a3[4]: B)float a(3, 4) float a0[4] float a[3[4: float a[3U={1},0}} float a[U={0},(0}} C)float a[3] D)float a34; float a[[4={0},0} float a[30; float a[[4F={0},0},{0}; 2.以下不能对二维数组a进行正确初始化的语句是()。 A)inta[2[3}={0} B) int a[3}={{1,2},{0}; C)nta[2[3}{{1,2},{34},{5,6} D)inta[3}={1,2,3,4,56} 3.已知:inta[3]={1,2,3,4.56,7};则数组a的第一维的大小是() A)2 B)3 D)无确定值 4.若二维数组a有m列,则在a[之前的元素个数为 A)jm+ B)Im D)i*m+j+I 、写出程序的运行结果 1.下面程序的运行结果是_。 main() inta[6][6],i,j; for(i=1;i<6;i++) for(j=1;j<6,j++) a[i][=(1/j)*(j/i); for(i=1;i<6;i++) for(j=1;j<6;j++) printf("82d",a[i][j]) printf("\n”);} 三、填空题 1.下面的程序段的功能是产生如下形式的杨辉三角形
第二部分 C 语言程序设计同步训练 ·183· ·183· 三、编程题 1. 在一个二维数组中形成并输出如下矩阵。 1 2 3 3 2 1 1 1 1 2. 有一个 3*4 的矩阵,找出其中的最大元素。 能力提高(B) 一、选择题 1. 以下各组选项中,均能正确说明二维实型数组 a 的是 ( )。 A) float a[3][4]; B) float a(3,4); float a[][4]; float a[3][4]; float a[3][]={{1},{0}}; float a[][]={{0},{0}}; C) float a[3][4]; D) float a[3][4]; float a[][4]={{0},{0}}; float a[3][]; float a[][4]={{0},{0},{0}}; float a[][4]; 2. 以下不能对二维数组 a 进行正确初始化的语句是( )。 A) int a[2][3]={0}; B) int a[][3]={{1,2},{0}}; C) int a[2][3]={{1,2},{3,4},{5,6}}; D) int a[][3]={1,2,3,4,5,6}; 3. 已知:int a[][3]={1,2,3,4,5,6,7};则数组 a 的第一维的大小是 ( )。 A) 2 B) 3 C) 4 D) 无确定值 4. 若二维数组 a 有 m 列,则在 a[i][j]之前的元素个数为 ( )。 A) j*m+I B) i*m+j C) i*m+j-1 D) i*m+j+1 二、写出程序的运行结果 1. 下面程序的运行结果是__。 main() { int a[6][6],i,j; for(i=1;i<6;i++) for(j=1;j<6,j++) a[i][j]=(i/j)*(j/i); for(i=1;i<6;i++) {for(j=1;j<6;j++) printf("%2d",a[i][j]); printf("\n"_); } } 三、填空题 1. 下面的程序段的功能是产生如下形式的杨辉三角形
C语言程序设计上机指导与同步训练 136 1 #define N 11 main () I int a[N] [N],i, j a[i[1]=1; a[i][i]=1; i<N;i++) for a[i][j]= +a[i-1][j]; 四、编程题 1.设计一程序,它要求输入一个5行5列的矩阵,计算并显示输出该矩阵最外圈元素 的和值。 2.输入二维数组a[3J[5],打印其中最小值和最大值及其对应的行列位置 第3讲 知识归纳 1.字符数组的定义与引用 类型说明符数组名[常量表达式] (1)与一维数组、二维数组定义、引用相同,只是类型说明符固定为:char 2.字符数组的初始化 (1)逐字符赋值 如 char cl[10={W,e',"l’e,’o,m','e”} 但下面这样是错误的: char cl [101 cl={W",e,l',co’,'m',’e’} (2)字符串赋值和字符串结束标志 如 char cl[10]=“ Welcome”; 但下面这样是错误 char cl [10 cl=“ Welcome”; 注意:系统会自动在字符串末尾加一个结束标志”0°,所以,定义字符数组时需要在字 符个数基础上,多定义一个字节存储空间,用于存放结束标志
·184· C 语言程序设计上机指导与同步训练 ·184· 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 …… …… #define N 11 main() { int a[N][N],i,j; for (i=1;i<N;i++) { a[i][1]=1; a[i][i]=1; } for ( ; i<N; i++) for (j=2; ;j++) a[i][j]= +a[i-1][j]; …… …… } 四、编程题 1. 设计一程序,它要求输入一个 5 行 5 列的矩阵,计算并显示输出该矩阵最外圈元素 的和值。 2. 输入二维数组 a[3][5],打印其中最小值和最大值及其对应的行列位置。 第 3 讲 知识归纳 1. 字符数组的定义与引用 类型说明符 数组名[常量表达式]; (1) 与一维数组、二维数组定义、引用相同,只是类型说明符固定为 :char 2. 字符数组的初始化 (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’ , 所以,定义字符数组时需要在字 符个数基础上,多定义一个字节存储空间,用于存放结束标志