矩阵输出
Time Limit: 1000 ms Memory Limit: 65536 KiB
Problem Description
输入n个整数,输出由这些整数组成的n行矩阵。
Input
第一行输入一个正整数N(N<=20),表示后面要输入的整数个数。
下面依次输入N个整数。
Output
以输入的整数为基础,输出有规律的n行数据。
Sample Input
5
3 6 2 5 8
Sample Output
3 6 2 5 8
8 3 6 2 5
5 8 3 6 2
2 5 8 3 6
6 2 5 8 3
Hint
Source
#include<iostream>
#include<cstdio>
using namespace std;
int main(){
int N,a[21],i,t,j;
scanf("%d",&N);
for(i=0;i<N;i++){
scanf("%d",&a[i]);
}
for(i=0;i<N;i++){//输出第一行
if(i==N-1)
printf("%d\n",a[i]);
else
printf("%d ",a[i]);
}
for(i=0;i<N-1;i++){//剩下的n-1行
t=a[N-1];//存储最后一个值
for(j=N-1;j>0;j--)
a[j]=a[j-1];//往后移
a[0]=t;//使第一个值等于最后一个值
for(j=0;j<N;j++){
if(j==N-1)
printf("%d\n",a[j]);
else
printf("%d ",a[j]);
}
t=a[N-1];
for(j=N-1;j>0;j--)
a[j]=a[j-1];
a[0]=t;
for(j=0;j<N;j++){
if(j==N-1)
printf("%d\n",a[j]);
else
printf("%d ",a[j]);
}
}
return 0;
}
二:
#include<iostream>
#include<cstdio>
using namespace std;
int a[100];
int main(){
int n;
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
}
for(int i=0;i<n;i++){
if(i==0){
for(int j=0;j<n;j++){
if(j==n-1)
printf("%d\n",a[j]);
else
printf("%d ",a[j]);
}
}
else{
for(int j=n-i;j<n;j++){
printf("%d ",a[j]);
}
for(int k=0;k<n-i;k++){
if(k==n-i-1)
printf("%d\n",a[k]);
else
printf("%d ",a[k]);
}
}
}
}