C语言实现 1.在一个二维数组中形成 n 阶矩阵,2.去掉靠边元素,生成新的 n-2 阶矩阵;3.求矩阵主对角线下元素之和:4.以方阵形式输出数组。

矩阵形式:

1 1 1 1 1

2 1 1 1 1

3 2 1 1 1

4 3 2 1 1

5 4 3 2 1

完整代码:

复制代码
/*编写以下函数
1.在一个二维数组中形成如以下形式的 n 阶矩阵:
1 1 1 1 1 
2 1 1 1 1 
3 2 1 1 1 
4 3 2 1 1 
5 4 3 2 1
2.去掉靠边元素,生成新的 n-2 阶矩阵;
3.求矩阵主对角线下元素之和:
4.以方阵形式输出数组
*/

#include<stdio.h>
#include<stdlib.h>


//全局变量,所有函数都可以访问到
int **arr;

//创建n阶矩阵
void func1(int n){
    // 要使用malloc函数动态分配内存
    arr = (int **)malloc(n * sizeof(int *));
    for(int i = 0; i < n; i++){
        arr[i] = (int *)malloc(n * sizeof(int));
    }
    // 创建数组
    for (int i = 0; i < n; i++){
        //先把所有的元素都赋值为1
        for (int k = 0; k < n; k++)
        {
            arr[i][k]=1;
        }
        //让后按照三角形的规律赋值
        for (int j = 0; j < i; j++){
            arr[i][j]=i+1-j;
        }
    }
}

//创建n-2阶矩阵
void func2(int n){
    //只需要调用n-2时的func1就可以
    func1(n-2);
}

//求矩阵主对角线下元素之和
int func3(int n){
    int sum=0;
    //循环累加对角线下的所有元素,只需要j<i就可以
    for (int i = 0; i < n; i++)
    { 
        for (int j = 0; j < i; j++)
        {
            sum+=arr[i][j];
        }
    }
    return sum;
}

//以方阵形式输出数组
void func4(int n){
    // 打印矩阵
    printf("该矩阵为:\n");
    for (int i = 0; i < n; i++){
        for (int j = 0; j < n; j++){
            printf("%d ", arr[i][j]);
        }
        printf("\n");
    }
}

int main(){
     int n=0;
    printf("请输入矩阵的行数:");
    scanf("%d",&n);
    //创建n阶矩阵
    func1(n);
    // 打印矩阵
    func4(n);
    printf("该矩阵主对角线下元素之和为:%d\n",func3(n));
    //生成新的矩阵
    func2(n);
    //打印新的矩阵
    func4(n-2);
    printf("该矩阵主对角线下元素之和为:%d\n",func3(n-2));
    return 0;
}

运行截图:

相关推荐
是隼人2 小时前
buuctf-pwn mrctf2020_easy_equation(64位fmt)题解(学习过程持续更新)
c语言·学习·安全·pwn入门·ctf入门
AC赳赳老秦2 小时前
文旅市场公开数据分析:基于 OpenClaw 采集景区客流与门票公示数据,生成区域文旅热度监测报告
java·c语言·python·php·symfony·deepseek·openclaw
HRTOS2 小时前
HRTOS应用示例:信号量机制详解
c语言·人工智能·嵌入式硬件·51单片机
从零开始的嵌入式之旅2 小时前
day36
linux·c语言·经验分享·笔记·嵌入式硬件
HRTOS3 小时前
HRTOS应用示例:Mutex互斥锁机制详解
c语言·单片机·嵌入式硬件·51单片机
Sumerking4 小时前
llc_control.c 专项评审(v3 更新版)
c语言·开发语言·算法·obc
繁星蓝雨4 小时前
C++设计原理———重载(extern “C“的由来、顺序依赖、语义依赖、overload、名称修饰符、对象操作、运算符重载、新增运算符、枚举和布尔类型)
c语言·c++·extern c·overload·重载·语义依赖·顺序依赖
SuperByteMaster5 小时前
编译器将unsigned short 整体提升int和unsigned short 在内存中的分配2byte的理解
c语言
XiaoQiao6669996 小时前
C 语言常用头文件及里面核心函数
c语言·开发语言
博界IT精灵7 小时前
C语言中的数据类型及其转换
c语言·开发语言