
第一个
#include <iostream>#include <cstdlib>
using namespace std;
int main(int argc,char argv)
{
int a[4][5];
int i,j;
int max;
int min;
int r,c;
for(i=0;i < 4;++i)
{
for(j=0;j < 5;++j)
{
a[i][j]=rand()%100;
cout<<a[i][j]<<" ";
}
cout<<endl;
}
cout<<endl;
for(i=0;i < 4;++i)
{
max=a[i][0];
for(j=0;j < 5;++j)
{
if(a[i][j] > max)
{
max=a[i][j];
c=j;
}
}
cout<<"第"<<i+1<<"行最大值为第"<<c+1<<"列的: "<<max<<endl;
}
cout<<endl;
for(j=0;j < 5;++j)
{
min=a[0][j];
for(i=0;i < 4;++i)
{
if(a[i][j] < min)
{
min=a[i][j];
c=i;
}
}
cout<<"第"<<j+1<<"列最小值为第"<<c+1<<"行的: "<<min<<endl;
}
return 0;
}
第二个
(吐槽一下,即是所在行的最大元素又是所在行的最小元素那不就是该行所有的元素都相等吗,这是要闹哪样。。。。。。)
#include <iostream>#include <cstdlib>
using namespace std;
int main(int argc,char argv)
{
int a[4][5];
int i,j;
int n=0;
int num;
for(i=0;i < 4;++i)
{
for(j=0;j < 5;++j)
{
a[i][j]=rand()%20;
cout<<a[i][j]<<" ";
}
cout<<endl;
}
for(i=0;i < 4;++i)
{
num=a[i][0];
for(j=0;j < 5;++j)
{
if(a[i][j] != num)
break;
}
if(j == 5)
{
cout<<"第"<<i+1<<"行的最大元素也是最小元素为: "<<a[i][j]<<endl;
++n;
}
}
cout<<endl;
if(n == 0)
cout<<"数组中没有任何一行的元素满足即是最大值也是最小值的条件!"<<endl;
return 0;
}
#include <iostream>
using namespace std;const M=3,N=3; //定义二维数组的行和列int main()
{
float a[M][N]={{1,2,3},{4,5,6},{7,8,9}}; //定义一个M行N列的二维数组
float ave=0; //累加总成绩,计算平均值
/方法1: 转化成一维指针/
float p=(float )a;
for(int i = 0; i < M N; ++i)
{
cout << ( p + i ) << " "; //输出二维数组的所有元素
ave = ave + ( p + i );
}
ave = ave / ( M N );
cout << "平均值 = " << ave << endl; //输出结果; /方法2: 数组指针/
ave = 0; //重新置0;
float (q)[N] = a;
for(i = 0; i < M; ++i)
{
for(int j = 0; j < N; ++j)
{
cout << ((q+i))[j]<<" "; //输出二维数组的所有元素
ave = ave + ((q+i))[j];
}
}
ave = ave / ( M N );
cout << "平均值 = " << ave << endl; //输出结果; return 0;
}
呵呵,我以前写过,是用java写的,给你看下java源码,以供参考,希望对你有帮助
java与c++语法差不多,入口是main()方法
package test;
/
打印回行图案
16 15 14 13
5 4 3 12
6 1 2 11
7 8 9 10
@author zhanngle
/
public class Round {
public static void main(String[] args) {
int row=10; //几行
int col=10; //几列
int[][] a=new int[row][col];
fill(a,row,col,0,0);
print(a);
}
/
填写最外一圈的数据,如果还有内圈数据,则递归调用本身继续填写内圈数据,直到填写完毕
@param a
@param row
@param col
@param i
@param j
/
private static void fill(int [][] a,int row,int col,int i,int j) {
int n=rowcol;
for(int c=0;c<=col-1;c++) { //横向填充数值
a[i][j+c]=n-c; //在首行从左到右填值
if(row!=1)
a[i+row-1][j+c]=n-(col2+row-3)+c; //如果不只1行,在末行从左到右填值
}
for(int r=0;r<row-2;r++) { //竖向填充数值
a[i+row-2-r][j]=a[i+row-1][j]-r-1; //在首列从下往上填值
if(col!=1) //如果不只1列,大末列从下往上填值
a[i+row-2-r][j+col-1]=a[i+row-1][j+col-1]+r+1;
else //否则覆盖首列数据
a[i+row-2-r][j]=a[i+row-1][j]+r+1;
}
if(row-2>0 && col-2>0) fill(a,row-2,col-2,i+1,j+1); //如果还没填完数据,则递归填写
}
/
打印二维数组
@param a
/
private static void print(int[][] a) {
for(int i=0;i<alength;i++) {
for(int j=0;j<a[0]length;j++) {
Systemoutprintf("%4d",a[i][j]);
}
Systemoutprintln();
}
}
}
#include <stdioh>
int main()
{
int a[4][4]; //声明一个4x4的数组
int i = 0 , j = 0;
for(i = 0 ; i < 3 ; i++) //二重循环输入二维数组的各个值
for(j = 0 ; j < 3 ; j++)
{
printf("请输入a[%d][%d]",i , j);
scanf("%d",&a[i][j]);
}
for(i = 0 ; i < 3 ; i++) //二重循环输出二维数组的各个值
{
for(j = 0 ; j < 3 ; j++)
printf("%d ",a[i][j]);
printf("\n");
}
return 0;
}
哪里不懂可以再问我哦
以上就是关于C++二维数组,请大神来写一下这两个程序全部的内容,包括:C++二维数组,请大神来写一下这两个程序、用C++编写一个程序,计算一个二维数组中所有元素的平均值(用指针处理)、编程二维数组回形遍历如何写程序(C语言)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)