鱼C论坛

 找回密码
 立即注册
查看: 1923|回复: 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]]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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[4][4] = {0} , i , j , s                                     ;
        for(i = 0 ; i < 4 ; i ++) {
                fflush(stdin)                                             ;
                for(j = 0 ; j < 4 ; j ++) scanf("%d" , & d[i][j])         ;
        }
        printf("[%d,%d,%d,%d] " , d[0][0] , d[1][1] , d[2][2] , d[3][3])  ;
        printf("[%d,%d,%d,%d]\n" , d[0][3] , d[1][2] , d[2][1] , d[3][0]) ;
        for(i = 0 ; i < 4 ; i ++) {
                for(s = j = 0 ; j < 4 ; j ++) s += d[i][j]                ;
                if(! i) printf("[")                                       ;
                else printf(",")                                          ;
                printf("%d" , s)                                          ;
        }
        printf("] ")                                                      ;
        for(j = 0 ; j < 4 ; j ++) {
                for(s = i = 0 ; i < 4 ; i ++) s += d[i][j]                ;
                if(! j) printf("[")                                       ;
                else printf(",")                                          ;
                printf("%d" , s)                                          ;
        }
        printf("]\n")                                                     ;
        for(j = 0 ; j < 4 ; j ++) swap(& d[0][j] , & d[2][j])             ;
        for(i = 0 ; i < 4 ; i ++) swap(& d[i][1] , & d[i][3])             ;
        printf("[")                                                       ;
        for(i = 0 ; i < 4 ; i ++) {
                if(i) printf(",")                                         ;
                printf("[")                                               ;
                for(j = 0 ; j < 4 ; j ++) {
                        if(j) printf(",")                                 ;
                        printf("%d" , d[i][j])                            ;
                }
                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
[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]]

D:\0002.Exercise\C>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

for k in range(0,4):
    for i in range(0,4):
        list_1[k][i] = 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[k][i],end=" ")
    print()

#对角线
ls_list = [[],[]]
for k in range(0,4):
    for i in range(0,4):
        if k == i: # 判断左对角线
            ls_list[0].append(list_1[k][i])
        if k + i == 3: # 判断右对角线
            ls_list[1].append(list_1[k][i])
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[k][i]))
        l_sum_list.append(int(list_1[i][k]))
    ls_list[0].append(sum(h_sum_list))
    ls_list[1].append(sum(l_sum_list))

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

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

for k in list_1:
    print(k,end=" ")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-17 01:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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