neuq oj C++ 二維數組1064: 譚浩強C語言(第三版)習題8.4

1064: 譚浩強C語言(第三版)習題8.4

時間限制: 1 Sec  內存限制: 128 MB
提交: 178  解決: 110
[提交][狀態][討論版]

題目描述

寫一個函數,使給定的一個二維數組(3×3)轉置,即行列互換。

輸入

一個3x3的矩陣

輸出

轉置後的矩陣

樣例輸入

1 2 3
4 5 6
7 8 9

樣例輸出

1 4 7 
2 5 8 
3 6 9 

代碼

//實現二維數組的行列互換,轉置
#include<iostream>
using namespace std;

int main()
{
	int a[3][3];
	int b[3][3];
	int i,j;
	//輸入原矩陣a
	for(i=0;i<3;i++)
	{
		for(j=0;j<3;j++)
		{
			cin>>a[i][j];
		}
	}

	//行列互換,存入b
	for(i=0;i<3;i++)
	{
		for(j=0;j<3;j++)
		{
			b[j][i]=a[i][j];
		}
	}

	//輸出b
	for(i=0;i<3;i++)
	{
		for(j=0;j<3;j++)
		{
			cout<<b[i][j]<<" ";
		}
		cout<<endl;
	}
	return 0;
}
知識點:
1.一維數組
定義:給定長度int a[10];10表示數組長度,元素個數a[0]--a[9]
    未給定長度int n;cin>>n;int a[n];
初始化:
(1)對全部元素賦值
int a[3]={1,2,3};
(2)對部分元素賦值
int a[3]={0,1};其餘爲0
int a[]={1,2,3,4};可不指定長度
2.二維數組
定義:int a[3][4];a[行數][列數]
初始化:int a[][4]中第一維可省略,第二維不可省
(1)對全部元素賦值
int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
(2)對部分元素賦值
int a[3][4]={{1},{0,6},{0,0,11}};
應用:
(1)輸入
	for(i=0;i<3;i++)
	{
		for(j=0;j<3;j++)
		{
			cin>>a[i][j];
		}
	}
(2)遍歷輸出
for(int i=0;i<3;i++){
     for(int j=0;j<3;j++){
         printf("%d  ",a[i][j]);
     }
      printf("\n");
}
(3)遍歷逆序輸出
for(int i=2;i>=0;i--){
     for(int j=2;j>=0;j--){
         printf("%d  ",a[i][j]);
     }
}
(4)最值問題
求二維數組的最值
#include <stdio.h>
void main(){
int a[3][3]={{23,46,11},{99,45,82},{72,90,21}};
int max=a[0][0];
for(int i=0;i<3;i++){
     for(int j=0;j<3;j++){
         if(max<a[i][j]){
         max=a[i][j];
         }
     }
}
printf("%d \n",max);
}
求行最值
#include <stdio.h>
void main(){
int a[3][3]={{23,46,11},{99,45,82},{72,90,21}};
int max=a[0][0];
for(int i=0;i<3;i++){
     max=a[i][0];
     for(int j=0;j<3;j++){
         if(max<a[i][j]){
         max=a[i][j];
         }
     }
     printf("第 %d 行的最大值是:%d\n",(i+1),max);
}
}

求列最值
#include <stdio.h>
void main(){
int a[3][3]={{23,46,11},{99,45,82},{72,90,21}};
int max=a[0][0];
int i,j;
for(i=0;i<3;i++){
     for(j=0;j<3;j++){
     printf("%d ",a[i][j]);
     }
     printf("\n");
}
printf("\n");

for(j=0;j<3;j++){
     max=a[0][j];
   for(i=0;i<3;i++)
     if(max<a[i][j]){
     max=a[i][j];   
     }
      printf("第 %d 列的最大值是:%d \n",(j+1),max);
}
}

參考博客:http://blog.sina.com.cn/s/blog_796551fe0100vhcb.html
求二維數組的總和和平均值,每行每列的和還有平均值
求該數組的對角線之和
將數組進行行列互換【矩陣互換】
將該數組的進行從小到大排序,每行,每列從小到大排序



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章