第24卷 C语言-C语言卷11——一维数组和多维数组的定义、初始化和引用——江苏省计算机类——考纲百套卷

2026-06-30
| 2份
| 22页
| 7人阅读
| 0人下载

资源信息

学段 中职
学科 职教专业课
课程 C语言程序设计
教材版本 -
年级 -
章节 -
类型 题集-专项训练
知识点 数组
使用场景 中职复习-中职高考
学年 2027-2028
地区(省份) 江苏省
地区(市) -
地区(区县) -
文件格式 ZIP
文件大小 94 KB
发布时间 2026-06-30
更新时间 2026-06-30
作者 xy06893
品牌系列 学易金卷·考纲百套卷
审核时间 2026-06-30
下载链接 https://m.zxxk.com/soft/58571358.html
价格 3.00储值(1储值=1元)
来源 学科网

内容正文:

编写说明:江苏省对口招生计算机类《考纲百套卷》,依据《江苏省计算机类专业综合理论考试大纲》编写。本专辑涵盖5门课程,第一部分是专业核心模块训练卷,第二部分为各门课程的综合训练卷。本专辑共98份试卷。 本试卷是第24卷为专业核心模块训练卷,按《C语言》中"C语言卷11——一维数组和多维数组的定义、初始化和引用"范围和要求编写。具体内容为:掌握一维数组和多维数组的定义、初始化和引用。 江苏省对口招生职业技能考试 C语言 试卷 (C语言卷11——一维数组和多维数组的定义、初始化和引用) 考试时间:90分钟 满分:100分 一、单项选择题(共20题,每题2分,共40分) 1. 下列关于数组的定义,正确的是( ) A.int a(); B.int a[10]; C.int a[0]; D.int a[ ]; 2. 定义包含10个整型元素的数组,正确的是( ) A.int a(10); B.int a[10]; C.int a{10}; D.array int a[10]; 3. 一维数组元素下标从( )开始 A.1 B.0 C.-1 D.任意整数 4. 定义int a[10]; 则最后一个元素是( ) A.a[10] B.a[9] C.a[8] D.a[11] 5. 下列数组初始化正确的是( ) A. int a[3] = {1,2,3}; B. int a[3] = {1,2,3}; 正确格式为int a[3]={1,2,3}; C. int a[] = {1,2,3}; D. int a[3] = 1,2,3; 6. 下列关于数组元素引用,正确的是( ) A.a{0} B.a(0) C.a[0] D.array[0] 7. 定义int a[3]={1,2,3}; 则a[1]的值是( ) A.1 B.2 C.3 D.不确定 8. 下列关于二维数组的定义,正确的是( ) A.int a[3,4]; B.int a[3][4]; C.int a(3)(4); D.int a[3][ ]; 9. 定义int a[2][3]; 该数组有____个元素 A.2 B.3 C.5 D.6 10. 二维数组a[2][3]的元素,下列引用正确的是( ) A.a[1,2] B.a[1][2] C.a(1)(2) D.a{1}{2} 11. 下列关于数组名,正确的是( ) A.数组名代表整个数组 B.数组名是数组首元素的地址 C.数组名可以自增运算 D.数组名可以重新赋值 12. 想要计算数组元素个数,正确的是( ) A.sizeof(a); B.sizeof(a)/sizeof(a[0]); C.a.length D.length(a) 13. 下列关于数组作为函数参数,正确的是( ) A.数组作为整体传递 B.数组传递的是首元素地址 C.数组不能在函数中修改 D.数组必须指定大小后才能传递 14. 定义int a[][3]={1,2,3,4,5,6}; 正确的是( ) A.编译错误,第一维必须指定 B.正确,第一维可以根据初始化列表自动计算 C.正确,等价int a[2][3] D.B和C都正确 15. 想要遍历数组a[10],循环条件正确的是( ) A.i<=10 B.i<10 C.i<11 D.i<=9 16. 下列关于数组初始化,错误的是( ) A.int a[3]={1,2,3}; B.int a[5]={1,2}; C.int a[ ]={1,2,3}; D.int a[3]=(1,2,3); 17. 定义int a[3]={1,2,3}; 则a[3]的值是( ) A.3 B.0 C.不确定 D.编译错误 18. 想要将数组a的所有元素清零,可以使用( ) A.a = {0}; B.循环逐个赋0 C.memset(a,0,sizeof(a)) D.B和C都可以 19. 下列关于字符数组和字符串,正确的是( ) A.字符数组就是字符串 B.字符串以\0结束 C.字符数组不能以\0结束 D.字符串不能用字符数组存储 20. 定义int a[3]={1,2,3}; 则sizeof(a)的值是( ) A.3 B.6或12 C.不确定 D.编译错误 二、判断题(共10题,每题1分,共10分) 21. C语言数组下标从0开始( ) 22. 定义数组时,数组大小必须是常量表达式( ) 23. 数组元素可以通过a[i]的方式引用( ) 24. 二维数组定义时,第一维大小可以省略( ) 25. 数组名代表数组首元素的地址( ) 26. 数组可以在定义后整体赋值( ) 27. a[10]是一个包含10个元素的合法数组引用( ) 28. 字符数组可以用来存储字符串( ) 29. sizeof(a)/sizeof(a[0])可以计算数组a的元素个数( ) 30. 二维数组的元素在内存中是按行优先顺序存储的( ) 三、填空题(共10空,每空2分,共20分) 31. C语言中,定义数组使用____(填符号)表示。 32. 一维数组元素下标从____开始。 33. 定义int a[10]; 则最后一个元素是a[____]。 34. 二维数组定义格式为:类型 数组名[行数]____[列数]。 35. 数组名是____量指针(填常或变)。 36. 想要计算数组a的元素个数,可以使用表达式:sizeof(a)____sizeof(a[0])。 37. 二维数组a[2][3]共有____个元素。 38. 字符串以____字符作为结束标志。 39. 数组作为函数参数时,传递的是数组首元素的____。 40. 二维数组在内存中按____优先顺序存储。 四、程序综合题(共3题,每题10分,共30分) 41. 程序阅读题:阅读下列程序,写出运行结果。 #include <stdio.h> int main() { int a[5]={3,1,4,1,5}; int i,s=0; for(i=0;i<5;i++) s=s+a[i]; printf("sum=%d ",s); for(i=4;i>=0;i--) printf("%d ",a[i]); printf(" "); return 0; } 42.文件score_level.dat存储学生学号和成绩等级(A/B/C/D)。按等级优先级和学号排序后,统计各等级人数并输出。请完善程序。 #include<stdio.h> #include<string.h> #include<stdlib.h> #define N 180 int level_pri(char l[]); int main() { FILE *fp; int i=0,n; char sid[N][15],lv[N]; fp=fopen("score_level.dat","r"); while(!feof(fp)) { fscanf(fp,"%s",sid[i]); fgetc(fp); lv[i]=fgetc(fp); ①; } n=i; fclose(fp); int j,p; char ts[15],tl; for(i=0;i<n-1;i++) { p=i; for(j=i+1;j<n;j++) { int pi=level_pri(lv[p]); int pj=level_pri(lv[j]); if(②||(pi==pj&&strcmp(sid[p],sid[j])>0)) p=j; } if(p!=i) { strcpy(ts,sid[p]);strcpy(sid[p],sid[i]);strcpy(sid[i],ts); tl=lv[p];lv[p]=lv[i];lv[i]=tl; } } int cnt[4]={0}; for(i=0;i<n;i++) { if(lv[i]=='A')cnt[0]++; else if(lv[i]=='B')cnt[1]++; else if(lv[i]=='C')cnt[2]++; else cnt[3]++; } printf("A:%d B:%d C:%d D:%d ",cnt[0],cnt[1],cnt[2],cnt[3]); return 0; } int level_pri(char l[]) { if(l[0]=='A')return 4; if(l[0]=='B')return 3; if(l[0]=='C')return 2; return 1; } 43.文件register.dat存储报名信息(姓名、活动名)。将相同姓名和活动名的重复记录去除,按姓名升序输出所有有效报名。请完善程序。 #include<stdio.h> #include<string.h> #include<stdlib.h> #define N 200 void sort_reg(char name[][20],char act[][20],int n); int main() { FILE *fp; int i=0,n,j; char nm[N][20],ac[N][20],unm[N][20],uac[N][20]; int cnt=0,keep; fp=fopen("register.dat","r"); while(!feof(fp)) { fscanf(fp,"%s%s",nm[i],ac[i]); ①; } n=i; fclose(fp); sort_reg(nm,ac,n); strcpy(unm[0],nm[0]); strcpy(uac[0],ac[0]); cnt=1; for(i=1;i<n;i++) { keep=1; for(j=0;j<cnt;j++) if(strcmp(unm[j],nm[i])==0&&strcmp(uac[j],ac[i])==0) { keep=0;break; } if(keep) { strcpy(unm[cnt],nm[i]); strcpy(uac[cnt],ac[i]); cnt++; } } for(i=0;i<cnt;i++) printf("%s %s ",unm[i],uac[i]); return 0; } void sort_reg(char name[][20],char act[][20],int n) { int i,j; char tn[20],ta[20]; for(i=0;i<n-1;i++) for(j=i+1;j<n;j++) if(strcmp(name[i],name[j])>0|| (strcmp(name[i],name[j])==0&&strcmp(act[i],act[j])>0)) { strcpy(tn,name[i]);strcpy(name[i],name[j]);strcpy(name[j],tn); strcpy(ta,act[i]);strcpy(act[i],act[j]);strcpy(act[j],ta); } } 学科网(北京)股份有限公司 $ 编写说明:江苏省对口招生计算机类《考纲百套卷》,依据《江苏省计算机类专业综合理论考试大纲》编写。本专辑涵盖5门课程,第一部分是专业核心模块训练卷,第二部分为各门课程的综合训练卷。本专辑共98份试卷。 本试卷是第24卷为专业核心模块训练卷,按《C语言》中"C语言卷11——一维数组和多维数组的定义、初始化和引用"范围和要求编写。具体内容为:掌握一维数组和多维数组的定义、初始化和引用。 江苏省对口招生职业技能考试 C语言 试卷 (C语言卷11——一维数组和多维数组的定义、初始化和引用) 考试时间:90分钟 满分:100分 一、单项选择题(共20题,每题2分,共40分) 1. 下列关于数组的定义,正确的是( ) A.int a();(这是函数声明) B.int a[10];(正确) C.int a[0];(大小不能为0) D.int a[ ];(未指定大小) 【答案】B 【解析】数组定义格式为类型 数组名[大小];,大小必须是正整数常量。 2. 定义包含10个整型元素的数组,正确的是( ) A.int a(10);(用了圆括号) B.int a[10];(正确) C.int a{10};(用了花括号) D.array int a[10];(错误关键字) 【答案】B 【解析】C语言用方括号[]表示数组,int a[10];定义10个整型元素的数组。 3. 一维数组元素下标从( )开始 A.1 B.0 C.-1 D.任意整数 【答案】B 【解析】C语言数组下标从0开始,最后一个元素下标为大小减1。 4. 定义int a[10]; 则最后一个元素是( ) A.a[10] B.a[9] C.a[8] D.a[11] 【答案】B 【解析】10个元素下标从0到9,最后一个元素是a[9]。 5. 下列数组初始化正确的是( ) A. int a[3] = {1、2、3}; B. int a[3] = {1,2,3}; 正确格式为int a[3]={1,2,3}; C. int a[] = {1,2,3}; D. int a[3] = 1,2,3; 【答案】C 【解析】定义时可以同时初始化,若省略大小则根据初始化列表自动计算。 6. 下列关于数组元素引用,正确的是( ) A.a{0}(用了花括号) B.a(0)(用了圆括号,这是函数调用) C.a[0](正确) D.array[0](错误名称) 【答案】C 【解析】数组元素引用使用方括号[],如a[0]。 7. 定义int a[3]={1,2,3}; 则a[1]的值是( ) A.1 B.2 C.3 D.不确定 【答案】B 【解析】a[0]=1, a[1]=2, a[2]=3。 8. 下列关于二维数组的定义,正确的是( ) A.int a[3,4];(用了逗号) B.int a[3][4];(正确) C.int a(3)(4);(用了圆括号) D.int a[3][ ];(第二维必须指定) 【答案】B 【解析】二维数组定义格式为类型 数组名[行][列];,第二维大小必须指定。 9. 定义int a[2][3]; 该数组有____个元素 A.2 B.3 C.5 D.6 【答案】D 【解析】二维数组元素个数=行数×列数=2×3=6。 10. 二维数组a[2][3]的元素,下列引用正确的是( ) A.a[1,2](用了逗号) B.a[1][2](正确) C.a(1)(2)(用了圆括号) D.a{1}{2}(用了花括号) 【答案】B 【解析】二维数组元素引用使用两个方括号a[i][j]。 11. 下列关于数组名,正确的是( ) A.数组名代表整个数组 B.数组名是数组首元素的地址 C.数组名可以自增运算 D.数组名可以重新赋值 【答案】B 【解析】数组名是常量指针,代表数组首元素的地址,不能自增或重新赋值。 12. 想要计算数组元素个数,正确的是( ) A.sizeof(a);(这是数组总字节数) B.sizeof(a)/sizeof(a[0]);(正确) C.a.length(这是Java语法) D.length(a)(C语言没有此函数) 【答案】B 【解析】元素个数=数组总字节数/每个元素字节数=sizeof(a)/sizeof(a[0])。 13. 下列关于数组作为函数参数,正确的是( ) A.数组作为整体传递 B.数组传递的是首元素地址 C.数组不能在函数中修改 D.数组必须指定大小后才能传递 【答案】B 【解析】数组作为函数参数时,传递的是数组首元素的地址(指针)。 14. 定义int a[][3]={1,2,3,4,5,6}; 正确的是( ) A.编译错误,第一维必须指定 B.正确,第一维可以根据初始化列表自动计算 C.正确,等价int a[2][3] D.B和C都正确 【答案】D 【解析】二维数组定义时,第一维可以根据初始化列表自动计算,但第二维必须指定。 15. 想要遍历数组a[10],循环条件正确的是( ) A.i<=10 B.i<10(正确) C.i<11 D.i<=9 【答案】B 【解析】数组下标从0到9,循环条件应为i<10。 16. 下列关于数组初始化,错误的是( ) A.int a[3]={1,2,3};(完全初始化) B.int a[5]={1,2};(部分初始化,其余为0) C.int a[ ]={1,2,3};(正确,自动计算大小) D.int a[3]=(1,2,3);(用了圆括号) 【答案】D 【解析】数组初始化列表必须使用花括号{}。 17. 定义int a[3]={1,2,3}; 则a[3]的值是( ) A.3 B.0 C.不确定(越界访问) D.编译错误 【答案】C 【解析】a[3]已越界,访问了数组以外的内存,结果不确定,这是危险的。 18. 想要将数组a的所有元素清零,可以使用( ) A.a = {0};(数组不能整体赋值) B.循环逐个赋0 C.memset(a,0,sizeof(a)) D.B和C都可以 【答案】D 【解析】可以用循环逐个赋0,也可以用memset函数批量清零。 19. 下列关于字符数组和字符串,正确的是( ) A.字符数组就是字符串 B.字符串以\0结束 C.字符数组不能以\0结束 D.字符串不能用字符数组存储 【答案】B 【解析】字符串以空字符\0作为结束标志,用字符数组存储。 20. 定义int a[3]={1,2,3}; 则sizeof(a)的值是( ) A.3(元素个数) B.6或12(总字节数,取决于int大小) C.不确定 D.编译错误 【答案】B 【解析】sizeof(a)返回数组总字节数,若int占4字节则为12,占2字节则为6。 二、判断题(共10题,每题1分,共10分) 21. C语言数组下标从0开始( ) 【答案】√ 【解析】C语言数组下标从0开始,这是语言标准规定。 22. 定义数组时,数组大小必须是常量表达式( ) 【答案】√ 【解析】C89/C90要求数组大小是常量表达式,C99支持变长数组。 23. 数组元素可以通过a[i]的方式引用( ) 【答案】√ 【解析】数组元素引用使用方括号[],如a[i]。 24. 二维数组定义时,第一维大小可以省略( ) 【答案】√ 【解析】二维数组初始化时,第一维可以根据初始化列表自动计算。 25. 数组名代表数组首元素的地址( ) 【答案】√ 【解析】数组名是常量指针,指向数组首元素的地址。 26. 数组可以在定义后整体赋值( ) 【答案】× 【解析】C语言数组不能整体赋值,必须逐个元素赋值或使用memcpy。 27. a[10]是一个包含10个元素的合法数组引用( ) 【答案】× 【解析】若数组定义为a[10],则a[10]越界,合法下标是0~9。 28. 字符数组可以用来存储字符串( ) 【答案】√ 【解析】C语言用字符数组存储字符串,以\0作为结束标志。 29. sizeof(a)/sizeof(a[0])可以计算数组a的元素个数( ) 【答案】√ 【解析】元素个数=数组总字节数/每个元素字节数。 30. 二维数组的元素在内存中是按行优先顺序存储的( ) 【答案】√ 【解析】C语言二维数组按行优先顺序存储,先存完第一行再存第二行。 三、填空题(共10空,每空2分,共20分) 31. C语言中,定义数组使用____(填符号)表示。 【答案】[](方括号) 【解析】数组定义和引用都使用方括号[]。 32. 一维数组元素下标从____开始。 【答案】0(零) 【解析】C语言数组下标从0开始。 33. 定义int a[10]; 则最后一个元素是a[____]。 【答案】9 【解析】10个元素下标从0到9。 34. 二维数组定义格式为:类型 数组名[行数]____[列数]。 【答案】[](方括号) 【解析】二维数组定义格式为类型 数组名[行][列]。 35. 数组名是____量指针(填常或变)。 【答案】常 【解析】数组名是常量指针,不能自增或重新赋值。 36. 想要计算数组a的元素个数,可以使用表达式:sizeof(a)____sizeof(a[0])。 【答案】/(除号) 【解析】元素个数=数组总字节数/每个元素字节数。 37. 二维数组a[2][3]共有____个元素。 【答案】6(2×3) 【解析】二维数组元素个数=行数×列数。 38. 字符串以____字符作为结束标志。 【答案】\0(空字符) 【解析】字符串以空字符\0作为结束标志。 39. 数组作为函数参数时,传递的是数组首元素的____。 【答案】地址(指针) 【解析】数组作为函数参数时,传递的是地址(指针)。 40. 二维数组在内存中按____优先顺序存储。 【答案】行 【解析】C语言二维数组按行优先顺序存储。 四、程序综合题(共3题,每题10分,共30分) 41. 程序阅读题:阅读下列程序,写出运行结果。 #include <stdio.h> int main() { int a[5]={3,1,4,1,5}; int i,s=0; for(i=0;i<5;i++) s=s+a[i]; printf("sum=%d ",s); for(i=4;i>=0;i--) printf("%d ",a[i]); printf(" "); return 0; } 【答案】 sum=14 5 1 4 1 3 【解析】 1.数组初始化 a [5]={3,1,4,1,5},循环逐个累加元素:3+1+4+1+5=14,输出 sum=14; 2.第二个循环下标从 4 倒序遍历到 0,依次取出元素 5、1、4、1、3 并输出。 42.文件score_level.dat存储学生学号和成绩等级(A/B/C/D)。按等级优先级和学号排序后,统计各等级人数并输出。请完善程序。 #include<stdio.h> #include<string.h> #include<stdlib.h> #define N 180 int level_pri(char l[]); int main() { FILE *fp; int i=0,n; char sid[N][15],lv[N]; fp=fopen("score_level.dat","r"); while(!feof(fp)) { fscanf(fp,"%s",sid[i]); fgetc(fp); lv[i]=fgetc(fp); ①; } n=i; fclose(fp); int j,p; char ts[15],tl; for(i=0;i<n-1;i++) { p=i; for(j=i+1;j<n;j++) { int pi=level_pri(lv[p]); int pj=level_pri(lv[j]); if(②||(pi==pj&&strcmp(sid[p],sid[j])>0)) p=j; } if(p!=i) { strcpy(ts,sid[p]);strcpy(sid[p],sid[i]);strcpy(sid[i],ts); tl=lv[p];lv[p]=lv[i];lv[i]=tl; } } int cnt[4]={0}; for(i=0;i<n;i++) { if(lv[i]=='A')cnt[0]++; else if(lv[i]=='B')cnt[1]++; else if(lv[i]=='C')cnt[2]++; else cnt[3]++; } printf("A:%d B:%d C:%d D:%d ",cnt[0],cnt[1],cnt[2],cnt[3]); return 0; } int level_pri(char l[]) { if(l[0]=='A')return 4; if(l[0]=='B')return 3; if(l[0]=='C')return 2; return 1; } 【答案】① i++ ② pi < pj 【解析】 ① 每读取一条学生信息,数组下标 i 自增 1,统计总人数; ② 按等级优先级降序排序,优先级值小的向后排,判断条件 pi < pj。 43.文件register.dat存储报名信息(姓名、活动名)。将相同姓名和活动名的重复记录去除,按姓名升序输出所有有效报名。请完善程序。 #include<stdio.h> #include<string.h> #include<stdlib.h> #define N 200 void sort_reg(char name[][20],char act[][20],int n); int main() { FILE *fp; int i=0,n,j; char nm[N][20],ac[N][20],unm[N][20],uac[N][20]; int cnt=0,keep; fp=fopen("register.dat","r"); while(!feof(fp)) { fscanf(fp,"%s%s",nm[i],ac[i]); ①; } n=i; fclose(fp); sort_reg(nm,ac,n); strcpy(unm[0],nm[0]); strcpy(uac[0],ac[0]); cnt=1; for(i=1;i<n;i++) { keep=1; for(j=0;j<cnt;j++) if(strcmp(unm[j],nm[i])==0&&strcmp(uac[j],ac[i])==0) { keep=0;break; } if(keep) { strcpy(unm[cnt],nm[i]); strcpy(uac[cnt],ac[i]); cnt++; } } for(i=0;i<cnt;i++) printf("%s %s ",unm[i],uac[i]); return 0; } void sort_reg(char name[][20],char act[][20],int n) { int i,j; char tn[20],ta[20]; for(i=0;i<n-1;i++) for(j=i+1;j<n;j++) if(strcmp(name[i],name[j])>0|| (strcmp(name[i],name[j])==0&&strcmp(act[i],act[j])>0)) { strcpy(tn,name[i]);strcpy(name[i],name[j]);strcpy(name[j],tn); strcpy(ta,act[i]);strcpy(act[i],act[j]);strcpy(act[j],ta); } } 【答案】① i++ 【解析】 ① 循环读取文件中每组姓名和活动名,读完一条就让下标 i 自增 1,统计全部报名记录数量。 学科网(北京)股份有限公司 $

资源预览图

第24卷 C语言-C语言卷11——一维数组和多维数组的定义、初始化和引用——江苏省计算机类——考纲百套卷
1
第24卷 C语言-C语言卷11——一维数组和多维数组的定义、初始化和引用——江苏省计算机类——考纲百套卷
2
第24卷 C语言-C语言卷11——一维数组和多维数组的定义、初始化和引用——江苏省计算机类——考纲百套卷
3
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。