HJ83. 二维数组操作
描述
请编写程序,判断对表格的各种操作是否合法。
详细要求:
3.所有输入坐标操作,对大小的表格,行号坐标只允许0~m-1,列号坐标只允许0~n-1。超出范围应该返回错误。
输入描述
输入数据按下列顺序输入:
1 表格的行列值
2 要交换的两个单元格的行列值
3 输入要插入的行的数值
4 输入要插入的列的数值
5 输入要查询的单元格的坐标
输出描述
输出按下列顺序输出:
1 初始化表格是否成功,若成功则返回0, 否则返回-1
2 输出交换单元格是否成功
3 输出插入行是否成功
4 输出插入列是否成功
5 输出查询单元格数据是否成功
示例1
输入:
4 9 5 1 2 6 0 8 2 3 4 7 4 2 3 2 3 3 4 7
输出:
0 -1 0 -1 0 0 -1 0 0 -1
说明:
本组样例共有2组样例输入。 第一组样例: 1.初始化数据表为4行9列,成功 2.交换第5行1列和第2行6列的数据,失败。因为行的范围应该是(0,3),不存在第5行。 3.在第0行上方添加一行,成功。 4.在第8列左边添加一列,失败。因为列的总数已经达到了9的上限。 5.查询第2行第3列的值,成功。 第二组样例: 1.初始化数据表为4行7列,成功 2.交换第4行2列和第3行2列的数据,失败。因为行的范围应该是(0,3),不存在第4行。 3.在第3行上方添加一行,成功。 4.在第3列左边添加一列,成功。 5.查询第4行7列的值,失败。因为虽然添加了一行一列,但数据表会在添加后恢复成4行7列的形态,所以行的区间仍然在[0,3],列的区间仍然在[0,6],无法查询到(4,7)坐标。C 解法, 执行用时: 1ms, 内存消耗: 308KB, 提交时间: 2020-07-08
#include <stdio.h> int main() { int a[9][9]; int m,n; while(scanf("%d %d\n",&m,&n)!=EOF) { if(m>0&&m<=9&&n>0&&n<=9) { printf("0\n"); int a,b,c,d; scanf("%d %d %d %d\n",&a,&b,&c,&d); if(a>=0&&a<m&&b>=0&&b<n &&c>=0&&c<m&&d>=0&&d<n) printf("0\n"); else printf("-1\n"); int e,f; scanf("%d\n",&e); if(e<m) printf("0\n"); else printf("-1\n"); scanf("%d\n",&f); if(f<n) printf("0\n"); else printf("-1\n"); scanf("%d %d\n",&a,&b); if(a>=0&&a<m&&b>=0&&b<n ) printf("0\n"); else printf("-1\n"); } else { printf("-1\n"); } } }
C 解法, 执行用时: 1ms, 内存消耗: 312KB, 提交时间: 2021-09-13
#include <stdio.h> #include <stdlib.h> int main() { int Buff[10] = {0,0,0,0,0,0,0,0,0,0}; int Times = 0; int tmp = 0; while(scanf("%d",&tmp) != EOF) { Buff[Times++] = tmp; if(Times == 10) { if(Buff[0] > 0 && Buff[1] > 0 && Buff[0] <= 9 && Buff[1] <= 9) { printf("0\n"); if(Buff[2] < Buff[0] && Buff[3] < Buff[1] && Buff[4] < Buff[0] && Buff[5] < Buff[1] && Buff[2]>=0 && Buff[3]>=0 && Buff[4]>=0 &&Buff[5]>=0) { printf("0\n"); } else { printf("-1\n"); } if(Buff[6] < Buff[0] && Buff[0] + 1 <= 9) { printf("0\n"); } else printf("-1\n"); if(Buff[7] < Buff[1] && Buff[1] + 1 <= 9) { printf("0\n"); } else printf("-1\n"); if(Buff[8] < Buff[0] && Buff[9] < Buff[1]) { printf("0\n"); } else printf("-1\n"); } else { printf("-1\n"); printf("-1\n"); printf("-1\n"); printf("-1\n"); printf("-1\n"); continue; } Times = 0; } } return 0; }