网站建设资讯

NEWS

网站建设资讯

输入输出矩阵的c语言函数 用C语言输出矩阵

用C语言编写一个矩阵运算的程序,高分!

//矩阵三元组之矩阵相加 相乘

站在用户的角度思考问题,与客户深入沟通,找到兴宁网站设计与兴宁网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都做网站、成都网站建设、企业官网、英文网站、手机端网站、网站推广、域名注册、网页空间、企业邮箱。业务覆盖兴宁地区。

#include iostream

using namespace std;

typedef int Elemtype;

#define MAXSIZE 12500 //最大非零元素

typedef struct Triple

{

Elemtype value;

int row,col;

}Triple;

typedef struct TSMatrix

{

Triple data[MAXSIZE+1];

int mu,nu,tu;

}TSMatrix;

TSMatrix T;

void InputMatrix(TSMatrix T) //输入t个非零元素

{

cout"请输入稀疏矩阵的信息,(行,列,非零元素个数)"endl;

cinT.muT.nuT.tu;

int i;

cout"请输入非零元素的信息(行,列,值),提醒(下标从1开始)"endl;

for(i=1;i=T.tu;++i)

{

cinT.data[i].rowT.data[i].colT.data[i].value;

}

}

void Output(TSMatrix T)

{

cout"矩阵的三元组表示(ROW=)"T.mu" COL="T.nu"非零个数="T.tuendl;

int i;

for(i=1;i=T.tu;++i)

{

cout"ROW(行):"T.data[i].row" COL(列):"T.data[i].col" Value(值)"T.data[i].valueendl;

}

}

void TransposeSMatrix(TSMatrix M,TSMatrix T) //矩阵的转置

{

T.mu=M.nu;T.nu=M.mu;T.tu=M.tu;

int i,j,k=1;

for(i=1;i=M.nu;++i)

{

for(j=1;j=M.tu;++j)

if(M.data[j].col==i)

{

T.data[k].row=i;

T.data[k].col=M.data[j].row;

T.data[k].value=M.data[j].value;

++k;

}

}

}

void AddMastrix(TSMatrix M,TSMatrix T,TSMatrix Q) //矩阵相加

{

int index_a,index_b,i=1,j=1,k=1;

Q.mu=M.mu; Q.nu=M.nu;

while (i=M.tuj=T.tu)

{

index_a=(M.data[i].row)*(M.data[i].col)+M.data[i].col;

index_b=(T.data[j].row)*(T.data[j].col)+T.data[j].col;

if(index_aindex_b)

{

Q.data[k]=M.data[i];

i++;

k++;

}

else if(index_aindex_b)

{

Q.data[k]=T.data[j];

j++;

k++;

}

else if(index_a==index_b)

{

if((M.data[i].value+T.data[j].value)!=0)

{

Q.data[k]=M.data[i];

Q.data[k].value=M.data[i].value+T.data[j].value;

k++;

}

++i;

++j;

}

}

//复制剩余元素

for(;i=M.tu;++i)

{

Q.data[k]=M.data[i];

k++;

}

for(;j=T.tu;++j)

Q.data[k++]=T.data[j];

Q.tu=k-1;

}

void Multiply(TSMatrix M,TSMatrix T,TSMatrix Q) //相乘

{

if(M.nu!=T.mu)

{

cerr"两矩阵相乘不合法"endl;

return ;

}

int *rowSize=new int[T.mu+1]; //存放每行非零元素的个数

int *rowStart=new int[T.mu+2]; //矩阵每行在三元组开始位置

int *temp=new int[T.nu+1]; //存放结果矩阵中每行的计算结果

int i,Current,k,ROWM,COLM,COLB;

for(i=1;i=T.mu;i++) rowSize[i]=0;

for(i=1;i=T.tu;++i) rowSize[T.data[i].row]++;

rowStart[1]=1;

for(i=2;i=T.mu+1;i++)

rowStart[i]=rowStart[i-1]+rowSize[i-1];

Current=1; k=1;

while (Current=M.tu)

{

ROWM=M.data[Current].row; //当前三元组数据中元素的行号

for(i=1;i=T.nu;++i) temp[i]=0;

while (Current=M.tuROWM==M.data[Current].row)

{

COLM=M.data[Current].col; //当前元素的列号,方便与T矩阵的行号相乘

for(i=rowStart[COLM];irowStart[COLM+1];i++) //对应T矩阵中每行的个数

{

COLB=T.data[i].col;

temp[COLB]+=(M.data[Current].value)*(T.data[i].value);

}

Current++;

}

for(i=1;i=T.nu;i++)

{

if(temp[i]!=0)

{

Q.data[k].row=ROWM;

Q.data[k].col=i;

Q.data[k].value=temp[i];

}

k++;

}

}

Q.mu=M.mu;Q.nu=T.nu;

Q.tu=k-1;

}

