我的第一份小项目作业.....开心 (2007-12-14 18:53) (矩阵加减乘 C语言)
来源:互联网 发布:小乔丹数据 编辑:程序博客网 时间:2024/05/16 13:54
#include<stdio.h>
#include<malloc.h>
void main()
{
float ** scan(int row,int column,int num);
void print(int row,int column,float ** p);
void add(int row,int column);
void minus(int row,int column);
void multiply(int row,int column,int column1);
void freearray(float ** p,int row);
int a,b,m,n,type;
while(1)
{
printf("请输入第一个矩阵的行数和列数(以回车分开):\n");
scanf("%d",&a);
scanf("%d",&b);
printf("\n请输入第二个矩阵的行数和列数(以回车分开):\n");
scanf("%d",&m);
scanf("%d",&n);
if(a<=0||b<=0||m<=0||n<=0)
{
printf("\n输入错误!\n请重新输入.\n");
continue;
}
else
{
printf("\n请输入您想进行的计算类型的编号:\n1:+\n2:-\n3:*\n");
scanf("%d",&type);
if(type==1)
{
if(a!=m||b!=n)
{
printf("\n这两个矩阵不可相加!\n请重新输入。\n");
continue;
}
else add(a,b);
break;
}
if(type==2)
{
if(a!=m||b!=n)
{
printf("\n这两个矩阵不可相减!\n请重新输入。\n");
continue;
}
else minus(a,b);
break;
}
if(type==3)
{
if(b!=m)
{
printf("\n这两个矩阵不可相乘!\n请重新输入。\n");
continue;
}
else multiply(a,n,b);
break;
}
else
{
printf("\n输入!\n请重新输入.\n");
}
}
}
}
float ** scan(int row,int column,int num)
{
int i,j;
float ** p;
p=(float**)malloc(row*sizeof(float*));
if(p==NULL)
printf("\n空间不足!\n");
else
{
for(i=0;i<row;i++)
p[i]=(float*)malloc(column*sizeof(float));
printf("\n请输入第%d个矩阵:\n",num);
for(i=0;i<row;i++)
{
for(j=0;j<column;j++)
scanf("%f",&p[i][j]);
}
return(p);
}
}
void print(int row,int column,float ** p)
{
int i,j;
printf("\nThe end is:\n");
for(i=0;i<row;i++)
for(j=0;j<column;j++)
{
printf("%-5.2f",p[i][j]);
if(j==column-1)
printf("\n");
}
}
void freearray(float ** p,int row)
{
int i;
for(i=0;i<row;i++)
free(p[i]);
free(p);
p=NULL;
}
void add(int row,int column)
{
int i,j;
float ** p;
float ** q;
float ** add;
add=(float**)malloc(row*sizeof(float*));
if(add==NULL)
printf("\n空间不足!\n");
else
{
for(i=0;i<row;i++)
add[i]=(float*)malloc(column*sizeof(float));
if(add[i]==NULL) printf("\n空间不足!\n");
else
{
p=scan(row,column,1);
q=scan(row,column,2);
for(i=0;i<row;i++)
{
for(j=0;j<column;j++)
add[i][j]=p[i][j]+q[i][j];
}
print(row,column,add);
freearray(add,row);
}
}
}
void minus(int row,int column)
{
int i,j;
float **p;
float ** q;
float ** minus;
minus=(float**)malloc(row*sizeof(float*));
if(minus==NULL) printf("\n空间不足!\n");
else
{
for(i=0;i<row;i++)
minus[i]=(float*)malloc(column*sizeof(float));
p=scan(row,column,1);
q=scan(row,column,2);
for(i=0;i<row;i++)
{
for(j=0;j<column;j++)
minus[i][j]=p[i][j]-q[i][j];
}
print(row,column,minus);
freearray(minus,row);
}
}
void multiply(int row,int column,int column1)
{
int i,j,a;
float **p;
float ** q;
float ** multiply;
multiply=(float**)malloc(row*sizeof(float*));
if(multiply==NULL) printf("\n空间不足!\n");
else
{
for(i=0;i<row;i++)
multiply[i]=(float*)malloc(column*sizeof(float));
p=scan(row,column1,1);
q=scan(column1,column,2);
for(i=0;i<row;i++)
for(j=0;j<column;j++)
for(a=0,multiply[i][j]=0;a<column1;a++)
multiply[i][j]=multiply[i][j]+p[i][a]*q[a][j];
print(row,column,multiply);
freearray(multiply,row);
}
}
哈哈 连题目都看不懂的大项目 我来了
- 我的第一份小项目作业.....开心 (2007-12-14 18:53) (矩阵加减乘 C语言)
- C语言编写能加减乘矩阵的程序
- 我的第一份自主完成的C语言练习
- c++矩阵加减乘的编写
- 开心的mdd-矩阵链乘
- 矩阵加减乘
- java通过矩阵类实现矩阵的加减乘运算
- 我的第一份工作
- 我的第一份工作
- 我的第一份文档
- 我的第一份工作
- 我的第一份blog
- 我的第一份兼职
- 我的第一份工
- 我的第一份offer
- 我的第一份工作。
- 我的第一份笔记
- 我的第一份笔记
- [Tips] Window 和 Linux 下查找文件命令
- wpa_cli调试工具的使用
- 远程使用Matlab on linux
- 生成文件目录
- Investigate into Portfolio Multi Media Tab Gallery - 2
- 我的第一份小项目作业.....开心 (2007-12-14 18:53) (矩阵加减乘 C语言)
- JComboBox 打印 ASCII码
- 实现对HTTP协议工作过程的模拟
- C#入门经典学习12-泛型
- ALSA移植命令记录
- 监听可编辑JComboBox内容改变实现验证
- AOP术语
- 函数invalidate
- C++里的静态成员函数不能用const的原因