




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C 语言复习题 1 第七章第七章 数组数组 (8(8 学时学时) ) 学习目的与要求:学习目的与要求: 1 、重点掌握一维数组的定义和引用; 2 、基本掌握二维数组的定义和引用; 3 、重点掌握字符型数组的定义与引用; 4 、能正确使用字符串处理函数; 5 、学会使用数组解决实际问题。 重点:重点: 1 、一维数组的定义与引用; 2 、二维数组的定义与引用; 3 、字符数组的定义与引用; 第第 1 讲讲 知识归纳知识归纳: 1、一维数组的定义、一维数组的定义:类型说明符 数组名 常量表达式 ; (1) (1) 数组名后必须用方括弧 ,用其他括弧均错误 ; (2) 方括弧中的常量表达式表示数组的
2、元素个数; (3) 方括弧中的常量表达式,必须是能计算出具体数值,且不改变的常量,不能是变量; 2、一维数组的引用:一维数组的引用: 数组名 下标 /下标从 0 开始,可以是整型常量或整型表达式; (1) 注意:数组元素引用时,不要超出数组范围 ; 如 int a10 ; /可以引用的数组元素为 a0a9 , a10 不是本数组元素; 3、一维数组的初始化:、一维数组的初始化: (1) (1) 可以在定义数组后,立刻赋值; 如 int a 3 = 1,3, 5 ; 但下面这样是错误的: int a3 ; a = 1,3, 5 ; (2) (2) 可以给数组的部分元素赋值 ,不赋值的元素,默认值
3、为默认值为 int 0, char, , float 0.0 ; 如 int a 3= 1,3 ; /a0 =1 ; a1= 3 ; a2= 0 ; (3) 在对数组全部元素赋初值时,可以不指定元素个数; (4) 可以在循环控制下,给数组各元素赋值; 如:int a10 ; for ( i=0 ; i 10 ;i + ) a i = i ; 基础训练基础训练(A)(A) 一、一、 选择题 1、在 c 语言中,引用数组元素时,其数组下标的数据类型允许是( )。 A)整型常量 B)整型表达式 C)整型常量或整型表达式 D)任何类型的表达式 2、要说明一个有 10 个 int 元素的数组,应当选择语
4、句( ) 。 A) int a10; B) int a(10); C) int a9 D) int a11 3、以下对数组的正确定义是: ( ) 。 A) float b5.0 B) float b5 C) float b(5) D) float b 4、对以下说明语句的正确理解是( ) 。 int a10=6,7,8,9,10; A)将 5 个初值依次赋给 a1至 a5 C 语言复习题 2 B)将 5 个初值依次赋给 a0至 a4 C)将 5 个初值依次赋给 a6至 a10 D)因为数组长度与初值的个数不相同,所以此语句不正确 5、已知:int a10;则对 a 数组元素的正确引用是( )
5、。 A) a10 B) a3.5 C) a(5) D) a10-10 6、以下能对一维数组 a 进行正确初始化的语句是( ) 。 A) int a10=(0,0,0,0,0); B)int a10= C) int a=0; D) int a10=10*1; 7、以下能对一维数组 a 进行正确初始化的语句是( ) 。 A) A) int a5; B)int a3; a=0,1,2,3,4; for(i=0;i3;i+) scanf(“%d”,a); C) int a3=0,1,2,3; D) int a5; for(i=0;i5;i+) scanf(“%d”,&ai); 1、C 2、A
6、3、B 4、B 5、D 6、C 7、D 二、二、 填空题 1、构成数组的各个元素必须具有相同的类型类型。C 语言中数组的下标必须是整正数、0 或整整型表达式型表达式。如果一维数组的长度为 n ,则数组下标的最小值为 0,最大值为 n-1。 2、在 C 语言中,一维数组的定义方式为:类型说说明符 数组名常量表达式常量表达式。 3、已知数组 b 定义为 int b =9,6,3; ,则 b 的各元素的值分别是 , 最小下标是 ,最大下标的 。9,6,3 0 , 2 4、在 C 语言中数组名是一个常量常量,不能对其进行加、减及赋值操作。 5、已知数组 T 为一有 10 个单元的整型数组,正序输出 T
7、 中的 10 个元素的值的语句为: for (j=0;j=0;j- -)printf(“%d”,Tj); 三、三、 综合题 1、下面程序(每行程序前面的数字表示行号),请指出存在错误的行号(3) 1 main() 2 3 int a3=3*0; 4 int i; 5 for(i=0;i3;i+) scanf(%d,&ai); 6 for(i=1;i3;i+) a0=a0+ai; 7 7 printf(%dn,a0); 8 2、下面程序(每行程序前面的数字表示行号),请指出存在错误的行号(5) 1 1 main() 2 2 3 3 int a3; 4 4 int i; 5 5 scanf
8、(“%d”,&a); 6 6 for(i=0;i3;i+) a0=a0+ai; 7 7 printf(“a0=%d”,a0); 8 8 3、下面程序(每行程序前面的数字表示行号),请指出存在错误的行号(7) 1 1 main() 2 2 3 3 int a3; 4 4 int i; 5 5 for (i=0;i3;i+) scanf(“%d”,&ai); 6 6 for(i=1;i3;i+) a0=a0+ai); 7 7 printf(“%dn”,a); C 语言复习题 3 8 8 第第 2 讲讲 知识归纳知识归纳: 1、二维数组的定义:、二维数组的定义: 类型说明符 数组名
9、常量表达式 1 常量表达式 2 ; (1) 常量表达式 1-可以形象理解为 行数; 常量表达式 2-可以形象理解为 列数 ; (2) 二维数组中元素存放顺序是:先存放第一行的元素,再存放第二行的元素,依次类推; 2、二维数组二维数组的引用:的引用: 数组名 下标 下标 /下标从 0 开始,可以是整型常量或整型表达式; (1) 注意:数组元素引用时,不要超出数组范围 ; 如 int a3 4 ; /可以引用的数组元素为 a00a23 , a34不是本数组元素; (2) 可以在循环控制下,给二维数组各元素赋值; 如:int a3 4; for ( i=0 ; i 3 ;i + ) for ( j=
10、0 ; j4;j+) a i = i * j; 3、二维数组的初始化:二维数组的初始化: (1)可以在定义数组后,立刻赋值; 如 int a 34 = 1,3, 5,7,9,11 ; 但下面这样是错误的: int a34 ; a = 1,3, 5,7,9,11 ; (2) (2) 可以给数组的部分元素赋值 ,不赋值的元素,默认值为默认值为 int 0, char, , float 0.0 ; (3) 在对数组全部元素赋初值时,可以省略行数,但不能省略列数; 基础练习基础练习(A)(A) 一、选择题 1、在 C 语言中,二维数组元素在内存中的存放顺序是( ) 。 A) 按行存放 B)按列存放 C
11、)由用户自己定义 D)由编译器决定 2、以下对二维数组 a 的正确说明是 ( ) 。 A)int a3 B) float a(3,4) C) double a14 D) float a(3)(4) 3、已知:int a34;则对数组元素引用正确的是( ) 。 A)a24 B)a1,3 C) a20 D) a(2)(1) 4、已知:int a34=0;则下面正确的叙述是( ) 。 A)只有元素 a00可得到初值 0 B)此说明语句是错误的 C)数组 a 中的每个元素都可得到初值,但其值不一定为 0 D)数组 a 中的每个元素均可得到初值 0 5、以下正确的语句是( ) 。 A) int a14=
12、1,2,3,4,5; B) float x3=1,2,3; C) long b23=1,1,2,1,2,3; D) double y3=0; 6、以下能对二维数组元素 a 进行正确初始化的语句是 ( ) 。 A) int a2=1,0,1,5,2,3; B) int a3=1,2,3,4,5,6; C) int a24=1,2,3,4,5,6; D) int a3=1,0,1,1,1; 1、A 2、C 3、C 4、D 5、D 6、B 二、填空题 C 语言复习题 4 下面的程序是求出数组 a 的两条对角线上的元素之和。 #include stdio.h main() int a33=1,3,6,
13、7,9,11,14,15,17,sum1=0,sum2=0,i,j; for (i=0;i3;i+) for (j=0;j3;j+) if (i=j) sum1=sum1+aij; for (i=0;i=i 三、编程题 1、在一个二维数组中形成并输出如下矩阵: 1 2 3 3 2 1 1 1 1 main() int a55,i,j; printf(input 5*5:n); for (i=0; i5; i+) for (j=0; j5; j+) scanf(%d,&aij); for (i=0;i5; i+) for (j=0; j5; j+) printf(%d,aij); pri
14、ntf(n); 2、有一个 3*4 的矩阵,求其中的最大元素的值。 main() int a34,i,j,max; for (i=0;i3; i+) for (j=0; j4; j+) scanf(%d,&aij); max=a00; for (i=0;i3;i+) for (j=0;jmax) max=aij; printf(max=%dn,max); 第第 3 讲讲 知识归纳:知识归纳: 1、字符数组的定义与引用:、字符数组的定义与引用: 类型说明符 数组名 常量表达式 ; (1) 与一维数组、二维数组定义、引用相同,只是类型说明符固定为 :char 2、字符数组的初始化、字符数组
15、的初始化: (1)逐字符赋值 如 char c1 10 = W,e,l,c,o,m,e ; 但下面这样是错误的: char c1 10 ; C 语言复习题 5 c1 = W,e,l,c,o,m,e ; (2) 字符串赋值和字符串结束标志 如 char c110 = “ Welcome ” ; 但下面这样是错误的: char c1 10 ; c1 = “ Welcome ” ; 注意:系统会自动在字符串末尾加一个结束标志0 , 所以,定义字符数组时需要在字符个数基础上,多定义一个字节存储空间,存放结束标子; 3 3、字符数组的输入输出:、字符数组的输入输出: (1) 逐个字符输入输出。用格式符%
16、c 输入或输出一个字符;往往与循环结合使用; 如: char c110 ; for ( i=0 ; i7 ; i + ) scanf ( “%c” , &c1 i ); . for ( i =0 ; i7 ; i + ) printf( “%c” , c1 i ); (2)将整个字符串一次输入输出,用格式符%s ; 如: char c110 ; scanf ( “ %s”, c1) ; /数组名代表数组的首地数组名代表数组的首地址址 printf(“%s” , c1); 基础练习基础练习(A)(A) 一、选择题 1、要使字符数组 str 存放一个字符串ABCDEFGH,正确的定义语句是
17、( ) 。 A) char str8=A,B,C,D,E,F,G,H; B) char str8=ABCDEFGH; C) char str =A,B,C,D,E,F,G,H; D) char str =ABCDEFGH; 2、下面是对数组 s 的初始化,其中错误的是 ( ) 。 A) char s5=abc B) char s5=a,b,c; C) char s5=; D) char s5=abcde; 3、对两个数组 a 和 b 进行如下初始化 char a=ABCDEF; char b=A,B,C,D,E,F; 则以下叙述正确的是( ) 。 A) a 与 b 数组完全相同 B) a 与
18、b 长度相同 C) a 和 b 中都存放字符串 D) a 数组比 b 数组长度长 4、下面程序的运行结果是 ( ) 。 char c5=a,b,0,c,0; printf(%s,c); A) ab B) ab C) ab c D) 以上三个答案均有错误 1、D 2、D 3、D 4、B 二、填空题 1、字符数组是用来存放字符字符的数组。字符数组中一个元素存放 1 个字符。 2、在 C 语言中存放字符A需要占用 1 个字节,存放字符串A需要占用 2 个字节。 3、以下语句的输出结果是 C:win98cmd.exe。 printf(%sn,c:win98cmd.exe); 三、程序填空 1、下列程序
19、最多从键盘上输入 99 个字符,遇到n后则退出,遇到空格则换成字符 # ,对其他字符依次原样送入数组 c 中。 #include stdio.h main() int i; C 语言复习题 6 char ch,c100; for (i=0; ;i+) if (ch=getchar()=n) ; if ( ch=i0) printf(%s,s1); if (strcmp(s1,s2)0) printf(%s,s2); if (strcmp(s1,s2)=0) printf(%s%s,s1,s2); 4、执行语句序列 chat str1 =ABCD,str210=XYZxyz; for(int i
20、=0;str2i=str1i;i+) ; 后,数组 str2 中的字符串是 ABCD。 三、程序填空 、下面程序的功能是将一个字符串 str 的内容颠倒过来,请将程序补充完整。 #include string.h main() int i,j,k -1; char str=0123456789; for ( i=0,j=strlen(str) ; ij; i+, j-) k=stri; stri=strj; strj=k; printf(%sn,str); 四、阅读程序,写出执行结果 、# include stdio.h main() char str30; gets(str); printf
21、(%sn,str); 运行程序,输入:Fortran Language 输出结果:Fortran Language 、# include # include main() char str100=How do you do; strcpy (str, is she); printf (%sn,str); 输出结果:is she C 语言复习题 8 链接二级考试链接二级考试 一、一、选择题 1、执行下面的程序段后,变量 k 中的值为( )。 A) 不定值 B) 33 C) 30 D) 10 int k=3, s2; s0=k; k=s1*10; (2000 年 4 月) 2、设有数组定义: ch
22、ar array =China; 则数组 array 所占的空间为( )。 A) 4 个字节 B) 5 个字节 C) 6 个字节 D) 7 个字节 (2000 年 4 月) 3、下列程序执行后的输出结果是( )。 A) you&ne B) you C) me D) err main() char arr24; strcpy(arr,you); strcpy(arr1,me); arr03=& printf(%s n,arr); (2000 年 4 月) 4、执行下列程序时输入:123456789,输出结果是( )。 A) 123,456,789 B) 1,456,789 C)
23、1,23,456,789 D) 1,23,456 main() char s100; int c, i; scanf(%c,&c); scanf(%d,&i); scanf(%s,s); printf(%c,%d,%sn,c,i,s); (2000 年 4 月) 5、有如下程序 main() int n5=0,0,0,i,k=2; for(i=0;ik;i+) ni=ni+1; printf(“%dn”,nk); 该程序的输出结果是( )。 A) 不确定的值 B) 2 C) 1 D) 0 (2000 年 9 月) 1、A 2、C 3、A 4、D 5、D 6、有如下程序 main
24、0 int a33=1,2,3,4,5,6,i,j,s=0; for(i=1;i3;i+) for(j=0;ji;j+) s+=aij printf(“%dn”,s); 该程序的输出结果是( )。 A) 18 B) 19 C) 20 D) 21 (2000 年 9 月) 7、以下程序的输出结果是( )。 A) 1,5,9 B) 1,4,7 C) 3,5,7 D)3,6,9 main() C 语言复习题 9 int i, x33=1,2,3,4,5,6,7,8,9; for(i=0;i3;i+) printf(“%d,”,xi2-i); (2001 年 4 月) 8、以下程序的输出结果是( )。
25、 A) 18 B) 19 C) 20 D)21 main() int a33= 1,2,3,4,5,6 ,i,j,s=0; for(i=1;i3;i+) for(j=0;j=i;j+)s+=aij; printf(“%dn”,s); (2001 年 4 月) 9、以下程序的输出结果是( )。 A) ABCD B) ABCD C) EFG D) EFGH FGH EFG JK IJKL KL IJ O M main() char w10= “ABCD”,”EFGH”,”IJKL”,”MNOP”,k; for(k=1;k=0;i-) ai=10-i; printf(“%d%d%d”,a2,a5,a
26、8); A) 258 B) 741 C) 852 D) 36 (2001 年 9 月) 12、以下数组定义中不正确的是( )。 A) int a23; B) int b3=0,1,2,3; C) int c100100=0; D) int d3=1,2,1,2,3,1,2,3,4; (2001 年 9 月) 13、以下程序的输出结果是( )。 main() int a44=1,3,5,2,4,6,3,5,7; printf(“%d%d%d%dn”,a03,a12,a21,a30; A) 0650 B) 1470 C) 5430 D) 输出值不定 (2001 年 9 月) 14、以下程序的输出结
27、果是( )。 main() char st20= “hello0t”; printf(%d %d n”,strlen(st),sizeof(st); C 语言复习题 10 A) 9 9 B) 5 20 C) 13 20 D) 20 20 (2001 年 9 月) 15、以下程序段的输出结果是( )。 char s=141141abct; printf (%dn,strlen(s); A) 9 B) 12 C) 13 D) 14 (2002 年 4 月) 11、C 12、D 13、A 14、B 15、A 16、以下程序的输出结果是( )。 main() char cf35=AAAA,BBB,CC
28、; printf(%sn,ch1); A) AAAA B) BBB C) BBBCC D) CC (2002 年 4 月) 17、以下程序的输出结果是( )。 main() int b33=0,1,2,0,1,2,0,1,2,i,j,t=1; for(i=0;i3;i+) for(j=i;j=i;j+) t=t+bibjj; printf(%dn,t); A) 3 B) 4 C) 1 D) 9 (2002 年 4 月) 18、有以下程序 main() int aa44=1,2,3,4,5,6,7,8,3,9,10,2,4,2,9,6; int i,s=0 for(i=0;i4;i+) s+=a
29、ai1; printf(“%dn”,s); 程序运行后的输出结果是( )。 A) 11 B) 19 C) 13 D) 20 (2002 年 9 月) 19、有以下程序 main() int p7=11,13,14,15,16,17,18,i=0,k=0; while(i7&pi%2)k=k+pi;i+; printf(%dn,k); 执行后输出结果是( )。 A) 58 B) 56 C) 45 D) 24 (2003 年 4 月) 20、以下能正确定义数组并正确赋初值的语句是( )。 A) int N=5,bNN; B) int a12=1,3; C) int c2=1,2,3,4;
30、D) int d32=1,2,34; (2003 年 4 月) 16、B 17、B 18、B 19、D 20、D C 语言复习题 11 21、有以下程序 main() int m3=1,4,7,2,5,8,3,6,9; int i,j,k=2; for(i=0;i3;i+) printf(%d,mki); 执行后输出结果是( )。 A) 4 5 6 B) 2 5 8 C) 3 6 9 D) 7 8 9 (2003 年 4 月) 22、以下函数的功能是:通过键盘输入数据,为数组中的所有元素赋值。 #define N 10 void arrin(int xN) int i=0; while(iN)
31、 scanf(%d, ); 在下划线处应填入的是( )。 A) x+i B)&xi+1 C)x+(i+) D)&x+i (2003 年 4 月) 23、以下不能正确定义二维数组的选项是( )。 A) int a22=1,2; B) int a2=1,2,3,4; C) int a22=1,2,3; D) int a2=1,2,3,4; (2003 年 9 月) 24、以下能正确定义一维数组的选项是( )。 A) int num ; B) #define N 100 int num N; C) int num0.100; D) int N=100; int numN; (2003
32、 年 9 月) 25、有以下程序 main() char a =a,b,c,d, e, f,g,h,0; int i,j; i=sizeof(a); j=strlen(a); printf(“%d,%db”i,j); 程序运行后的输出结果是( )。 A)9,9 B)8,9 C)1,8 D)9,8 (2002 年 9 月) 21、C 22、C 23、D 24、B 25、D 二、填空题 1、下面 fun 函数的功能是将形参 x 的值转换成二进制数,所得二进制数的每一位数放在一 维数组中返回,二进制数的最低位放在下标为 0 的元素中,其它依此类推。请填空。 fun(int x,int b) int
33、k=0,r; do r=x%2; bk+=r; x/=2 ; while(x); (1996 年 4 月) 2 2 C 语言复习题 12 2、 以下程序用来对从键盘上输入的两个字符串进行比较,然后输出两个字符串中第一个不相同字符的 ASCII 码之差。 例如:输入的两个字符串分别为 abcdef 和 abceef,则输出为-1。请填空。 #include main() char str100,str2100,c; int i,s; printf(n input string 1:n); gest(str1); printf(n input string 2:n); gest(str2); i=
34、0; while(strli=str2i&(str1i!= ) i+; s= ; printf(%dn,s); (1998 年 9 月) 0或或 0 strli-str2i 3、若想通过以下输入语句使 a 中存放字符串 1234,b 中存放字符 5,则输入数据的形式应该是 a=1234 b=5 A 或或 a=1234b=5。 char a10,b; scanf(a=%s b=%c,a,&b); (1999 年 4 月) 4、以下程序的功能是:从键盘上输入若干个学生的成绩,统计计算出平均成绩,并输出低于平均分的学生成绩,用输入负数结束输入。请填空。 main( ) float x
35、1000, sum=0.0,ave, a; int n=0,i; printf(Enter mark:n);scanf(%f,&a); while(a=0.0& n1000) sum+ ; xn= ; n+; scanf(%f,&a); ave= ; printf(Output:n); printf(ave=%fn,ave); for (i=0;in;i+) if printf (“%fn”,xi); (1999 年 9 月) =a a sum/n xiave 5、下面程序的功能是:将字符数组 a 中下标值为偶数的元素从小到大排列,其它元素不变。请填空。 #includ
36、e #include main() char a=clanguage,t; int i, j, k; k=strlen(a); for(i=0; i=k-2; i+=2) for(j=i+2; jaj) t=ai; ai=aj; aj=t; puts(a); printf(n); C 语言复习题 13 (2000 年 4 月) 6、下列程序段的输出结果是 Hello。 main() char b=”Hello,you”; b5=0; printf(“%s n”, b ); (2001 年 4 月) 7、若变量 n 中的值为 24,则 prnt 函数共输出 5 行,最后一行有 4 个数。 voi
37、d prnt(int n, int aa ) int i; for(i=1; i=n;i+) printf(“%6d”, aai); if( !(i%5) ) printf(“n”); printf(“n”); (2001 年 4 月) 8、若已定义:int a10, i;,以下 fun 函数的功能是:在第一个循环中给前 10 个数组 元素依次赋 1、2、3、4、5、6、7、8、9、10;在第二个循环中使 a 数组前 10 个元素 中的值对称折叠,变成 1、2、3、4、5、5、4、3、2、1。请填空。 fun( int a ) int i; for(i=1; i=10; i+) =i; for(i=0; i5; i+) =ai; (2001 年 9 月)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 养老院跌倒老人应急预案(17篇)
- 云南省德宏傣族景颇族自治州2025-2026学年高三上学期开学定位监测历史试题(含答案)
- 山东省烟台市青华中学2024-2025学年八年级上学期第二次阶段测试语文试题
- 湖北省黄冈市2025年高三年级9月调研考试思想政治试题(含解析)
- 2025-2026学年第一学期9月(总第三次)模块诊断数学试题解析版
- 2025年可转债市场展望分析报告:供需矛盾估值支撑
- 巡检工安全培训课件
- 岩石的变化课件
- 输电电缆运检课件
- 小麻雀课件教学课件
- 2025年秋期新部编人教版五年级上册道德与法治教学计划+进度表
- 2025年全国企业员工全面质量管理知识竞赛题库及答案
- 粮食机收减损培训课件
- 超星尔雅学习通《军事理论(中北大学)》2025章节测试附答案
- GB/T 17608-2006煤炭产品品种和等级划分
- 量子信息与量子计算课件
- 沪教五年级数学上册第一单元测试卷
- 地下停车库设计统一规定
- 综合实践课《绳结》教学设计
- 建筑装饰设计收费管理规定
- 电子课件-《市场营销》-A45-2298完整版教学课件全书电子讲义(最新)
评论
0/150
提交评论