int main()

{

TSMatrix T,M,Q,S;

InputMatrix(M);

InputMatrix(T);

cout"两矩阵相乘"endl;

Multiply(M,T,Q);

Output(Q);

cout"两矩阵相加"endl;

AddMastrix(M,M,S);

Output(S);

system("pause");

return 0;

}

c语言程序,输入一个数,输出如下矩阵

#includestdio.h

int main()

{

int n;

scanf("%d", n);

for (int i = 1; i = n; i++)

{

printf("%d %d %d %d %d\n", i, i * 2, i * 3, i * 4, i * 5);

}

return 0;

}

C语言怎么输入输出字符组成的矩阵

1 方案

可以使用双重for循环来打印矩阵存储的字符

2 代码

#includestdio.h

void print_arr(int arr[3][3], int row, int col){

for (int i = 0; i  row; i++){

for (int j = 0; j  col; j++)

printf("%c ", arr[i][j]);

puts("");

}

}

int main(){

int arr[3][3] = {

',', ',', ',',

',', ',', ',',

',', ',', ',',

};

print_arr(arr, 3, 3);

getchar();

return 0;

}

3 运行结果

C语言编程 二维数组 输出一个2*3的矩阵

#includestdio.h

void main()

{

int a[2][3];

int i,j;

printf("输入一个2*3整型数组\n");

for(i=0;i2;i++)

for(j=0;j3;j++)

scanf("%d",a[i][j]);

printf("\n输出一个2*3整型数组\n");

for(i=0;i2;i++)

{

for(j=0;j3;j++)

printf("%d ",a[i][j]);

printf("\n");

}

}

扩展资料:

注意事项

c语言的输入输出可用标准库里面的输入输出函数,即scanf和printf。

输入输出二维数组的例子:

#includestdio.h

int main()

{

int M = 5 , N = 5;

int  array[M][N]; //定义一个5x5的int数组

printf("输入:");

for(int i = 0 ; i M ; i++){

for(int j = 0 ; j N ; j++){

scanf("%d",array[i][j]);

}

}

printf("输出:");

for(int i = 0 ; i M ; i++){

for(int j = 0 ; j N ; j++){

printf("%d ",array[i][j]);

}

}

return 0;

}

c语言~使用函数 完成3×3矩阵转置,输入一矩阵,输出其转置矩阵。

#include stdio.h

#define N 3

int array[N][N];

void transition(int array[][3])

{

int i,j,temp;

for(i=0;iN;i++)

for(j=i+1;jN;j++)

{

temp=array[i][j];

array[i][j]=array[j][i];

array[j][i]=temp;

}

}

int main(void)

{

void transition(int array[][3]);

int i,j;

printf("请输入数据\n");

for(i=0;iN;i++)

for(j=0;jN;j++)

scanf("%d",array[i][j]);

printf("\n");

transition(array);

printf("调换数据如下\n");

for(i=0;iN;i++)

{

for(j=0;jN;j++)

printf("%5d",array[i][j]);

printf("\n");

}

return 0;

}

~~~~~~

我写的代码,你自己参考吧,很简单的

c语言编程 输入一个3*3的矩阵,打印该矩阵,并输出该矩阵的对角元素

#includestdio.h

#define M 3

#define N 3

void Create_matrix(int matrix[M][N], int m, int n) {

int i,j;

printf("开始输入矩阵内容(%d行%d列)\n",m,n);

for(i=0;im;i++) {

printf("输入第%d行的%d个元素:",i+1,n);

for(j=0;jn;j++)

scanf("%d",matrix[i][j]);

}

}

void Print_matrix(int matrix[M][N], int m, int n) {

int i,j;

for(i=0;im;i++) {

for(j=0;jn;j++)

printf("%d\t",matrix[i][j]);

printf("\n");

}

}

void Print_matrix_diagonal(int matrix[M][N], int m, int n) {

int i,j;

for(i=0;im;i++) {

for(j=0;jn;j++)

if (i==j||i+j==M-1) 

printf("%d\t",matrix[i][j]);

else

printf(" \t");

printf("\n");

}

}

int main(void) {

int matrix[M][N];

Create_matrix(matrix, M, N);

printf ("======================================================\n\n");

printf ("您输入的矩阵为:\n");

Print_matrix(matrix, M, N);

printf ("对角线元素为:\n");

Print_matrix_diagonal(matrix, M, N);

return 0;

}

执行结果


网页标题:输入输出矩阵的c语言函数 用C语言输出矩阵
转载来于:http://cdweb.net/article/dodeodj.html