#includestdio.h
创新互联2013年开创至今,公司以成都网站设计、成都网站建设、外贸网站建设、系统开发、网络推广、文化传媒、企业宣传、平面广告设计等为主要业务,适用行业近百种。服务企业客户成百上千家,涉及国内多个省份客户。拥有多年网站建设开发经验。为企业提供专业的网站建设、创意设计、宣传推广等服务。 通过专业的设计、独特的风格,为不同客户提供各种风格的特色服务。
#includestdlib.h
void memory(int **p,int m,int n); //分配的内存的函数;
void readdata(int**p,int m,int n);
void plus(int **u,int **i,int m,int n); //求和函数,要求两个矩阵同型
void redu(int **u,int **i,int m,int n); //求差,要求两个矩阵同型
void mult(int **u,int **i,int m,int n); //矩阵的积;乘法要求前一个矩阵的行数等于后一个矩阵的列数;
void release(int **p,int m,int n); //释放内存的函数;
int main() //也可使用switch语句来选择求和求差求积
{
int m,n;
scanf("%d%d",m,n); //输入m,n两个数,确定矩阵要分配内存的大小
int **k,**q,**o;
memory(**k,m,n);
memory(**q,m,n);
memory(**o,m,n); //备用,用来存放结果的一块内存;
readdata(**k,m,n);
readdata(**q,m,n);
plus(**k,**q,m,n);
redu(**k,**q,m,n);
mult(**k,**q,m,n); //在本行加//则可不求矩阵乘法,使程序适用于一切m*n的矩阵加法;
realease(**k,m,n);
realease(**q,m,n);
}
void memory(int **p,int m,int n)
{
p=*(int**)malloc(m*sizeof(int*);
for(i=0;in;i++)
{
p[i]=*(int*)malloc(n*sizeof(int));
}
}
void release(int **p,int m,int n)
{
for(i=0;in;i++)
{
free(p[i]);
p[i]=0;
}
free(p);
p=0;
}
void readdata(int **p,int m,int n)
{
int i,j;
for(i=0;im;i++)
{
for(j=0;jn;j++)
scanf("%d",p[i][j]); //要求用户由行到列输入矩阵的数据;
}
}
void plus(int **u,int **i,int m,int n)
{
int r,j;
for(r=0;rm;r++)
{
for(j=0;jn;j++)
printf("%5d",u[r][j]+i[r][j]);
printf("\n");
}
}
void redu(int **u,int **i,int m,int n)
{
int r,j;
for(r=0;rm;r++)
{
for(j=0;jn;j++)
printf("%5d",u[r][j]-i[r][j]);
printf("\n");
}
void mult(int **u,int **i,int m,int n)
{
int r,j,k,d=0;
for(r=0;rm;r++)
{
for(j=0;jn;j++)
{
for(k=0;km;k++) //这里分号错写成了逗号
d=d+u[r][k]*i[k][r];
printf("%d",d);
}
d=0;
printf("\n");
}
}
#include stdio.h
#include ctype.h
#define MAX_STR_LEN 100
int strToInt(char s[],int base) {
int i = 0,result = 0,sign = 1;
if(s[i] == '+') { sign = 1; ++i; }
else if(s[i] == '-') { sign = -1; ++i; }
if(base 10) { // 数基在10以上时
while(s[i]) {
if(islower(s[i])) result = base * result + s[i] - 'a' + 10;
else if(isupper(s[i])) result = base * result + s[i] - 'A' + 10;
else if(isdigit(s[i])) result = base * result + s[i] - '0';
++i;
}
}
else { // 数基为 0 -- 10 时
while(s[i]) {
if(isdigit(s[i]) (s[i] - '0' base))
result = base * result + s[i] - '0';
++i;
}
}
return sign * result;
}
int main() {
int base;
char s[MAX_STR_LEN];
while( (scanf("%d:", base) != EOF) (gets(s) != NULL) )
printf("%d\n", strToInt(s, base));
return 0;
}
#includestdio.h
void main()
{
int a[15][15],i,j,k,t,b;
printf("请输入一个3行3列的矩阵:\n");
/*for(i=0;i3;i++)
for(j=0;j3;j++)
scanf("%d",a[i][j]);
printf("请输入另一个3行3列的矩阵\n");
for(k=0;k3;k++)
for(t=0;t3;t++)
scanf("%d",a[k][t]);*///----此处覆盖掉了矩阵1;
for(i=0;i3;i++)
for(j=0;j3;j++)
scanf("%d",a[i][j]);
printf("请输入另一个3行3列的矩阵\n");
for(k=0;k3;k++)
for(t=0;t3;t++)
scanf("%d",a[k+3][t+3]);
printf("矩阵【1】\n");
for(i=0;i3;i++){
for(j=0;j3;j++)
printf("%d ",a[i][j]);
printf("\n");
}
printf("矩阵【2】\n");
for(i=0;i3;i++){
for(j=0;j3;j++)
printf("%d ",a[i+3][j+3]);
printf("\n");
}
printf("请选择要进行的运算:1 相加 2 相乘\n");
scanf("%d",b);
//----------楼主此处以下的四个for一一嵌套算出来的结果没什么意义。
if(b==1)
{
printf("相加:\n");
for(i=0;i3;i++)
for(j=0;j3;j++)
a[i][j]=a[i][j]+a[i+3][j+3];
for(i=0;i3;i++){
for(j=0;j3;j++)
printf("%d\t",a[i][j]);
printf("\n");}
}
if(b==2)
{
printf("相乘:\n");
for(i=0;i3;i++)
for(j=0;j3;j++)
a[i+6][j+6] = a[i][0]*a[3][j+3] + a[i][1]*a[4][j+3] + a[i][2]*a[5][j+3];
for(i=0;i3;i++){
for(j=0;j3;j++)
printf("%d\t",a[i+6][j+6]);
printf("\n");
}
}
}
复制后可直接编译运行,结果如下:格式可自行修改。
#include "stdafx.h" //这是个什么东东
#include stdio.h
int main(int argc, char* argv[])
{
int i,j,c[4][4];
int a[4][4]={{1},{2},{3},{4}};
int b[4][4]={{0,1},{0,2},{0,3},{0,4},};
for(i=0;i4;i++) //这多了一个分号
{
for(j=0;j4;j++)
c[i][j]=(a[i][j]+b[i][j]);
}
printf("矩阵A与B相加如下所示:\n");
for(i=0;i4;i++)
{
for(j=0;j4;j++)
printf("%5d",c[i][j]);
printf("\n");
}
return 0;
}
矩阵相加会简单点,设a[2][3]和b[2][3],只要在相应的地方相加就行了,
for(i=0;i2;i++)
for(j=0;j3;j++)
c[i][j]=a[i][j]+b[i][j];
两矩阵相乘,
int a[][3]={1,2,3,4,5,6,7,8,9};//A为N×P矩阵,
//假设是3*3的矩阵
int b[][5]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
//B为P×M矩阵,假设是3*5的矩阵
int c[3][5]={0};//结果矩阵3*5
for(int i=0;i3;i++)
for(int j=0;j5;j++)
for(int k=0;k3;k++)
c[i][j]+=a[i][k]*b[k][j];