第1个回答 2015-01-12
我在这儿给你提供一些思路:码程序交给你自己了!
0、提示输入4*4的实数矩阵,然后键盘依次输入实数矩阵中各元素;在屏幕上先用printf输出了4*4 矩阵的形式;
1、4*4的实数矩阵,那以为这定义一个float a[4][4]的4*4的二维矩阵或者float a[16]的一维矩阵;
2、求所有的元素中负数的个数,意思是把你把数组中每个数和0比较一遍,即循环16次,发现小于 0则把一个全局变量加1,就求出了所有的负数的个数!
3、二维数组循环通常用两个for循环完成,再找一个全局变量用于求元素之和的。一维数组的话更 简单
4、输出(2)、(3)就把那2个全局变量的值输出即可!
希望可以帮到你,如果满意请采纳!
其实你屏幕上显示的是4*4矩阵的形式是输入的,但是存储可以使用长度为16的一维数组,这样更加容易了!
第2个回答 2014-04-29
#include<stdio.h>
int main()
{
int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
int b[4][5]={1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};
int i,j,z,x,y,c[3][5];
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
c[i][j]=0; //j不能等于4,所以你的二维数组c中c[][4]没有初始化,所以才会出现乱码
for(z=0;z<5;z++)
c[i][j]+=a[i][j]*b[j][z];
}
}
for(x=0;x<3;x++)
{
for(y=0;y<5;y++)
printf("%d\t",c[x][y]);
printf("\n");
}
return 0;
}
第3个回答 2017-10-15
#include<vector>
#include<iostream>
int main()
{
using namespace std;
int m,n,p;
vector<vector<int>>A,B,C;
cout<<"please input m,n,p"<<endl;
cin >>m>>n>>p;
vector<int>tmp;
int ttp;
for(int i = 0; i<m;i++)
{
for(int j=0;j<n;j++)
{
cin>>ttp;
tmp.push_back(ttp);
}
A.push_back(tmp);
tmp.clear();
}
for(int i = 0; i<n;i++)
{
for(int j=0;j<p;j++)
{
cin>>ttp;
tmp.push_back(ttp);
}
B.push_back(tmp);
tmp.clear();
}
for(int i = 0; i<m;i++)
{
for(int j=0;j<p;j++)
{
ttp = 0;
for(int k = 0; k <n;k++)
ttp = ttp + A[i][k]*B[k][j];
tmp.push_back(ttp);
}
C.push_back(tmp);
tmp.clear();
}
for(int i = 0; i<m;i++)
{
for(int j=0;j<p;j++)
{
cout<<C[i][j]<<' ';
}
cout<<endl;
}
system("pause");
}
现在是2017年10月15日,无意中回答了一道2011年12月09日的题,留念。
第4个回答 2011-12-09
哥们,代码如下,试一下吧
#include <stdio.h>
#include <math.h>
int main ()
{
int a[2][3]={1,0,3,3,4,0},b[3][4]={1,0,2,1,2,3,4,5,2,1,1,5},c[2][4],i,j;
printf("2 3 4\n");
for (i=0;i<2;i++)
{
for (j=0;j<3;j++)
printf("%d ",a[i][j]);
printf("\n");
}
for (i=0;i<3;i++)
{
for (j=0;j<4;j++)
printf("%d ",b[i][j]);
printf("\n");
}
for (i=0;i<2;i++)
{
for (j=0;j<4;j++)
{
c[i][j] = 0;
for (int x=0;x<3;x++)
c[i][j]+=a[i][x]*b[x][j];
}
}
for (i=0;i<2;i++)
{
for (j=0;j<4;j++)
printf("%d ",c[i][j]);
printf("\n");
}
}