随机生成一个5*5的矩阵 c++

要求该方阵中所有元素都是两位数,且该方阵的副对角线上方元素都是偶数,副对角线和它下方元素都是奇数。

这是我打的: 编译连接时都没报错,运行时只输出个0,不知道什么意思,哪位大神给指明一下哪错了呗!谢谢啦 !(初学c++,只学到数组,太高深的算法就算了吧。。。。还有悬赏我就这点财富值了。。。。实属无奈,帮帮我吧!)
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
void main()
{
srand((unsigned)time(NULL));
int a[5][5]={0};
for(int i=0;i<5;i++)
{
for(int j=0;j<5;j++)
{
do
{
int temp=(int)(rand()*90.0/(RAND_MAX))+10;
if((i+j<=4&&temp%2==0)||(i+j>4&&temp%2!=0))
a[i][j]=temp;
}while(a[i][j]!=0);
cout<<a[i][j]<<'\t';
}
cout<<endl;
}
}

写得复杂了点,其实中间的循环没有必要:
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
void main()
{
srand((unsigned)time(NULL));
int a[5][5]={0};
for(int i=0;i<5;i++)
{
for(int j=0;j<5;j++)
{
if(i<j)
a[i][j]=(rand()%45+5)*2;
else
a[i][j]=(rand()%45+5)*2+1;
cout<<a[i][j]<<'\t';
}
cout<<endl;
}
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2018-11-05
while括号里面条件错了,应该是元素值与0相等时继续循环

怎么用C++语言建立一个5X5矩阵?有人知道吗?
{ public:matrix(int);~matrix(){};void print();private:int a[5][5];int i;int j;};matrix::matrix(int k){ for(i=0;i<5;++i)for(j=0;j<5;++j)a[i][j]=k;} void matrix::print(){ for(i=0;i<5;++i){ for(j=0;j<5;++j)cout<<setw(4)<<a[i][j];cout<...

c++定义一个5*5的矩阵a,控制输出上三角数据。
如果我没记错,上三角应该是指主对角线以下全是0的方阵,那这样的话,只要令主对角线以下置零就好了,主要分析点就是:主对角线以下,行数比列数大。最终实现程序如下,键盘录入矩阵数据,最后打印出上三角:include <iostream>using namespace std;#define N 5 \/\/可通过改变此值修改方阵行列数int a...

C语言编写程序,求一个5 x 5矩阵的每行和、每列和、所有元素和_百度知 ...
1、首先在电脑中,打开Dev-c++软件,点击“新建源代码”,如下图所示。2、具体程序如下,如下图所示。3、此次的程序最终目的是求出3x3的整型矩阵对角线元素之和,所以要向计算机输入3x3矩阵中的所有元素。4、其次要对输入的矩阵的元素进行放置于相应的位置,以便于之后的计算其对角元素之和。5、最后需...

C语言编写程序,求一个5 x 5矩阵的每行和、每列和、所有元素和_百度知 ...
1、首先在电脑中,打开Dev-c++软件,点击“新建源代码”,如下图所示。2、具体程序如下,如下图所示。3、此次的程序最终目的是求出3x3的整型矩阵对角线元素之和,所以要向计算机输入3x3矩阵中的所有元素。4、其次要对输入的矩阵的元素进行放置于相应的位置,以便于之后的计算其对角元素之和。5、最后需...

C++,5×5矩阵,对角线元素为1,其余为0.下面程序怎么改?
include<iostream> using namespace std;void main(){ int i=0,j=0;for(i=0;i<=4;i++){ for(j=0;j<=4;j++){ if((i==j)||(i+j)==4)cout<<" 1";else cout<<" 0";} cout<<endl;} } 楼主这个呢? 还有什么要求吗? 还是有不懂的地方? 欢迎追问 ...

C++中生成一个5*5的二维数组,输入数据,输入a,b的值,将a行和b行数据交...
for (int i = 0; i <4; i++) \/\/i值在设置为5越界异常 { \/\/for (int j = 0; j < 4; j++) \/\/先交换最后输出 \/\/{ a1[i] = array[n][i];a2[i] = array[m][i];array[n][i] = a2[i];array[m][i] = a1[i];\/\/cout << array[i][j] << endl;\/\/} } } ...

C++编程:编写函数,对一个5×5的矩阵中任意两行进行交换。
int main(){ int a[5][5];int i,j;int m,n;printf("输入5*5的矩阵:\\n");for(i=0;i<5;i++){ for(j=0;j<5;j++)scanf("%d",&a[i][j]);} printf("输入交换的行数:");scanf("%d %d",&n,&m);for(i=0;i<5;i++){ int temp=a[n][i];a[n][i]=a[m][i...

寻找顺转数阵的c++程序,自己编的错误太多,好像不对,不知怎么编了,求...
控制好旋转一圈的边长,比如 5*5 方阵,最外层每个边填写 4 个数字(边长为4),即 {1,2,3,4},{5,6,7,8},...依此类推。填满四条边之后,再填写里面一圈,每个边填写 2 个数字(边长为2),即{17,18},{19,20} 等等。直到最后,最内一圈的边长可能为 1(n 为偶数时)...

C++ 编程问题:利用随机函数 rand() 产生一个 5 × 5 的二维数组 array...
cout<<"随机生成的5*5的数列为"<<endl;cout<<endl;for(i=0;i<5;i++){ for(int j=0;j<5;j++){ cout<<arrary[i][j]<<"\\t";if(j==4){ cout<<endl;cout<<endl;} } } \/\/取每一行最大数为big,每一列最小数为small。sl big[5];sl small[5];for(i=0;i<5;i++){...

用c++求*矩阵排列
要用双循环 比如 for(int i=0; i<5; i++){ for(int j=0; j<5; j++)cout << "*";cout << endl;} 出来的就是5*5的矩阵 更多的排列 可以修改i 与 j的值 以及运算

相似回答