输出平方矩阵

题目:

输入一个正整数n,输出一个n阶的平方矩阵。

例如:

输入:5

输出:

1 4 9 16 25

4 9 16 25 1

9 16 25 1 4

16 25 1 4 9

25 1 4 9 16

解题思路:

本题我分别采用一维数组和二维数组来实现。

一维数组:采用一维数组输出矩阵的形式,我考虑的是一行一行的进行输出,输出一次进行一次一位数组的移动,然后再进行输出,重复这个过程。

二维数组:利用二维数组实现的过程中,我主要观察输出结果找规律实现。因为采用的是二维数组,所以我找到行标、列标与对应值的关系:a[i][j] =(i+j+1)*(i+j+1),这个规律适用于矩阵的副对角线之上的元素。在矩阵的副对角线之下,元素同样可以表示为a[i][j] = k * k的形式,但此时的k = (i+j+1)%n。

程序代码:

使用一位数组实现:

cpp 复制代码
#include <stdio.h>
//一维数组实现平方矩阵
int main(int argc, char *argv[])
{ 
    int n, i, temp, j;
    printf("你想输出几行几列的平方矩阵:");
    scanf("%d",&n);
    int a[n];
    for(i = 0; i < n; i++){//赋值
        a[i] = (i+1) * (i+1);
    }
    for(j = 0; j < n; j++){//移动次数
        if(j > 0){
            temp = a[0];//取第一个元素
            for(i = 0; i < n - 1; i++){//移动
                a[i] = a[i+1];
            }
            a[n-1] = temp;}//将第一个元素移动到最后一个位置
        for(i = 0; i < n; i++){//输出
            printf("%d ",a[i]);
        }
        putchar('\n');
    }
    return 0;
} 

使用二维数组实现:

cpp 复制代码
#include <stdio.h>
//二维数组输出平方矩阵
int main(int argc, char *argv[])
{ 
    int n, i, j, k;
    printf("你想输出几行几列的平方矩阵:");
    scanf("%d",&n);
    int a[n][n];
    for(i = 0; i < n; i++){
    for(j = 0; j < n; j++){
        k = i + j + 1;
        if(i + j >= n){//取余修正输出结果
        k %= n;
        }
    a[i][j] = k * k;
    printf("%d ",a[i][j]);
    }
    putchar('\n');
    }
    return 0;
} 

运行结果:

cpp 复制代码
你想输出几行几列的平方矩阵:5
1 4 9 16 25 
4 9 16 25 1 
9 16 25 1 4 
16 25 1 4 9 
25 1 4 9 16 
cpp 复制代码
你想输出几行几列的平方矩阵:10
1 4 9 16 25 36 49 64 81 100 
4 9 16 25 36 49 64 81 100 1 
9 16 25 36 49 64 81 100 1 4 
16 25 36 49 64 81 100 1 4 9 
25 36 49 64 81 100 1 4 9 16 
36 49 64 81 100 1 4 9 16 25 
49 64 81 100 1 4 9 16 25 36 
64 81 100 1 4 9 16 25 36 49 
81 100 1 4 9 16 25 36 49 64 
100 1 4 9 16 25 36 49 64 81 
相关推荐
侃侃_天下3 天前
最终的信号类
开发语言·c++·算法
echoarts3 天前
Rayon Rust中的数据并行库入门教程
开发语言·其他·算法·rust
Aomnitrix3 天前
知识管理新范式——cpolar+Wiki.js打造企业级分布式知识库
开发语言·javascript·分布式
每天回答3个问题3 天前
UE5C++编译遇到MSB3073
开发语言·c++·ue5
伍哥的传说3 天前
Vite Plugin PWA – 零配置构建现代渐进式Web应用
开发语言·前端·javascript·web app·pwa·service worker·workbox
小莞尔3 天前
【51单片机】【protues仿真】基于51单片机的篮球计时计分器系统
c语言·stm32·单片机·嵌入式硬件·51单片机
小莞尔3 天前
【51单片机】【protues仿真】 基于51单片机八路抢答器系统
c语言·开发语言·单片机·嵌入式硬件·51单片机
liujing102329293 天前
Day03_刷题niuke20250915
c语言
我是菜鸟0713号3 天前
Qt 中 OPC UA 通讯实战
开发语言·qt
JCBP_3 天前
QT(4)
开发语言·汇编·c++·qt·算法