将a数组中第一个元素移到数组末尾,其余数据依次往前平移一个位置.c++编程

将a数组中第一个元素移到数组末尾,其余数据依次往前平移一个位置.c++编程,第1张

2035:例52平移数据
时间限制: 1000 ms 内存限制: 65536 KB
提交数: 5721 通过数: 3810
题目描述
将a数组中第一个元素移到数组末尾,其余数据依次往前平移一个位置
输入
第一行为数组a的元素个数;
第二行为n个小于1000的正整数。
输出
平移后的数组元素,每个数用一个空格隔开。
输入样例
10
1 2 3 4 5 6 7 8 9 10
输出样例
2 3 4 5 6 7 8 9 10 1
#include<bits/stdc++h>
using namespace std;
int n,i,a[10000];
int main(){
cin>>n;
for(i=1;i<=n;i++)
cin>>a[i];
for(i=2;i<=n;i++)
cout<<a[i]<<" ";
cout<<a[1];//先输出a[2]到a[n],再输出a[1]
return 0;
}

dim a(2) as integer
dim tmp as integer
a(0)=1
a(1)=2
a(3)=3
tmp=a(0)
a(0)=a(3)
a(3)=tmp
以上将第三个元素移动到第一个元素。

这个是用集合类写的,建议你多用集合类少用数组,从整个Java的api上来看,对集合类的支持要好于数组
Josephus(1, 9, 5) 这个构造方法的意思 从第1个人开始报数,一共9个人,数到5的人出列
用了一个Iterator,不用也可以
List选用了LinkedLisk,用ArrayList或Vector也可以
没有仔细想,有问题再交流
import javautilIterator;
import javautilLinkedList;
public class Main {
public static void main(String[] args) {
Josephus test = new Josephus(1, 9, 5);
for (Integer i : test) {
Systemoutprintln(i);
}

#include <stdioh>
#define N 5
void fun(int a[]){
int i,t;
t=a[0];
for(i=0;i<N-1;i++)
a[i]=a[i+1];
a[N-1]=t;
}
void main(){
int i,a[N];
for(i=0;i<N;i++)
scanf("%d",&a[i]);
fun(a);
for(i=0;i<N;i++)
printf("%d ",a[i]);
}

先用循环输入九个元素,然后,使用两次循环,每次循环把最后一个元素保存,以后把其余元素一滞后一,最后把把最后元素放到第一位,这样 *** 作两次就可以了。

#include<stdioh>

int main()

{ int i,j,k,t,a[10];

for(i=0; i<9; i++)

  scanf("%d",&a[i]);

for(j=0; j<2; j++)

{ t=a[8];

  for(k=8; k>0; k--)

    a[k]=a[k-1];

  a[0]=t;

}

for(i=0; i<9; i++)

  printf("%d ",a[i]);

}

void fun(int w, int p, int n)
{ //只需要完成此部分功能即可
int b[N],i,j;
for(i = 0; i <= p;i++)
{
b[i] = w[i];
}
for(i = 0; p+1+i < n;i++)
{
w[i] = w[p+1+i];
}
for(j = 0;j <= p;j++)
{
w[i++] = b[j];
}
}

先把要取出来的数保存到一个变量里面,然后使用循环把2到这个数前一个位置的数都向后移动一位,最后把刚才保存的数存放在第2个位置,就是这三步。
下面的代码把数组a的第n个元素移动到m处,使用循环变量i、中间变量x:
第一步:
x=a[n];
第二步:
i=n;
while (i!=m){
if (n>m) a[i]=a[--i]; else a[i]=a[++i];
}
第三步:
a[m]=x;


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/10539841.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-09
下一篇 2023-05-09

发表评论

登录后才能评论

评论列表(0条)

保存