鱼C论坛

 找回密码
 立即注册
查看: 2206|回复: 2

以本题为例求告知二维数组的使用方法

[复制链接]
发表于 2020-12-23 16:38:16 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
输入一个二维数组(四行四列),按如下要求编程实现:

1) 输出矩阵两个对角线上的数;

2) 分别输出各行和各列的和;

3) 交换第一行和第三行的位置,交换第二列和第四列的位置并输出处理后的数组。
示例输入

1 1 1 1

2 2 2 2

3 3 3 3

4 4 4 4
示例输出

[1, 2, 3, 4] [1, 2, 3, 4] (注意两个数组之间空格隔开)

[4, 8, 12, 16] [10, 10, 10, 10]

[[3, 3, 3, 3], [2, 2, 2, 2], [1, 1, 1, 1], [4, 4, 4, 4]]
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-12-23 18:45:15 | 显示全部楼层
  1. #include <stdio.h>

  2. void swap(int * a , int * b)
  3. {
  4.         int t     ;
  5.         t = * a   ;
  6.         * a = * b ;
  7.         * b = t   ;
  8. }

  9. main()
  10. {
  11.         int d[4][4] = {0} , i , j , s                                     ;
  12.         for(i = 0 ; i < 4 ; i ++) {
  13.                 fflush(stdin)                                             ;
  14.                 for(j = 0 ; j < 4 ; j ++) scanf("%d" , & d[i][j])         ;
  15.         }
  16.         printf("[%d,%d,%d,%d] " , d[0][0] , d[1][1] , d[2][2] , d[3][3])  ;
  17.         printf("[%d,%d,%d,%d]\n" , d[0][3] , d[1][2] , d[2][1] , d[3][0]) ;
  18.         for(i = 0 ; i < 4 ; i ++) {
  19.                 for(s = j = 0 ; j < 4 ; j ++) s += d[i][j]                ;
  20.                 if(! i) printf("[")                                       ;
  21.                 else printf(",")                                          ;
  22.                 printf("%d" , s)                                          ;
  23.         }
  24.         printf("] ")                                                      ;
  25.         for(j = 0 ; j < 4 ; j ++) {
  26.                 for(s = i = 0 ; i < 4 ; i ++) s += d[i][j]                ;
  27.                 if(! j) printf("[")                                       ;
  28.                 else printf(",")                                          ;
  29.                 printf("%d" , s)                                          ;
  30.         }
  31.         printf("]\n")                                                     ;
  32.         for(j = 0 ; j < 4 ; j ++) swap(& d[0][j] , & d[2][j])             ;
  33.         for(i = 0 ; i < 4 ; i ++) swap(& d[i][1] , & d[i][3])             ;
  34.         printf("[")                                                       ;
  35.         for(i = 0 ; i < 4 ; i ++) {
  36.                 if(i) printf(",")                                         ;
  37.                 printf("[")                                               ;
  38.                 for(j = 0 ; j < 4 ; j ++) {
  39.                         if(j) printf(",")                                 ;
  40.                         printf("%d" , d[i][j])                            ;
  41.                 }
  42.                 printf("]")                                               ;
  43.         }
  44.         printf("]\n")                                                     ;
  45. }
复制代码

        编译、运行实况
  1. D:\0002.Exercise\C>g++ -o x x.c

  2. D:\0002.Exercise\C>x
  3. 1 1 1 1
  4. 2 2 2 2
  5. 3 3 3 3
  6. 4 4 4 4
  7. [1,2,3,4] [1,2,3,4]
  8. [4,8,12,16] [10,10,10,10]
  9. [[3,3,3,3],[2,2,2,2],[1,1,1,1],[4,4,4,4]]

  10. D:\0002.Exercise\C>
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-23 22:05:16 | 显示全部楼层
录入的方法随便搞了一下,具体要怎么录入可以自己改,效果是实现了。
  1. list_1 = [[0 for i in range(0,4)] for i in range(0,4)]

  2. for k in range(0,4):
  3.     for i in range(0,4):
  4.         list_1[k][i] = input("请输入:")

  5. # 测试格式
  6. # list_1 = [['1', '1', '1', '1'], ['2', '2', '2', '2'], ['3', '3', '3', '3'], ['4', '4', '4', '4']]

  7. for k in range(0,4):
  8.     for i in range(0,4):
  9.         print(list_1[k][i],end=" ")
  10.     print()

  11. #对角线
  12. ls_list = [[],[]]
  13. for k in range(0,4):
  14.     for i in range(0,4):
  15.         if k == i: # 判断左对角线
  16.             ls_list[0].append(list_1[k][i])
  17.         if k + i == 3: # 判断右对角线
  18.             ls_list[1].append(list_1[k][i])
  19. for k in ls_list:
  20.     print(k,end=" ")
  21. print()

  22. # 各行各列的和
  23. ls_list = [[],[]]
  24. for k in range(0,4):
  25.     h_sum_list = [] # 统计行
  26.     l_sum_list = [] # 统计列
  27.     for i in range(0,4):
  28.         h_sum_list.append(int(list_1[k][i]))
  29.         l_sum_list.append(int(list_1[i][k]))
  30.     ls_list[0].append(sum(h_sum_list))
  31.     ls_list[1].append(sum(l_sum_list))

  32. for k in ls_list:
  33.     print(k,end=" ")
  34. print()

  35. # 交互行
  36. for k in range(0,4):
  37.     list_1[0][k],list_1[2][k] = list_1[2][k],list_1[0][k]
  38.     list_1[1][k], list_1[3][k] = list_1[3][k], list_1[1][k]

  39. for k in list_1:
  40.     print(k,end=" ")
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-5-18 08:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表