导航:首页 > 编程语言 > 矩阵问题c语言代码

矩阵问题c语言代码

发布时间:2023-03-26 09:30:36

㈠ 怎样用C语言写矩阵

用二维数组,如下:
#include <stdio.h>
main()
{
int i, j, a[4][4];

for ( i = 1; i < 4; i++ )
{
for ( j = 1; j < 4; j++ )
{
scanf ("消孝伏%d", &a[i][j]);
}
}
//这样就可以将一个拿携3*3 的矩阵存在2维数组中了

for ( i = 1; i < 4; i++ )
{
for ( j = 1; j < 4; j++ )
{
printf (" %-4d ", a[i][j]);
}
printf ("\n");
}
//这样就可以显示慎消矩阵
return 0;
}

㈡ 如何用C语言编写程序求矩阵的值

//矩阵乘积.cpp

#include<stdio.h>

void main()
{
//定义矩阵1、2为输入数据矩阵,3为乘积后的矩阵
int cJuZhen1[4][3],cJuZhen2[3][2],cJuZhen3[4][2];
//定义两个指针*p1,*p2分别指向矩阵1、2
int *p1,*p2,i,j;
p1=&cJuZhen1[0][0];
p2=&cJuZhen2[0][0];
//输入矩阵1的数据
printf("请输入4*3的矩阵A: \n");
for(i=0;i<4;i++)
{
for(j=0;j<3;j++)
{
scanf("%d",cJuZhen1[i][j]);
}
}
printf("\n");
//输入矩阵2的数据
printf("请输入3*2的矩阵B: \n");
for(i=0;i<3;i++)
{
for(j=0;j<2;j++)
{
scanf("%d",cJuZhen2[i][j]);
}
}
printf("\n");
//输出矩阵1
printf("矩阵A:"\n);
for(i=0;i<4;i++)
{
for(j=0;j<3;j++)
{
printf("%d ",cJuZhen1[i][j]);
}
if(j==3)
{
printf("\n");
}
}
printf("\n");
//输出矩阵2
printf("矩阵B: \n");
for(i=0;i<3;i++)
{
for(j=0;j<2;j++)
{
printf("%d ",cJuZhen2[i][j]);
}
if(j==2)
{
printf("\n");
}
}
printf("\n");
//计算矩阵1、2的乘积
printf("两矩阵乘积为: \n");
for(i=0;i<4;i++)
{
cJuZhen3[i][0]=(*p1)*(*p2)+(*(p1+1))*(*(p2+2))+(*(p1+2))*(*(p2+4));
cJuZhen3[i][1]=(*p1)*(*(p2+1))+(*(p1+1))*(*(p2+3))+(*(p1+2))*(*(p2+5));
p1=p1+3;
}
//输出矩阵3(即矩阵乘积)数据
printf("矩阵A与B乘积为: \n");
for(i=0;i<4;i++)
{
for(j=0;j<2;j++)
{
printf("%d ",cJuZhen3[i][j]);
}
if(j==2)
{
printf("\n");
}
}
printf("\n");
}

㈢ 从键盘输入一个3行4列的矩阵,将其转置后,变成4行3列的矩阵输出。这个c语言的代码咋写

# include <stdio.h>

int main(void)

{

int a[3][4] = {11,12,13,14,21,22,23,24,31,32,33,34};

int b[4][3];

int i, j;

for(i=0; i<4; i++) //转置数组;

for(j=0; j<3; j++)

b[i][j] = a[j][i];

for(i=3; i>=0; i--) //反向输出转置后的数组;

{

for(j=2; j>=0; j--)

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

putchar(' ');

}

return 0;

}

(3)矩阵问题c语言代码扩展阅读

include用法:

#include命令预处理命令的一种,预处理命令可以将别的源代码内容插入到所指定的位置;可以标识出只有在特定条件下才会被编译的某一段程序代码;可以定义类似标识符功能的宏,在编译时,预处理器会用别的文本取代该宏。

插入头文件的内容

#include命令告诉预处理器将指定头文件的内容插入到预处理器命令的相应位置。有两种方式可以指定插入头文件:

1、#include<文件名>

2、#include"文件名"

如果需要包含标准库头文件或者实现版本所提供的头文件,应该使用第一种格式。如下例所示:

#include&lt;math.h&gt;//一些数学函数的原型,以及相关的类型和宏

如果需要包含针对程序所开发的源文件,则应该使用第二种格式。

采用#include命令所插入的文件,通常文件扩展名是.h,文件包括函数原型、宏定义和类型定义。只要使用#include命令,这些定义就可被任何源文件使用。

㈣ C语言矩阵问题

顺时针旋转,(xa, ya) 坐标变换: xb = ya; yb = (n-1)- xa;
#include <告备竖stdio.h>
#include <stdlib.h>
int main(int argc, char* argv[]) {

int i,j,xa,ya,xb,yb,n;
int *p,*q;

printf("输入n:");
scanf("%d", &n);

p = (int*) malloc(sizeof(int) * n*n);
q = (int*) malloc(sizeof(int) * n*n);

for (i=0;i<n;i++) {
for (j=0;j<n;j++) {
*(p+i*n+j) = i*n+j+1;
}
}

for (i=0;i<n;i++) {
for (j=0;j<n;j++) {
printf("%4d ", *(p+i*n+j));
}
printf("\n");
}
printf("\n");

//滚早旋转90度
for (i=0;i<n*n;i++) {
xa= i/n; ya= i%n;
xb = ya; yb = n-1-xa;
*(q + xb*n+yb) = *(p+i);
}

printf("顺袜大时针旋转90---------------------------------------------\n");
for (i=0;i<n;i++) {
for (j=0;j<n;j++) {
printf("%4d ", *(q+i*n+j));
}
printf("\n");
}
printf("\n");

free(p);
free(q);
return 0;
}

