输入的第一行包括一个整数N,(1<=N<=100),代表矩阵的维数。 接下来的N行每行有N个整数,分别代表矩阵的元素。
可能有多组测试数据,对于每组数据,将输入的矩阵转置后输出。
3 1 2 3 4 5 6 7 8 9
1 4 7 2 5 8 3 6 9
#include <stdio.h>
int main()
{
int n,i,j,t;
while(scanf("%d",&n)!=EOF)
{
int a[n][n];
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
{
t=a[i][j];
a[i][j]=a[j][i];
a[j][i]=t;
}
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("%d ",a[i][j]);
}
printf("\n");
}
}
} #include<stdio.h>//直接看对称a[i][j]与a[j][i]直接交换
int main()
{
int n,a[100][100],i,j,t;
scanf("%d",&n);
for(i=0;i<n;i++)//输入
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
for(i=0;i<n;i++)//交换
for(j=i+1;j<n;j++)//上三角
{
t=a[i][j];a[i][j]=a[j][i];a[j][i]=t;
}
for(i=0;i<n;i++)//输出
{
for(j=0;j<n;j++)
printf("%d ",a[i][j]);
printf("\n");
}
}
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int[][] matrix = new int[n][n];
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++) matrix[j][i] = scanner.nextInt();
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) System.out.print(matrix[i][j] + " ");
System.out.println();
}
}
}
#include <iostream>
using namespace std ;
int main() {
int N;
int x,y;
int i;
int *p = NULL ;
while ( scanf ( "%d" ,&N) == 1 ) {
if (N > 100 || N < 1 ) {
continue ;
}
p = ( int *) malloc ( sizeof ( int ) * N * N);
// x 为余数, y 为商
for (i = 0 ; i < N * N; i++) {
cin >> *(p+i);
}
for (i = 0 ; i < N * N; i++) {
x = i % N;
y = i / N;
cout << *(p+x*N+y);
if (x == N- 1 ) {
cout << '\n' ;
}
else {
cout << ' ' ;
}
}
}
return 0 ;
}
#include <stdio.h>
int main(){
int N;
while(~scanf("%d",&N)){
int m[100][100];
for(int i = 0; i < N; ++i)
for(int j = 0; j < N; ++j)
scanf("%d",&m[i][j]);
for(int i = 0; i < N; ++i){
for(int j = 0; j < N; ++j){
printf("%d",m[j][i]);
if(j==N-1)
printf("\n");
else
printf(" ");
}
}
}
return 222;
}
//注意交换的时候只需要对上/下三角操作即可,否则交换两次回到原地,不过那个直接输出的也是很秀
#include<iostream>
using namespace std;
int main(){
int n;
while(cin>>n){
int **a=new int*[n];
for(int i=0;i<n;i++)
a[i]=new int[n];
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
cin>>a[i][j];
for(int i=0;i<n;i++)
for(int j=i;j<n;j++){
int temp=a[i][j];
a[i][j]=a[j][i];
a[j][i]=temp;
}
for(int i=0;i<n;i++){
for(int j=0;j<n-1;j++)
cout<<a[i][j]<<" ";
cout<<a[i][n-1]<<endl;
}
}
} //我一直以为不用数组就是没有数组出现,为什么别人的代码都有一个二维数组--> _ -->
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,a;
while(cin>>n)
{
string s;
char c='a';
for(int i=1; i<=n; i++)
{
for(int j=1; j<=n; j++)
{
cin>>a;
if(n==1)
break;
string temp;
while(a)
{
temp+=a%10+'0';
a/=10;
}
reverse(temp.begin(),temp.end());
s+=temp;
s+=c;
}
}
if(n==1)
{
cout<<a<<endl;
continue;
}
int j=0;
int k=1,num=0;
int len=s.size();
for(int i=0; i<len; i++)
{
string temp;
while(i<len&&s[i]!='a')
temp+=s[i],i++;
if(s[i]=='a')
j++;
if(j%n==k)
{
cout<<temp<<" ";
num++;
}
if(num==n)
{
num=0;
j=0;
cout<<endl;
i=-1;
if(k==0)
break;
k=(k+1)%n;
}
}
}
return 0;
}
#include <iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
int buf[105][105];
int main()
{
int N;
while(scanf("%d",&N)!=EOF)
{
for(int i=0;i<N;i++)
{
for(int j=0;j<N;j++)
{
cin>>buf[i][j];
}
}
for(int i=0;i<N;i++)
{
for(int j=0;j<i;j++)//注意只要遍历下或上三角即可
{
int t = buf[i][j];
buf[i][j] = buf[j][i];
buf[j][i] = t;//交换下标数据
}
}
for(int i=0;i<N;i++)//输出要注意格式
{
for(int j=0;j<N;j++)
{
if(j==0) cout<<buf[i][j];
else cout<<" "<<buf[i][j];
}
cout<<endl;
}
}
return 0;
}
#include <cstdio>
const int N = 100;
void swap(int *a, int *b)
{
int t = *a;
*a = *b;
*b = t;
}
int main()
{
int matrix[N][N];
int n;
while (scanf("%d", &n) != EOF)
{
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
scanf("%d", &matrix[i][j]);
}
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < i; j++)
{
swap(&matrix[i][j], &matrix[j][i]);
}
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n - 1; j++)
{
printf("%d ", matrix[i][j]);
}
printf("%d\n", matrix[i][n - 1]);
}
}
}
#include<iostream>
#include<cstdio>
using namespace std;
int main(){
int n,a[100][100];
cin>>n;
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
cin>>a[i][j];
}
}
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
cout<<a[j][i]<<" ";
}
cout<<endl;
}
} #include<iostream>
using namespace std;
int main()
{
int a[100][100], n;
while (cin >> n)
{
for (int i = 0; i < n; i++)//输入矩阵
{
for (int j = 0; j < n; j++)
{
cin >> a[i][j];
}
}
for (int i = 0; i < n; i++)//转置
{
for (int j = 0; j < i; j++)
{
int t = a[i][j];
a[i][j] = a[j][i];
a[j][i] = t;
}
}
for (int i = 0; i < n; i++)//输出
{
for (int j = 0; j < n; j++)
{
if (j != n - 1)
{
cout << a[i][j] << " ";
}
else
cout << a[i][j] << endl;
}
}
}
return 0;
} #include <bits/stdc++.h>
using namespace std;
/*
何必老实按顺序存下来再转置?转置地存储就好了。
*/
int main() {
int N;
while (cin >> N) {
int matrix[N][N];
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
cin >> matrix[j][i];
}
}
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
cout << matrix[i][j];
if(j!=N-1)cout<<" ";
else cout<<endl;
}
}
cout<<endl;
}
return 0;
}