3 条题解
-
1
这道题其实可以用一种很
普通有趣的做法做,即:在这个数组的后面再接上这个序列,例如:如果输入1 2 3 4 5 6,那么我的目的是使我的数组内成为:1 2 3 4 5 6 1 2 3 4 5 6,这样的话,我只需要分别从1、2、3、4、5、6开始,输出其及其后共6个数,然后换行即可,下面是代码实现(建议大家对着代码自己模拟过程)#include<cstdio> using namespace std; int a[220]; int m; int main() { scanf("%d",&m); for (int i=1;i<=m;i++) { scanf("%d",&a[i]); a[i+m]=a[i];//在后面接一个同样的序列 } for (int i=1;i<=m;i++) { for (int j=i;j<=i+m-1;j++) { printf("%d ",a[j]); } printf("\n"); } return 0; }
-
0
这道题可以将输入的数据以环形输出,每一行的起始点+1即可;可根据以下程序的注释理解
#include<bits/stdc++.h> using namespace std; int a[101]; int main() { int n,m,ans=0,i=1,j,ans1=0,ans2=0; cin>>n; for(i=1;i<=n;i++) cin>>a[i]; a[0]=a[n];//在后文的求余时,结果为0(整除)即为最后一个 for(i=0;i<=n-1;i++)//每一行的偏移量从0到n-1(第一行原顺序输出) { for(j=1;j<=n;j++) { cout<<a[(i+j)%n]<<" ";//环形输出 } cout<<endl; } }
-
-7
可以理解为输入一个一维数组并将其输出一次,然后先把数组第一个元素放到末尾后,每调整一次后输出新的数组,重复(m-1)次
#include<iostream> using namespace std; int a[101]; int main() { int i,j,temp,m; cin>>m; for(i=1;i<=m;i++) cin>>a[i]; for(i=1;i<=m;i++) cout<<a[i]<<" "; cout<<endl; for(j=2;j<=m;j++) { temp=a[1]; for(i=2;i<=m;i++) a[i-1]=a[i]; a[m]=temp; for(i=1;i<=m;i++) cout<<a[i]<<" "; cout<<endl; } return 0; }
- 1
信息
- ID
- 370
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 1
- 标签
- 递交数
- 83
- 已通过
- 56
- 上传者