spontaneous 发表于 2020-12-23 16:38:16

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

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

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

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

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

1 1 1 1

2 2 2 2

3 3 3 3

4 4 4 4
示例输出

(注意两个数组之间空格隔开)



[, , , ]

jackz007 发表于 2020-12-23 18:45:15

#include <stdio.h>

void swap(int * a , int * b)
{
      int t   ;
      t = * a   ;
      * a = * b ;
      * b = t   ;
}

main()
{
      int d = {0} , i , j , s                                     ;
      for(i = 0 ; i < 4 ; i ++) {
                fflush(stdin)                                             ;
                for(j = 0 ; j < 4 ; j ++) scanf("%d" , & d)         ;
      }
      printf("[%d,%d,%d,%d] " , d , d , d , d);
      printf("[%d,%d,%d,%d]\n" , d , d , d , d) ;
      for(i = 0 ; i < 4 ; i ++) {
                for(s = j = 0 ; j < 4 ; j ++) s += d                ;
                if(! i) printf("[")                                       ;
                else printf(",")                                          ;
                printf("%d" , s)                                          ;
      }
      printf("] ")                                                      ;
      for(j = 0 ; j < 4 ; j ++) {
                for(s = i = 0 ; i < 4 ; i ++) s += d                ;
                if(! j) printf("[")                                       ;
                else printf(",")                                          ;
                printf("%d" , s)                                          ;
      }
      printf("]\n")                                                   ;
      for(j = 0 ; j < 4 ; j ++) swap(& d , & d)             ;
      for(i = 0 ; i < 4 ; i ++) swap(& d , & d)             ;
      printf("[")                                                       ;
      for(i = 0 ; i < 4 ; i ++) {
                if(i) printf(",")                                       ;
                printf("[")                                             ;
                for(j = 0 ; j < 4 ; j ++) {
                        if(j) printf(",")                                 ;
                        printf("%d" , d)                            ;
                }
                printf("]")                                             ;
      }
      printf("]\n")                                                   ;
}
      编译、运行实况
D:\0002.Exercise\C>g++ -o x x.c

D:\0002.Exercise\C>x
1 1 1 1
2 2 2 2
3 3 3 3
4 4 4 4


[,,,]

D:\0002.Exercise\C>

抉择啊 发表于 2020-12-23 22:05:16

录入的方法随便搞了一下,具体要怎么录入可以自己改,效果是实现了。
list_1 = [ for i in range(0,4)]

for k in range(0,4):
    for i in range(0,4):
      list_1 = input("请输入:")

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

for k in range(0,4):
    for i in range(0,4):
      print(list_1,end=" ")
    print()

#对角线
ls_list = [[],[]]
for k in range(0,4):
    for i in range(0,4):
      if k == i: # 判断左对角线
            ls_list.append(list_1)
      if k + i == 3: # 判断右对角线
            ls_list.append(list_1)
for k in ls_list:
    print(k,end=" ")
print()

# 各行各列的和
ls_list = [[],[]]
for k in range(0,4):
    h_sum_list = [] # 统计行
    l_sum_list = [] # 统计列
    for i in range(0,4):
      h_sum_list.append(int(list_1))
      l_sum_list.append(int(list_1))
    ls_list.append(sum(h_sum_list))
    ls_list.append(sum(l_sum_list))

for k in ls_list:
    print(k,end=" ")
print()

# 交互行
for k in range(0,4):
    list_1,list_1 = list_1,list_1
    list_1, list_1 = list_1, list_1

for k in list_1:
    print(k,end=" ")
页: [1]
查看完整版本: 以本题为例求告知二维数组的使用方法