c語言33矩陣轉置
㈠ C++題目: 寫一個函數將一個3*3的整型矩陣轉置。
1、首先在編輯器中准備好一個空白的c語言文件,引入C語言標准庫,在main函數中定義一個3x3階矩陣以及循環體中要用的變數i和j,以及一個用來交換數據的臨時變數tmp,然後下一步就可以開始編寫處理轉置的部分了:
㈡ C語言、用指針方法實現一個3*3矩陣的轉置
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
void move(int*pointer);//函數聲明
int a[3][3],i,j;
int*p;
cout<<"請輸入矩陣元素:"<<endl;
for(i=0;i<3;i++)//輸入數組
{
for(j=0;j<3;j++)
{
cin>>a<i>[j];
}
}
cout<<"輸出原矩陣:"<<endl;//輸出矩陣
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
cout<<setw(5)<<a<i>[j];
}
cout<<endl;
}
p=&a[0][0];//將數組首元素賦給指針變數p
move(p);//函數調用
cout<<"處理後的矩陣:"<<endl;
for(i=0;i<3;i++)//輸出處理後的矩陣
{
for(j=0;j<3;j++)
{
cout<<setw(5)<<a<i>[j];
}
cout<<endl;
}
return 0;
}
//交換函數
void move(int*pointer)
{
int i,j,t;
for(i=0;i<3;i++)
{
for(j=i;j<3;j++)
{
t=*(pointer+3*i+j);//這是關鍵將矩陣轉置的條件
*(pointer+3*i+j)=*(pointer+3*j+i);
*(pointer+3*j+i)=t;
}
}
}
(2)c語言33矩陣轉置擴展閱讀:
用函數
#include<stdio.h>
int main()
{
void move(int*s);
int a[3][3];int i=0;
int*p=&a[0][0];
printf("請輸入一個3*3的數組: ");
for(i=0;i<3;i++)
{
scanf("%d%d%d",&a<i>[0],&a<i>[1],&a<i>[2]);
}
move(p);
printf("轉置後的結果: ");
for(i=0;i<3;i++)
{
printf("%d%d%d ",a<i>[0],a<i>[1],a<i>[2]);
}
return 0;
}
void move(int*s)
{
int i,j,t;
for(i=0;i<3;i++)
{
for(j=i;j<3;j++)
{
t=*(s+3*i+j);
*(s+3*i+j)=*(s+3*j+i);
*(s+3*j+i)=t;
}
}
}
㈢ c語言:寫一個函數,將輸入的3*3的整形矩陣進行轉置 用函數
#include<stdio.h>
int main()
{
void move(int *s);
int a[3][3];int i=0;
int *p=&a[0][0];
printf("請輸入一個3*3的數組: ");
for(i=0;i<3;i++)
{
scanf("%d%d%d",&a[i][0],&a[i][1],&a[i][2]);
}
move(p);
printf("轉置後的結果: ");
for(i=0;i<3;i++)
{
printf("%d %d %d ",a[i][0],a[i][1],a[i][2]);
}
return 0;
}
void move(int *s)
{
int i,j,t;
for(i=0;i<3;i++)
{
for(j=i;j<3;j++)
{
t=*(s+3*i+j);
*(s+3*i+j)=*(s+3*j+i);
*(s+3*j+i)=t;
}
}
}
(3)c語言33矩陣轉置擴展閱讀:
在C語言或C++中,會把用來#include的文件的擴展名叫 .h,稱其為頭文件。
#include文件的目的就是把多個編譯單元(也就是c或者cpp文件)公用的內容,單獨放在一個文件里減少整體代碼尺寸;或者提供跨工程公共代碼。在現行的c++版本中,應用這個頭文件應是#include<stdio.h>
stdio 就是指 「standard input & output"(標准輸入輸出)所以,源代碼中如用到標准輸入輸出函數時,就要包含這個頭文件!
例如c語言中的 printf("%d",i); scanf("%d",&i);等函數。
引用方法
#include <stdio.h>
(註:在TC2.0中,允許不引用此頭文件而直接調用其中的函數,但這種做法是不標準的。也不建議這樣做。以避免出現在其他IDE中無法編譯或執行的問題。)
標准函數
int getchar()//從標准輸入設備寫入一個字元
int putchar()//向標准輸出設備讀出一個字元
int scanf(char*format[,argument…])//從標准輸入設備讀入格式化後的數據
int printf(char*format[,argument…])//向標准輸出設備輸出格式化字元串
char* gets(char*string)//從標准輸入設備讀入一個字元串
int puts(char*string)//向標准輸出設備輸出一個字元串
int sprintf(char*string,char*format[,…])//把格式化的數據寫入某個字元串緩沖區。
㈣ c語言如何通過定義函數來轉置矩陣
#include <stdio.h>
int main()
{ struct aaa
{ int x;
int y;
};
struct aaa t,a[3][3]= {0,0,0,1,0,2,1,0,1,1,1,2,2,0,2,1,2,2};
int i,j;
for(i=0; i<3; i++)
{ for(j=0; j<3; j++)
printf("[%d,%d] ",a[i][j].x,a[i][j].y);
printf(" ");
}
printf("after: ");
for(i=0; i<3; i++)
for(j=0; j<i; j++)
{ t=a[i][j];
a[i][j]=a[j][i];
a[j][i]=t;
}
for(i=0; i<3; i++)
{ for(j=0; j<3; j++)
printf("[%d,%d] ",a[i][j].x,a[i][j].y);
printf(" ");
}
return 0;
}
或:
#include <stdio.h>
struct aaa
{ int x;
int y;
};
void zhuan(struct aaa a[][3])
{ struct aaa t;
int i,j;
for(i=0; i<3; i++)
for(j=0; j<i; j++)
{ t=a[i][j];
a[i][j]=a[j][i];
a[j][i]=t;
}
}
void prt(struct aaa a[][3])
{ int i,j;
for(i=0; i<3; i++)
{ for(j=0; j<3; j++)
printf("[%d,%d] ",a[i][j].x,a[i][j].y);
printf(" ");
}
}
int main()
{ struct aaa a[3][3]= {0,0,0,1,0,2,1,0,1,1,1,2,2,0,2,1,2,2};
prt(a);
zhuan(a);
printf("after: ");
prt(a);
return 0;
}