将一维整型数组a的12个元素保存到3×4的二维数组b中。要求:
(1)a数组元素从键盘输入
(2)按3行4列输出b中各元素的值。
(3)从二维数组b中查找出最大的元素值,输出该值及其行下标和列下标。
#include "stdio.h"
#include <iostream>
using namespace std;
void main()
{
int a[12];
int b[3][4];
int i,j,s=0,k=0;
int max = 0;
for(i=0;i<12;i++){
cin>>a[i];
}
//转换
for(i=0;i<3;i++){
for(j=0;j<4;j++){
b[i][j] = a[i*4+j];
}
}
//输出
for(i=0;i<3;i++){
for(j=0;j<4;j++){
cout<<b[i][j]<<"\t";
}
cout<<endl;
}
//求最大值
for(i=0;i<3;i++){
for(j=0;j<4;j++){
if(max<b[i][j]){
max = b[i][j];
s=i;
k=j;
}
}
}
cout<<"最大值是"<<max<<",在数组中的小标是("<<s+1<<","<<k+1<<")"<<endl;
}
你题目的解答代码如下:
#include<iostream>
#include <iomanip>
using namespace std;
int main()
{
int a[12], b[3][4], i,x,y,mx=0,my=0;
for (int i = 0; i < 12; i++)
{
cin >> a[i];
}
i = 0;
for (y = 0; y < 3; y++)
{
for (x = 0; x < 4; x++)
b[y][x] = a[i++];
}
for (y = 0; y < 3; y++)
{
for (x = 0; x < 4; x++)
cout << setw(4) << b[y][x];
cout << endl;
}
for (y = 0; y < 3; y++)
{
for (x = 0; x < 4; x++)
if (b[y][x]>b[my][mx])
{
mx = x;
my = y;
}
}
cout << "最大值:" << b[my][mx] << endl;
cout << "行下标:" << my << endl;
cout << "列下标:" << mx << endl;
return 0;
}
如有帮助,望采纳!谢谢!
#include <iostream>
using namespace std;
int main()
{
int a[12],b[3][4];
int i,j,maxi=0,maxj=0;
for(i=0;i<12;i++)
cin>>a[i];
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
b[i][j] = a[i*3+j];
cout<<b[i][j]<<" ";
if(b[i][j] > b[maxi][maxj])
{
maxi = i;
maxj = j;
}
}
cout<<endl;
}
cout<<"max=b["<<maxi<<"]["<<maxj<<"]="<<b[maxi][maxj];
return 0;
}