㈤ C语言 矩阵问题

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

#define SIZE 100

int main(void)
{
int i, j, k;

int m1, n1;//矩阵A的行数,列数
int m2, n2;//矩阵B的行数,列数

float *A[SIZE] = { NULL };//矩阵宏森早察A
float *B[SIZE] = { NULL };//矩阵B
float *C[SIZE] = { NULL };//矩阵C = 矩阵A * 矩阵B

printf("请输入矩阵A行数m1,列数n1:");
scanf("%d%d", &m1, &n1);

printf("请输入矩阵B行数m2,列数n2:");
scanf("%d%d", &m2, &n2);

printf("\n\n");

for (i=0; i<m1; i++)
{
A[i] = (float *) malloc (n1 * sizeof(float));
}

for (i=0; i<m2; i++)
{
B[i] = (float *) malloc (n2 * sizeof(float));
}

for (i=0; i<m1; i++)
{
C[i] = (float *) malloc (n2 *sizeof(float));
}//为矩阵A,B,C动态分配内存

if (n1 != m2)
{
printf("A,B矩阵不可蔽睁亩以相乘!\n");
return 0;
}

for (i=0; i<m1; i++)//为矩阵A赋值
{
for (j=0; j<n1; j++)
{
printf("A[%d][%d] = ", i, j);
scanf("%f", &A[i][j]);
}
}
printf("\n\n");

for (i=0; i<m2; i++)//为矩阵B赋值
{
for (j=0; j<n2; j++)
{
printf("B[%d][%d] = ", i, j);
scanf("%f", &B[i][j]);
}
}
printf("\n\n");

for (i=0; i<m1; i++)//矩阵C全部赋值为0
{
for (j=0; j<n2; j++)
{
C[i][j] = 0;
}
}

printf("矩阵A:\n");//输出矩阵A
for (i=0; i<m1; i++)
{
for (j=0; j<n1; j++)
{
printf("%-6.2f ", A[i][j]);
}
printf("\n");
}
printf("\n");

printf("矩阵B:\n");//输出矩阵B
for (i=0; i<m2; i++)
{
for (j=0; j<n2; j++)
{
printf("%-6.2f ", B[i][j]);
}
printf("\n");
}
printf("\n");

printf("矩阵C = 矩阵A * 矩阵B:\n");
for (i=0; i<m1; i++)
{
for(j=0; j<n2; j++)
{
for (k=0; k<n1; k++)
{
C[i][j] += A[i][k] * B[k][j];
}

printf("%-6.2f ", C[i][j]);
}
printf("\n");
}

return 0;
}

㈥ C语言矩阵问题

用户输入20个数(数<100)数为肢逗态int型,这20个数以6个数一组,历源每一组至少一个数是不相同的
(所有可能出现的组数)
prntf("");出所有组,求指神原码。

㈦ 用c语言实现两个矩阵相乘怎么做

1、程序运行输入数据时,第一行为A矩阵的行列携碰数和B矩阵的行列数,接着分别输入A、B两个矩阵的值。

㈧ 用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;
cin>>T.mu>>T.nu>>T.tu;
int i;
cout<<"请输入非零元素的信息(行,列,值),提醒(下标从1开始)"<<endl;
for(i=1;i<=T.tu;++i)
{
cin>>T.data[i].row>>T.data[i].col>>T.data[i].value;
}
}

void Output(TSMatrix T)
{
cout<<"矩阵的三元组表示(ROW=)"<<T.mu<<" COL="<<T.nu<<"非零个数="<<T.tu<<endl;
int i;
for(i=1;i<=T.tu;++i)
{
cout<<"ROW(行):"<<T.data[i].row<<" COL(列):"<<T.data[i].col<<" Value(值)"<<T.data[i].value<<endl;
}
}

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.tu&&j<=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_a<index_b)
{
Q.data[k]=M.data[i];
i++;
k++;
}
else if(index_a>index_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.tu&&ROWM==M.data[Current].row)
{
COLM=M.data[Current].col; //当前元素的列号,方便与T矩阵的行号相乘
for(i=rowStart[COLM];i<rowStart[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语言代码相关的资料

热点内容
maya粒子表达式教程 浏览:84
抖音小视频如何挂app 浏览:283
cad怎么设置替补文件 浏览:790
win10启动文件是空的 浏览:397
jk网站有哪些 浏览:134
学编程和3d哪个更好 浏览:932
win10移动硬盘文件无法打开 浏览:385
文件名是乱码还删不掉 浏览:643
苹果键盘怎么打开任务管理器 浏览:437
手机桌面文件名字大全 浏览:334
tplink默认无线密码是多少 浏览:33
ipaddgm文件 浏览:99
lua语言编程用哪个平台 浏览:272
政采云如何导出pdf投标文件 浏览:529
php获取postjson数据 浏览:551
javatimetask 浏览:16
编程的话要什么证件 浏览:94
钱脉通微信多开 浏览:878
中学生学编程哪个培训机构好 浏览:852
荣耀路由TV设置文件共享错误 浏览:525

友情链接