第77卷 二维数组的定义和使用《计算机编程语言——C语言》湖南省对口招生《计算机应用类专业考纲百套卷》

2026-06-24
| 2份
| 41页
| 50人阅读
| 0人下载

内容正文:

编写说明:湖南省普通高校对口招生专业理论考试《计算机应用类专业综合考纲百套卷》,依据《湖南省普通高校对口招生计算机应用类专业综合知识基本要求及考试大纲》编写。每门课程均分三层训练:基础层(具象化支架)拆解考点为微目标,紧扣考纲 “掌握”“理解” 要求编写考点训练卷;巩固层(关联性支架)强化知识交叉与场景关联,按考纲专题编专题训练卷;应用层(引导性支架)聚焦真题突破,结合知识模块与教材编写课程综合卷。 本试卷是第77卷,按《计算机编程语言——C语言》范围和要求编写。具体内容为:①二维数组的定义;②二维数组元素的引用;③二维数组的初始化。 湖南省《计算机应用类专业综合考纲百套卷》 第77卷 《计算机编程语言——C语言》 二维数组的定义和使用 考点训练卷 考试时间60分钟 满分100分 班级________姓名________学号________成绩________ 一、单项选择题(本大题共15小题,每题2分,共30分) 1.(2020年)若“int a[2][3]={1,2,3,4,5,6};”,则不能访问a[1][2]值的是( ) A.*(a[1]+2) B.*(*(a+1)+2) C.*(a+1)+2 D.*(&a[1][0]+2) 【答案】C 【解析】二维数组a[2][3],a[1]是第 2 行数组名,代表该行首元素地址。 A:a[1]+2指向a[1][2],解引用可取到值; B:a+1指向第 2 行,*(a+1)等价a[1],再加 2、解引用,可取到a[1][2]; C:*(a+1)+2只是地址运算,最终得到a[1][2]的地址,没有解引用,无法访问元素值; D:&a[1][0]是第 2 行首地址,加 2 指向a[1][2],解引用可取到值。 2.(2019年)若有定义“int a[3][5];”,按内存中的数据存放顺序,a数组的第10个元素是( ) A.a[1][4] B.a[1][3] C.a[2][3] D.a[2][4] 【答案】A 【解析】二维数组行优先存储,下标从 0 开始,a[3][5]每行 5 个元素,前两行共 10 个元素,第 10 个元素为a[1][4]。 3.下列程序代码的输出结果是( ) int a[2][3] = {1,2,3,4,5,6}; printf("%d", a[1][0]); A. 1 B. 4 C. 2 D. 5 【答案】B 【解析】二维数组a[1][0]表示第 2 行第 1 列元素,对应值为 4。 4.执行以下程序段的输出结果是( ) int f[2][3] = {2,4,6,8,10,12}; int s = 0, i,j; for(i=0;i<2;i++) for(j=0;j<3;j++) s += f[i][j]; printf("%d", s); A. 36 B. 42 C. 48 D. 52 【答案】B 【解析】累加全部元素:2+4+6+8+10+12=42。 5.执行以下程序段的输出结果是( ) int g[3][2] = {{3,7},{1,9},{5,2}}; int max = g[0][0]; int i,j; for(i=0;i<3;i++) for(j=0;j<2;j++) if(g[i][j] > max) max = g[i][j]; printf("%d", max); A. 7 B. 9 C. 5 D. 3 【答案】B 【解析】遍历查找最大值,数组中最大元素为 9。 6.执行以下程序段的输出结果是( ) int h[2][2] = {11,22,33,44}; printf("%d ", h[0][1]); printf("%d", h[1][0]); A. 22 33 B. 11 44 C. 22 11 D. 33 22 【答案】A 【解析】h[0][1]=22,h[1][0]=33,依次输出两个值。 7.执行以下程序段的输出结果是( ) int k[3][3] = {1,3,5,2,4,6,7,8,9}; int sum = 0, j; for(j=0;j<3;j++) sum += k[1][j]; printf("%d", sum); A. 9 B. 12 C. 15 D. 18 【答案】B 【解析】累加第二行所有元素:2+4+6=12。 8.执行以下程序段的输出结果是( ) int m[3][3] = {2,5,1,9,3,7,4,8,6}; int s = 0, i; for(i=0;i<3;i++) s += m[i][i]; printf("%d", s); A. 11 B. 12 C. 13 D. 14 【答案】A 【解析】累加主对角线元素:m[0][0]+m[1][1]+m[2][2] = 2+3+6=11。 9.执行以下程序段的输出结果是( ) int n[2][4] = {1,2,3,4,5,6,7,8}; int cnt = 0, i,j; for(i=0;i<2;i++) for(j=0;j<4;j++) if(n[i][j] % 2 == 0) cnt++; printf("%d", cnt); A. 4 B. 5 C. 6 D. 7 【答案】A 【解析】统计偶数个数,数组内偶数为 2、4、6、8,共 4 个。 10.执行以下程序段的输出结果是( ) int p[3][2] = {{9,1},{6,4},{8,2}}; int t = p[0][0] - p[2][1]; printf("%d", t); A. 5 B. 6 C. 7 D. 8 【答案】C 【解析】p[0][0]=9,p[2][1]=2,9-2=7。 11.执行以下程序段的输出结果是( ) int q[2][3]; int i,j; for(i=0;i<2;i++) for(j=0;j<3;j++) q[i][j] = i + j; printf("%d", q[1][2]); A. 2 B. 3 C. 4 D. 5 【答案】B 【解析】i=1,j=2,计算 1+2=3。 12.执行以下程序段的输出结果是( ) int r[3][3] = {5,0,3,0,2,0,1,0,4}; int num = 0, i,j; for(i=0;i<3;i++) for(j=0;j<3;j++) if(r[i][j] == 0) num++; printf("%d", num); A. 3 B. 4 C. 5 D. 6 【答案】B 【解析】统计数值为 0 的元素,共计 4 个。 13.执行以下程序段的输出结果是( ) int s[2][2] = {7,8,9,10}; int temp = s[0][0]; s[0][0] = s[1][1]; s[1][1] = temp; printf("%d", s[0][0]); A. 7 B. 8 C. 9 D. 10 【答案】D 【解析】交换s[0][0]与s[1][1],交换后s[0][0]值为 10。 14.执行以下程序段的输出结果是( ) int u[2][3] = {12,5,18,9,21,7}; int res = 0, i,j; for(i=0;i<2;i++) for(j=0;j<3;j++) if(u[i][j] > 10) res += u[i][j]; printf("%d", res); A. 51 B. 54 C. 57 D. 60 【答案】A 【解析】累加大于 10 的元素:12+18+21=51。 15.执行以下程序段的输出结果是( ) int w[2][2]; int i,j; for(i=0;i<2;i++) for(j=0;j<2;j++) w[i][j] = i * j; printf("%d ",w[0][1]); printf("%d",w[1][1]); A. 0 1 B. 1 0 C. 0 0 D. 1 1 【答案】A 【解析】w[0][1]=0*1=0,w[1][1]=1*1=1。 二、阅读程序,写出运行结果(本大题共10小题。每空2分,合计20分) 1.下列程序的运行结果是__________________。 #include "stdio.h" int main(void) { int y[2][4] = {3,1,4,1,5,9,2,6}; int mul = 1, i,j; for(i=0;i<2;i++) for(j=0;j<4;j++) if(y[i][j] > 4) mul *= y[i][j]; printf("%d", mul); return 0; } 【答案】270 2.下列程序的运行结果是__________________。 #include "stdio.h" int main(void) { int mat[4][4] = {{2,5,1,8},{9,3,7,4},{6,0,11,2},{12,7,3,5}}; int i, j, sum = 0; for(i = 0; i < 4; i++) { for(j = i; j < 4; j++) { sum += mat[i][j]; } } printf("%d", sum); return 0; } 【答案】48 3.下列程序的运行结果是__________________。 #include "stdio.h" int main(void) { int b[3][3] = {10, 20, 30, 40, 50, 60, 70, 80, 90}; int i, temp; for(i = 0; i < 3; i++) { temp = b[i][0]; b[i][0] = b[i][2]; b[i][2] = temp; } for(i = 0; i < 3; i++) printf("%d ", b[i][1]); return 0; } 【答案】20 50 80 4.下列程序的运行结果是__________________。 #include "stdio.h" int main(void) { int c[5][2] = {3,9,1,7,4,6,8,2,5,10}; int i, max_val = c[0][0]; int pos_i = 0, pos_j = 0; for(i = 0; i < 5; i++) { if(c[i][0] > max_val) { max_val = c[i][0]; pos_i = i; pos_j = 0; } if(c[i][1] > max_val) { max_val = c[i][1]; pos_i = i; pos_j = 1;} } printf("%d,%d", pos_i, pos_j); return 0; } 【答案】4,1 5.下列程序的运行结果是__________________。 #include "stdio.h" int main(void) { int e[4][4] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}; int i, j; for(i = 0; i < 4; i++) { for(j = 0; j < 4; j++) { if(i == j || i + j == 3) e[i][j] = 0; } } printf("%d", e[1][2]); return 0; } 【答案】0 6.下列程序的运行结果是__________________。 #include "stdio.h" int main(void) { int f[2][5] = {7, 1, 5, 9, 3, 2, 8, 4, 6, 10}; int i, j, total = 0; for(j = 0; j < 5; j++) { if(f[0][j] > f[1][j]) total += f[0][j]; else total += f[1][j]; } printf("%d", total); return 0; } 【答案】39 7.下列程序的运行结果是__________________。 #include "stdio.h" int main(void) { int g[3][3] = {5, 2, 9, 1, 7, 3, 8, 4, 6}; int i, j; for(i = 0; i < 3; i++) { for(j = 0; j < 2; j++) { int t = g[i][j]; g[i][j] = g[i][j+1]; g[i][j+1] = t; } } printf("%d %d %d", g[1][0], g[1][1], g[1][2]); return 0; } 【答案】7 3 1 8.下列程序的运行结果是__________________。 #include "stdio.h" int main(void) { int k[4][3] = {12, 5, 19, 7, 22, 4, 16, 8, 11, 3, 25, 6}; int i,j, sum_row = 0, sum_col = 0; for(j = 0; j < 3; j++) sum_row += k[3][j]; for(i = 0; i < 4; i++) sum_col += k[i][2]; printf("%d", sum_row - sum_col); return 0; } 【答案】-6 9.下列程序的运行结果是__________________。 #include "stdio.h" int main(void) { int t[3][5] = {0}; int i, j,cnt=0; for(i = 0; i < 3; i++) { for(j = i; j < 5; j++) { t[i][j] = 1; } } for(i = 0; i < 3; i++) for(j = 0; j < 5; j++) if(t[i][j] == 1) cnt++; printf("%d", cnt); return 0; } 【答案】12 10.下列程序的运行结果是__________________。 #include "stdio.h" int main(void) { int mat[3][4] = {{1, 2, 3, 4},{5, 6, 7, 8},{9,10,11,12}}; int i,j,temp; for(i = 0; i < 3; i++) { temp = mat[i][0]; for(j = 0; j < 3; j++) { mat[i][j] = mat[i][j+1]; } mat[i][3] = temp; } for(i = 0; i < 3; i++) { for(j = 0; j < 4; j++) { printf("%d ", mat[i][j]); } printf(" "); } return 0; } 【答案】 2 3 4 1 6 7 8 5 10 11 12 9 三、程序填空。按照题目要求,将正确内容填入答题卡相应位置,使程序完整(每空2分,共计30分) 1.下列程序的功能是:输入一个N阶方阵(3≤N≤10),实现矩阵顺时针旋转90度,输出旋转后的完整矩阵。 #include <stdio.h> int main() { int n,i,j; int mat[10][10], res[10][10]; scanf("%d", &n); for(i = 0; i < n; i++) { for(j = 0; j < n; j++) { _________________ } } for(i = 0; i < n; i++) { for(j = 0; j < n; j++) { __________________ } } printf(" "); for(i = 0; i < n; i++) { for(j = 0; j < n; j++) { printf("%d ", res[i][j]); } printf(" "); } return 0; } 【答案】①scanf("%d", &mat[i][j]); ②res[j][n-1-i] = mat[i][j]; 2.马鞍点定义:当前行最大值,且当前列最小值。下列程序的功能是:输入 4 行 4 列矩阵,找出所有马鞍点坐标与数值;若无则输出无马鞍点。 #include <stdio.h> int main() { int a[4][4]; int flag = 0,i,j,k; int max_row, min_col; for(i = 0; i < 4; i++) for(j = 0; j < 4; j++) scanf("%d", &a[i][j]); for(i = 0; i < 4; i++) { for(j = 0; j < 4; j++) { max_row=min_col = _______①_______; for(k = 0; k < 4; k++) if(________②_______) max_row = 0; for(k = 0; k < 4; k++) if(a[i][j] > a[k][j]) min_col = 0; if(________③_______) { printf("找到马鞍点:(%d,%d) 值=%d ",i,j,a[i][j]); ________④________; } } } if(!flag) printf("无马鞍点 "); return 0; } 【答案】①1 ②a[i][j] < a[i][k] ③max_row && min_col ④flag = 1 3.下列程序的功能是:输入奇数 n,生成 n 阶蛇形矩阵,规则:从左上角开始,按 右→下→左→上 循环绕行,依次填充数字 1 ~ n*n。 例如: 输入 3 输出 1 2 3 8 9 4 7 6 5 #include <stdio.h> int main() { int n; int map[10][10] = {0}; int dx[4] = {0,1,0,-1}; int dy[4] = {1,0,-1,0}; int x = 0, y = 0, d = 0,i,j,nx,ny; scanf("%d", &n); for(i = 1; i <= n*n; i++) { map[x][y] = __________①_______; nx = x + dx[d]; ny = _______②_______; if(nx<0 || ny<0 || nx>=n || ny>=n || ________③_______) { d = _________④_________; nx = x + dx[d]; ny = y + dy[d]; } x = nx; ________⑤_______; } for(i = 0; i < n; i++) { for(j = 0; j < n; j++) printf("%d ",map[i][j]); printf(" "); } return 0; } 【答案】①i ②y + dy[d] ③map[nx][ny]!=0 ④(d+1) % 4 ⑤y = ny 4.标准三阶幻方规则: 元素为 1~9 不重复; 每行、每列、两条对角线的累加和全部相等。 输入 3×3 矩阵,判断是否为标准三阶幻方。下列程序的功能是判断是否为标准三阶幻方。 #include <stdio.h> int main() { int a[3][3]; int vis[10] = {0}; int sum, flag = 1,i,j; for(i=0;i<3;i++) for(j=0;j<3;j++) scanf("%d",&a[i][j]); for(i=0;i<3;i++) { for(j=0;j<3;j++) { if(a[i][j]<1 || a[i][j]>9 || _______①_____) flag=0; vis[a[i][j]]=1; } } sum = _________②_______; for(i=1;i<3;i++) if(_________③________) flag=0; for(j=0;j<3;j++) if(a[0][j]+a[1][j]+a[2][j]!=sum) flag=0; if(a[0][0]+a[1][1]+a[2][2]!=sum) flag=0; if(a[0][2]+a[1][1]+a[2][0]!=sum) flag=0; if(________④_______) printf("是三阶幻方 "); else printf("不是三阶幻方 "); return 0; } 【答案】①vis[a[i][j]] ②a[0][0]+a[0][1]+a[0][2] ③a[i][0]+a[i][1]+a[i][2]!=sum ④flag 四、阅读程序:修改程序中的错误,不得增行或删行,也不得更改程序结构。请在答题卡中指出错误代码所在的行号,并给出该行修改后的程序代码。(每空2分,共计20分) 1.下列程序的功能是:输入 4×4 矩阵,从最后一条反对角线开始,逆向逐条输出所有反对角线元素。以下程序只允许修改两行。 L1 #include <stdio.h> L2 int main() L3 { L4 int a[4][4],i,j,s; L5 for(i=0;i<4;i++) L6 for(j=0;j<4;j++) L7 scanf("%d",&a[i][j]); L8 for(s = 6; s >= 0; s--) L9 { L10 for(i = 0; i < 4; i++) L11 { L12 j = s - 1; L13 if(j >= 0|| j < 4) L14 { printf("%d ", a[i][j]); } L15 } L16 printf(" "); L17 } L18 return 0; L19 } 【答案】①L12 j = s - i; ②L13 if(j >= 0 && j < 4) 2.下列程序的功能是:输入 5×5 矩阵,仅将正中心 3×3 区域上下翻转,外围边框保持不变,输出结果。以下程序只允许修改两行。 L1 #include <stdio.h> L2 int main() L3 { L4 int m[5][5],i,j,t; L5 for(i=0;i<5;i++) L6 for(j=0;j<5;j++) L7 scanf("%d",&m[i][j]); L8 for(j=1;j<=4;j++) L9 { L10 t = m[1][j]; L11 m[1][j] = m[2][j]; L12 m[3][j] = t; L13 } L14 for(i=0;i<5;i++) L15 { L16 for(j=0;j<5;j++) L17 printf("%4d",m[i][j]); L18 printf(" "); L19 } L20 return 0; L21 } 【答案】①L8 for(j=1;j<4;j++) ②L11 m[1][j] = m[3][j]; 3.下列程序的功能是:5×5 矩阵初始全 0,仅中心位置(2,2)为 1。执行两轮扩散:每一轮将当前 1 元素的上下左右设为 1,输出最终矩阵。以下程序只允许修改三行。 输出结果: 0 0 1 0 0 0 1 1 1 0 1 1 1 1 1 0 1 1 1 0 0 0 1 0 0 L1 #include <stdio.h> L2 int main() L3 { L4 int m[5][5]={0},i,j,step; L5 int temp[5][5]={0}; L6 m[2][2]=1; L7 for( step=0;step<2;step++) L8 { L9 for(i=0;i<5;i++) L10 for(j=0;j<5;j++) L11 temp[i][j]=m[i][j]; L12 for(i=0;i<5;i++) L13 { L14 for(j=0;j<5;j++) L15 { L16 if(m[i][j]==1) L17 { L18 if(i-1>0) temp[i-1][j]=1; L19 if(i+1<5) temp[i+1][j]=1; L20 if(j-1>=0) temp[i][j-1]=1; L21 if(j+1<=5) temp[i][j]=1; L22 } L23 } L24 } L25 for(i=0;i<5;i++) L26 for(j=0;j<5;j++) L27 m[i][j]=temp[j][i]; L28 } L29 for(i=0;i<5;i++) L30 { L31 for(j=0;j<5;j++) L32 printf("%d ",m[i][j]); L33 printf(" "); L34 } L35 return 0; L36 } 【答案】①L18 if(i-1>=0) temp[i-1][j]=1; ②L21 if(j+1<5) temp[i][j+1]=1; ③L27 m[i][j]=temp[i][j]; 4.下列程序的功能是:输入 4×4 矩阵,先求出每行最大值、每列最大值;将所有等于「本行最大值 或 本列最大值」的元素置 0,输出结果。以下程序只允许修改三行。 L1 #include <stdio.h> L2 int main() L3 { L4 int a[4][4],i,j; L5 int rowMax[4]={0},colMax[4]={0}; L6 for(i=0;i<4;i++) L7 for(j=0;j<4;j++) L8 scanf("%d",&a[i][j]); L9 for(i=0;i<4;i++) L10 { L11 rowMax[i]=a[0][0]; L12 for(j=1;j<4;j++) L13 if(a[i][j]>rowMax[i]) L14 rowMax[i]=a[i][j]; L15 } L16 for(j=0;j<4;j++) L17 { L18 colMax[j]=a[0][j]; L19 for(i=1;i<4;i++) L20 if(a[i][j]<colMax[j]) L21 colMax[j]=a[i][j]; L22 } L23 for(i=0;i<4;i++) L24 { L25 for(j=0;j<4;j++) L26 { L27 if(a[i][j]==rowMax[i]&&a[i][j]!=colMax[j]) L28 a[i][j]=0; L29 } L30 } L31 for(i=0;i<4;i++) L32 { L33 for(j=0;j<4;j++) L34 printf("%4d ",a[i][j]); L35 printf(" "); L36 } L37 return 0; L38 } 【答案】①L11 rowMax[i]=a[i][0]; ②L20 if(a[i][j]>colMax[j]) ③L27 if(a[i][j]==rowMax[i]||a[i][j]==colMax[j]) 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $ 编写说明:湖南省普通高校对口招生专业理论考试《计算机应用类专业综合考纲百套卷》,依据《湖南省普通高校对口招生计算机应用类专业综合知识基本要求及考试大纲》编写。每门课程均分三层训练:基础层(具象化支架)拆解考点为微目标,紧扣考纲 “掌握”“理解” 要求编写考点训练卷;巩固层(关联性支架)强化知识交叉与场景关联,按考纲专题编专题训练卷;应用层(引导性支架)聚焦真题突破,结合知识模块与教材编写课程综合卷。 本试卷是第77卷,按《计算机编程语言——C语言》范围和要求编写。具体内容为:①二维数组的定义;②二维数组元素的引用;③二维数组的初始化。 湖南省《计算机应用类专业综合考纲百套卷》 第77卷 《计算机编程语言——C语言》 二维数组的定义和使用 考点训练卷 考试时间60分钟 满分100分 班级________姓名________学号________成绩________ 一、单项选择题(本大题共15小题,每题2分,共30分) 1.(2020年)若“int a[2][3]={1,2,3,4,5,6};”,则不能访问a[1][2]值的是( ) A.*(a[1]+2) B.*(*(a+1)+2) C.*(a+1)+2 D.*(&a[1][0]+2) 2.(2019年)若有定义“int a[3][5];”,按内存中的数据存放顺序,a数组的第10个元素是( ) A.a[1][4] B.a[1][3] C.a[2][3] D.a[2][4] 3.下列程序代码的输出结果是( ) int a[2][3] = {1,2,3,4,5,6}; printf("%d", a[1][0]); A. 1 B. 4 C. 2 D. 5 4.执行以下程序段的输出结果是( ) int f[2][3] = {2,4,6,8,10,12}; int s = 0, i,j; for(i=0;i<2;i++) for(j=0;j<3;j++) s += f[i][j]; printf("%d", s); A. 36 B. 42 C. 48 D. 52 5.执行以下程序段的输出结果是( ) int g[3][2] = {{3,7},{1,9},{5,2}}; int max = g[0][0]; int i,j; for(i=0;i<3;i++) for(j=0;j<2;j++) if(g[i][j] > max) max = g[i][j]; printf("%d", max); A. 7 B. 9 C. 5 D. 3 6.执行以下程序段的输出结果是( ) int h[2][2] = {11,22,33,44}; printf("%d ", h[0][1]); printf("%d", h[1][0]); A. 22 33 B. 11 44 C. 22 11 D. 33 22 7.执行以下程序段的输出结果是( ) int k[3][3] = {1,3,5,2,4,6,7,8,9}; int sum = 0, j; for(j=0;j<3;j++) sum += k[1][j]; printf("%d", sum); A. 9 B. 12 C. 15 D. 18 8.执行以下程序段的输出结果是( ) int m[3][3] = {2,5,1,9,3,7,4,8,6}; int s = 0, i; for(i=0;i<3;i++) s += m[i][i]; printf("%d", s); A. 11 B. 12 C. 13 D. 14 9.执行以下程序段的输出结果是( ) int n[2][4] = {1,2,3,4,5,6,7,8}; int cnt = 0, i,j; for(i=0;i<2;i++) for(j=0;j<4;j++) if(n[i][j] % 2 == 0) cnt++; printf("%d", cnt); A. 4 B. 5 C. 6 D. 7 10.执行以下程序段的输出结果是( ) int p[3][2] = {{9,1},{6,4},{8,2}}; int t = p[0][0] - p[2][1]; printf("%d", t); A. 5 B. 6 C. 7 D. 8 11.执行以下程序段的输出结果是( ) int q[2][3]; int i,j; for(i=0;i<2;i++) for(j=0;j<3;j++) q[i][j] = i + j; printf("%d", q[1][2]); A. 2 B. 3 C. 4 D. 5 12.执行以下程序段的输出结果是( ) int r[3][3] = {5,0,3,0,2,0,1,0,4}; int num = 0, i,j; for(i=0;i<3;i++) for(j=0;j<3;j++) if(r[i][j] == 0) num++; printf("%d", num); A. 3 B. 4 C. 5 D. 6 13.执行以下程序段的输出结果是( ) int s[2][2] = {7,8,9,10}; int temp = s[0][0]; s[0][0] = s[1][1]; s[1][1] = temp; printf("%d", s[0][0]); A. 7 B. 8 C. 9 D. 10 14.执行以下程序段的输出结果是( ) int u[2][3] = {12,5,18,9,21,7}; int res = 0, i,j; for(i=0;i<2;i++) for(j=0;j<3;j++) if(u[i][j] > 10) res += u[i][j]; printf("%d", res); A. 51 B. 54 C. 57 D. 60 15.执行以下程序段的输出结果是( ) int w[2][2]; int i,j; for(i=0;i<2;i++) for(j=0;j<2;j++) w[i][j] = i * j; printf("%d ",w[0][1]); printf("%d",w[1][1]); A. 0 1 B. 1 0 C. 0 0 D. 1 1 二、阅读程序,写出运行结果(本大题共10小题。每空2分,合计20分) 1.下列程序的运行结果是__________________。 #include "stdio.h" int main(void) { int y[2][4] = {3,1,4,1,5,9,2,6}; int mul = 1, i,j; for(i=0;i<2;i++) for(j=0;j<4;j++) if(y[i][j] > 4) mul *= y[i][j]; printf("%d", mul); return 0; } 2.下列程序的运行结果是__________________。 #include "stdio.h" int main(void) { int mat[4][4] = {{2,5,1,8},{9,3,7,4},{6,0,11,2},{12,7,3,5}}; int i, j, sum = 0; for(i = 0; i < 4; i++) { for(j = i; j < 4; j++) { sum += mat[i][j]; } } printf("%d", sum); return 0; } 3.下列程序的运行结果是__________________。 #include "stdio.h" int main(void) { int b[3][3] = {10, 20, 30, 40, 50, 60, 70, 80, 90}; int i, temp; for(i = 0; i < 3; i++) { temp = b[i][0]; b[i][0] = b[i][2]; b[i][2] = temp; } for(i = 0; i < 3; i++) printf("%d ", b[i][1]); return 0; } 4.下列程序的运行结果是__________________。 #include "stdio.h" int main(void) { int c[5][2] = {3,9,1,7,4,6,8,2,5,10}; int i, max_val = c[0][0]; int pos_i = 0, pos_j = 0; for(i = 0; i < 5; i++) { if(c[i][0] > max_val) { max_val = c[i][0]; pos_i = i; pos_j = 0; } if(c[i][1] > max_val) { max_val = c[i][1]; pos_i = i; pos_j = 1;} } printf("%d,%d", pos_i, pos_j); return 0; } 5.下列程序的运行结果是__________________。 #include "stdio.h" int main(void) { int e[4][4] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}; int i, j; for(i = 0; i < 4; i++) { for(j = 0; j < 4; j++) { if(i == j || i + j == 3) e[i][j] = 0; } } printf("%d", e[1][2]); return 0; } 6.下列程序的运行结果是__________________。 #include "stdio.h" int main(void) { int f[2][5] = {7, 1, 5, 9, 3, 2, 8, 4, 6, 10}; int i, j, total = 0; for(j = 0; j < 5; j++) { if(f[0][j] > f[1][j]) total += f[0][j]; else total += f[1][j]; } printf("%d", total); return 0; } 7.下列程序的运行结果是__________________。 #include "stdio.h" int main(void) { int g[3][3] = {5, 2, 9, 1, 7, 3, 8, 4, 6}; int i, j; for(i = 0; i < 3; i++) { for(j = 0; j < 2; j++) { int t = g[i][j]; g[i][j] = g[i][j+1]; g[i][j+1] = t; } } printf("%d %d %d", g[1][0], g[1][1], g[1][2]); return 0; } 8.下列程序的运行结果是__________________。 #include "stdio.h" int main(void) { int k[4][3] = {12, 5, 19, 7, 22, 4, 16, 8, 11, 3, 25, 6}; int i,j, sum_row = 0, sum_col = 0; for(j = 0; j < 3; j++) sum_row += k[3][j]; for(i = 0; i < 4; i++) sum_col += k[i][2]; printf("%d", sum_row - sum_col); return 0; } 9.下列程序的运行结果是__________________。 #include "stdio.h" int main(void) { int t[3][5] = {0}; int i, j,cnt=0; for(i = 0; i < 3; i++) { for(j = i; j < 5; j++) { t[i][j] = 1; } } for(i = 0; i < 3; i++) for(j = 0; j < 5; j++) if(t[i][j] == 1) cnt++; printf("%d", cnt); return 0; } 10.下列程序的运行结果是__________________。 #include "stdio.h" int main(void) { int mat[3][4] = {{1, 2, 3, 4},{5, 6, 7, 8},{9,10,11,12}}; int i,j,temp; for(i = 0; i < 3; i++) { temp = mat[i][0]; for(j = 0; j < 3; j++) { mat[i][j] = mat[i][j+1]; } mat[i][3] = temp; } for(i = 0; i < 3; i++) { for(j = 0; j < 4; j++) { printf("%d ", mat[i][j]); } printf(" "); } return 0; } 三、程序填空。按照题目要求,将正确内容填入答题卡相应位置,使程序完整(每空2分,共计30分) 1.下列程序的功能是:输入一个N阶方阵(3≤N≤10),实现矩阵顺时针旋转90度,输出旋转后的完整矩阵。 #include <stdio.h> int main() { int n,i,j; int mat[10][10], res[10][10]; scanf("%d", &n); for(i = 0; i < n; i++) { for(j = 0; j < n; j++) { _________________ } } for(i = 0; i < n; i++) { for(j = 0; j < n; j++) { __________________ } } printf(" "); for(i = 0; i < n; i++) { for(j = 0; j < n; j++) { printf("%d ", res[i][j]); } printf(" "); } return 0; } 2.马鞍点定义:当前行最大值,且当前列最小值。下列程序的功能是:输入 4 行 4 列矩阵,找出所有马鞍点坐标与数值;若无则输出无马鞍点。 #include <stdio.h> int main() { int a[4][4]; int flag = 0,i,j,k; int max_row, min_col; for(i = 0; i < 4; i++) for(j = 0; j < 4; j++) scanf("%d", &a[i][j]); for(i = 0; i < 4; i++) { for(j = 0; j < 4; j++) { max_row=min_col = _______①_______; for(k = 0; k < 4; k++) if(________②_______) max_row = 0; for(k = 0; k < 4; k++) if(a[i][j] > a[k][j]) min_col = 0; if(________③_______) { printf("找到马鞍点:(%d,%d) 值=%d ",i,j,a[i][j]); ________④________; } } } if(!flag) printf("无马鞍点 "); return 0; } 3.下列程序的功能是:输入奇数 n,生成 n 阶蛇形矩阵,规则:从左上角开始,按 右→下→左→上 循环绕行,依次填充数字 1 ~ n*n。 例如: 输入 3 输出 1 2 3 8 9 4 7 6 5 #include <stdio.h> int main() { int n; int map[10][10] = {0}; int dx[4] = {0,1,0,-1}; int dy[4] = {1,0,-1,0}; int x = 0, y = 0, d = 0,i,j,nx,ny; scanf("%d", &n); for(i = 1; i <= n*n; i++) { map[x][y] = __________①_______; nx = x + dx[d]; ny = _______②_______; if(nx<0 || ny<0 || nx>=n || ny>=n || ________③_______) { d = _________④_________; nx = x + dx[d]; ny = y + dy[d]; } x = nx; ________⑤_______; } for(i = 0; i < n; i++) { for(j = 0; j < n; j++) printf("%d ",map[i][j]); printf(" "); } return 0; } 4.标准三阶幻方规则: 元素为 1~9 不重复; 每行、每列、两条对角线的累加和全部相等。 输入 3×3 矩阵,判断是否为标准三阶幻方。下列程序的功能是判断是否为标准三阶幻方。 #include <stdio.h> int main() { int a[3][3]; int vis[10] = {0}; int sum, flag = 1,i,j; for(i=0;i<3;i++) for(j=0;j<3;j++) scanf("%d",&a[i][j]); for(i=0;i<3;i++) { for(j=0;j<3;j++) { if(a[i][j]<1 || a[i][j]>9 || _______①_____) flag=0; vis[a[i][j]]=1; } } sum = _________②_______; for(i=1;i<3;i++) if(_________③________) flag=0; for(j=0;j<3;j++) if(a[0][j]+a[1][j]+a[2][j]!=sum) flag=0; if(a[0][0]+a[1][1]+a[2][2]!=sum) flag=0; if(a[0][2]+a[1][1]+a[2][0]!=sum) flag=0; if(________④_______) printf("是三阶幻方 "); else printf("不是三阶幻方 "); return 0; } 四、阅读程序:修改程序中的错误,不得增行或删行,也不得更改程序结构。请在答题卡中指出错误代码所在的行号,并给出该行修改后的程序代码。(每空2分,共计20分) 1.下列程序的功能是:输入 4×4 矩阵,从最后一条反对角线开始,逆向逐条输出所有反对角线元素。以下程序只允许修改两行。 L1 #include <stdio.h> L2 int main() L3 { L4 int a[4][4],i,j,s; L5 for(i=0;i<4;i++) L6 for(j=0;j<4;j++) L7 scanf("%d",&a[i][j]); L8 for(s = 6; s >= 0; s--) L9 { L10 for(i = 0; i < 4; i++) L11 { L12 j = s - 1; L13 if(j >= 0|| j < 4) L14 { printf("%d ", a[i][j]); } L15 } L16 printf(" "); L17 } L18 return 0; L19 } 2.下列程序的功能是:输入 5×5 矩阵,仅将正中心 3×3 区域上下翻转,外围边框保持不变,输出结果。以下程序只允许修改两行。 L1 #include <stdio.h> L2 int main() L3 { L4 int m[5][5],i,j,t; L5 for(i=0;i<5;i++) L6 for(j=0;j<5;j++) L7 scanf("%d",&m[i][j]); L8 for(j=1;j<=4;j++) L9 { L10 t = m[1][j]; L11 m[1][j] = m[2][j]; L12 m[3][j] = t; L13 } L14 for(i=0;i<5;i++) L15 { L16 for(j=0;j<5;j++) L17 printf("%4d",m[i][j]); L18 printf(" "); L19 } L20 return 0; L21 } 3.下列程序的功能是:5×5 矩阵初始全 0,仅中心位置(2,2)为 1。执行两轮扩散:每一轮将当前 1 元素的上下左右设为 1,输出最终矩阵。以下程序只允许修改三行。 输出结果: 0 0 1 0 0 0 1 1 1 0 1 1 1 1 1 0 1 1 1 0 0 0 1 0 0 L1 #include <stdio.h> L2 int main() L3 { L4 int m[5][5]={0},i,j,step; L5 int temp[5][5]={0}; L6 m[2][2]=1; L7 for( step=0;step<2;step++) L8 { L9 for(i=0;i<5;i++) L10 for(j=0;j<5;j++) L11 temp[i][j]=m[i][j]; L12 for(i=0;i<5;i++) L13 { L14 for(j=0;j<5;j++) L15 { L16 if(m[i][j]==1) L17 { L18 if(i-1>0) temp[i-1][j]=1; L19 if(i+1<5) temp[i+1][j]=1; L20 if(j-1>=0) temp[i][j-1]=1; L21 if(j+1<=5) temp[i][j]=1; L22 } L23 } L24 } L25 for(i=0;i<5;i++) L26 for(j=0;j<5;j++) L27 m[i][j]=temp[j][i]; L28 } L29 for(i=0;i<5;i++) L30 { L31 for(j=0;j<5;j++) L32 printf("%d ",m[i][j]); L33 printf(" "); L34 } L35 return 0; L36 } 4.下列程序的功能是:输入 4×4 矩阵,先求出每行最大值、每列最大值;将所有等于「本行最大值 或 本列最大值」的元素置 0,输出结果。以下程序只允许修改三行。 L1 #include <stdio.h> L2 int main() L3 { L4 int a[4][4],i,j; L5 int rowMax[4]={0},colMax[4]={0}; L6 for(i=0;i<4;i++) L7 for(j=0;j<4;j++) L8 scanf("%d",&a[i][j]); L9 for(i=0;i<4;i++) L10 { L11 rowMax[i]=a[0][0]; L12 for(j=1;j<4;j++) L13 if(a[i][j]>rowMax[i]) L14 rowMax[i]=a[i][j]; L15 } L16 for(j=0;j<4;j++) L17 { L18 colMax[j]=a[0][j]; L19 for(i=1;i<4;i++) L20 if(a[i][j]<colMax[j]) L21 colMax[j]=a[i][j]; L22 } L23 for(i=0;i<4;i++) L24 { L25 for(j=0;j<4;j++) L26 { L27 if(a[i][j]==rowMax[i]&&a[i][j]!=colMax[j]) L28 a[i][j]=0; L29 } L30 } L31 for(i=0;i<4;i++) L32 { L33 for(j=0;j<4;j++) L34 printf("%4d ",a[i][j]); L35 printf(" "); L36 } L37 return 0; L38 } 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $

资源预览图

第77卷 二维数组的定义和使用《计算机编程语言——C语言》湖南省对口招生《计算机应用类专业考纲百套卷》
1
第77卷 二维数组的定义和使用《计算机编程语言——C语言》湖南省对口招生《计算机应用类专业考纲百套卷》
2
第77卷 二维数组的定义和使用《计算机编程语言——C语言》湖南省对口招生《计算机应用类专业考纲百套卷》
3
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。