利用C语言输入一个N*M阶矩阵

本文介绍了如何使用C语言通过嵌套循环实现输入6个数字形成一个3x2的矩阵,并以矩阵形式输出。
摘要由CSDN通过智能技术生成

输入几个数字,使其以矩阵型式呈现

#include<stdio.h>
#define N 3
#define M 2
int main()
{
	int a[N][M]={0};
	int i=0,j=0;
	printf("输入6个数字:\n"); //利用循环输出数组 
	for(i=0;i<N;++i){	//利用循环输出数组的行 
    for(j=0;j<M;++j){	//利用循环输出数组的列 
    	scanf("%d",&a[i][j]);
    	printf("%3d",a[i][j]);
	}
		printf("\n");
	}
 } 

结果:

  • 6
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
可以使用三元组存储稀疏矩阵,并利用稀疏矩阵加法的原理,将两个稀疏矩阵M和N的值相加得到一个新的稀疏矩阵A。 以下是一个示例代码: ```c #include <stdio.h> #include <stdlib.h> typedef struct { int row; // 行 int col; // 列 int val; // 值 } Triple; typedef struct { Triple* data; int m, n, len; } Matrix; void create_matrix(Matrix* mat, int m, int n, int len) { mat->m = m; mat->n = n; mat->len = len; mat->data = (Triple*)malloc(len * sizeof(Triple)); } void input_matrix(Matrix* mat) { int i; printf("请输入行数、列数、非零元素个数:"); scanf("%d%d%d", &mat->m, &mat->n, &mat->len); mat->data = (Triple*)malloc(mat->len * sizeof(Triple)); printf("请输入三元组(行、列、值):\n"); for (i = 0; i < mat->len; i++) { scanf("%d%d%d", &mat->data[i].row, &mat->data[i].col, &mat->data[i].val); } } void output_matrix(Matrix mat) { int i, j, k = 0; for (i = 1; i <= mat.m; i++) { for (j = 1; j <= mat.n; j++) { if (k < mat.len && mat.data[k].row == i && mat.data[k].col == j) { printf("%d ", mat.data[k].val); k++; } else { printf("0 "); } } printf("\n"); } } void add_matrix(Matrix M, Matrix N, Matrix* A) { int i = 0, j = 0, k = 0, t = 0; if (M.m != N.m || M.n != N.n) { printf("两个矩阵的行列数不相等,无法相加!\n"); return; } A->m = M.m; A->n = M.n; A->data = (Triple*)malloc((M.len + N.len) * sizeof(Triple)); while (i < M.len && j < N.len) { if (M.data[i].row < N.data[j].row) { A->data[k++] = M.data[i++]; } else if (M.data[i].row > N.data[j].row) { A->data[k++] = N.data[j++]; } else { if (M.data[i].col < N.data[j].col) { A->data[k++] = M.data[i++]; } else if (M.data[i].col > N.data[j].col) { A->data[k++] = N.data[j++]; } else { t = M.data[i].val + N.data[j].val; if (t != 0) { A->data[k].row = M.data[i].row; A->data[k].col = M.data[i].col; A->data[k].val = t; k++; } i++; j++; } } } while (i < M.len) { A->data[k++] = M.data[i++]; } while (j < N.len) { A->data[k++] = N.data[j++]; } A->len = k; } int main() { Matrix M, N, A; input_matrix(&M); input_matrix(&N); create_matrix(&A, 0, 0, M.len + N.len); add_matrix(M, N, &A); printf("矩阵 M:\n"); output_matrix(M); printf("矩阵 N:\n"); output_matrix(N); printf("矩阵 A = M + N:\n"); output_matrix(A); free(M.data); free(N.data); free(A.data); return 0; } ``` 运行示例: ``` 请输入行数、列数、非零元素个数:3 3 3 请输入三元组(行、列、值): 1 1 1 2 2 2 3 3 3 请输入行数、列数、非零元素个数:3 3 3 请输入三元组(行、列、值): 1 1 2 2 2 3 3 3 4 矩阵 M: 1 0 0 0 2 0 0 0 3 矩阵 N: 2 0 0 0 3 0 0 0 4 矩阵 A = M + N: 3 0 0 0 5 0 0 0 7 ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值