收藏 分销(赏)

实验7.2 二维数组.doc

上传人:xrp****65 文档编号:7028596 上传时间:2024-12-25 格式:DOC 页数:8 大小:35.50KB
下载 相关 举报
实验7.2 二维数组.doc_第1页
第1页 / 共8页
实验7.2 二维数组.doc_第2页
第2页 / 共8页
点击查看更多>>
资源描述
实验7.2 二维数组 1 求矩阵各行元素之和(调试示例error07_3) 2 矩阵运算 3 九九乘法表 4 判断上三角矩阵 5 算算看,这是第几天? 6 找鞍点(选作) 1 求矩阵各行元素之和(调试示例error07_3) /*-----程序填空,不要改变与输入输出有关的语句。输入2个正整数 m 和 n (1<=m<=6, 1<=n<=6),然后输入矩阵 a(m 行 n 列)中的元素,分别求出各行元素之和,并输出。输出使用语句:printf("sum of row %d is %d\n", i, sum); 输入: 3 2 (m=3,n=2) 6 3 1 -8 3 12 输出: sum of row 0 is 9 sum of row 1 is -7 sum of row 2 is 15 ----*/ #include <stdio.h> int main(void) { int i, j, m, n, sum; int a[6][6]; scanf("%d%d",&m,&n); for(i = 0; i < m; i++) for(j = 0; j < n; j++) scanf("%d", &a[i][j]); for(i=0;i<m;i++){ sum=0; for(j=0;j<n;j++) sum=sum+a[i][j]; printf("sum of row %d is %d\n", i, sum); } return 0; } 2 矩阵运算 /*---程序填空,不要改变与输入输出有关的语句。输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算:读入 1 个正整数 n(1≤n≤6), 再读入 n 阶方阵 a , 计算该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。副对角线为从矩阵的右上角至左下角的连线。 输入输出示例:括号内为说明 输入: 1 (repeat=1) 4 (n=4) 2 3 4 1 5 6 1 1 7 1 8 1 1 1 1 1 sum = 35 (2+3+4+5+6+7+8=35) ------*/ #include "stdio.h" int main(void) { int i, j, n, sum; int repeat, ri; int a[6][6]; scanf("%d", &repeat); for(ri = 1; ri <= repeat; ri++){ scanf("%d", &n); for(i = 0; i < n; i++) for(j = 0; j < n; j++) scanf("%d", &a[i][j]); sum=0; for(i=0;i<n-1;i++) for(j=0;j<n-i-1;j++) sum=sum+a[i][j]; for(i=2;i<n-1;i++) for(j=n-i;j<n-1;j++) sum=sum+a[i][j]; printf("sum = %d\n", sum); } return 0; } 3 九九乘法表 /*---程序填空,不要改变与输入输出有关的语句。输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算:输入一个正整数 n(0<n<10),输出九九乘法表的前n×n项。提示:将乘数、被乘数和乘积放入一个二维数组中,再输出该数组。输入输出示例:括号内为说明 输入: 1 (repeat=1) 3 (n=3) 输出: * 1 2 3 1 1 2 2 4 3 3 6 9 ------*/ #include "stdio.h" int main(void) { int i, j, n; int a[10][10]; int repeat, ri; scanf("%d",&repeat); for(ri = 1; ri <= repeat; ri++){ scanf("%d", &n); for(j=1;j<=n;j++) a[0][j]=j; for(i=1;i<=n;i++) a[i][0]=i; for(i=1;i<=n;i++) for(j=1;j<=i;j++) a[i][j]=a[0][j]*a[i][0]; for(i = 0; i <= n; i++){ for(j = 0; j <= n; j++) if(i == 0 && j == 0) printf("%-4c", '*'); else if(i == 0 || j <= i) printf("%-4d", a[i][j]); printf("\n"); } } return 0; } 4 判断上三角矩阵 /*---程序填空,不要改变与输入输出有关的语句。 输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算: 输入1 个正整数 n (1≤n≤6)和 n 阶方阵 a 中的元素,如果 a 是上三角矩阵, 输出"YES", 否则, 输出"NO"。 上三角矩阵指主对角线以下的元素都为0的矩阵, 主对角线为从矩阵的左上角至右下角的连线。 输入输出示例:括号内为说明 输入: 2 (repeat=2) 3 (n=3) 1 2 3 0 4 5 0 0 6 2 (n=2) 1 0 -8 2 输出: YES NO ------*/ #include "stdio.h" #include "math.h" int main(void) { int flag, i, j, n; int a[6][6]; int repeat, ri; scanf("%d", &repeat); for(ri = 1; ri <= repeat; ri++){ scanf("%d", &n); for(i = 0; i < n; i++) for(j = 0; j < n; j++) scanf("%d", &a[i][j]); flag=1; for(i=1;i<n;i++) for(j=0;j<i;j++) if(a[i][j]!=0) flag=0; else break; if(flag != 0) printf("YES\n"); else printf("NO\n"); } return 0; } 5 算算看,这是第几天? /*--程序填空,不要改变与输入输出有关的语句。 输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算: 输入日期(年、月、日),输出它是该年的第几天。 要求定义与调用函数 day_of_year(year, month, day),计算并返回year(年)、month(月)和day(日)对应的是该年的第几天,函数形参year、month和day的类型是int,函数类型也是int。 输入输出示例:括号内为说明 输入: 2 (repeat=2) 1981 3 1 (1981年3月1日) 2000 3 1 (2000年3月1日) 输出: days of year: 60 (1981年3月1日是该年的第60天) days of year: 61 (2000年3月1日是该年的第61天) -------*/ #include "stdio.h" int main(void) { int day, day_year, month, year; int repeat, ri; int day_of_year(int year, int month, int day); scanf("%d", &repeat); for(ri = 1; ri <= repeat; ri++){ scanf("%d%d%d", &year, &month, &day); day_year=day_of_year(year,month,day); printf("days of year: %d\n", day_year); } return 0; } /*---------*/ int day_of_year(int year, int month, int day) { int k,leap; int tab[2][13]={ {0,31,28,31,30,31,30,31,31,30,31,30,31}, {0,31,29,31,30,31,30,31,31,30,31,30,31} }; leap=(year%4==0&&year%100!=0||year%400==0); for(k=1;k<month;k++) day=day+tab[leap][k]; return day; } 6 找鞍点(选作) /*----程序填空,不要改变与输入输出有关的语句。 输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算: 输入 1 个正整数 n(1≤n≤6)和 n 阶方阵 a 中的元素,假设方阵 a 最多有1个鞍点,如果找到 a 的鞍点, 就输出其下标, 否则,输出"NO"。 鞍点的元素值在该行上最大, 在该列上最小。 输入输出示例:括号内为说明 输入: 2 (repeat=2) 4 (n=4) 1 7 4 1 4 8 3 6 1 6 1 2 0 7 8 9 2 (n=2) 1 7 4 1 输出: a[2][1] = 6 NO -----*/ (1)错误的 #include "stdio.h" int main(void) { int flag, i, j, k, row, col, n,x; int a[6][6]; int repeat, ri; scanf("%d", &repeat); for(ri = 1; ri <= repeat; ri++){ scanf("%d", &n); x=0; for(i = 0; i < n; i++) for(j = 0; j < n; j++) scanf("%d", &a[i][j]); flag=0; for(i=0;i<n;i++){ k=a[i][0]; row=i;col=0; for(j=1;j<n;j++){ if(a[i][j]>k){ k=a[i][j]; row=i;col=j; } } for(i=0;i<n;i++){ if(k<a[i][col]) x++;} if(x==n-1){ flag=1; break; } } if(flag != 0) printf("a[%d][%d] = %d\n", row, col,a[row][col]); else printf("NO\n"); } return 0; } (2)正确 #include "stdio.h" int main(void) { int flag, i, j, k, row, col, n; int a[6][6]; int repeat, ri; scanf("%d", &repeat); for(ri = 1; ri <= repeat; ri++){ scanf("%d", &n); for(i = 0; i < n; i++) for(j = 0; j < n; j++) scanf("%d", &a[i][j]); flag=0; for(i=0;i<n;i++){ row=i;col=0; for(j=1;j<n;j++) if(a[i][j]>a[i][col]) col=j; for(k=0;k<n;k++) if(a[k][col]<a[row][col]) break; if(k==n){ flag=1; break; } } if(flag != 0) printf("a[%d][%d] = %d\n", row, col,a[row][col]); else printf("NO\n"); } return 0; }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 百科休闲 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服