数据移位
题目描述
将一维数组中的元素循环左移 k 个位置
输入描述
第 1 行是一维数组元素的个数 n (数组大小)
第 2 行是一个整数 k , 表示移动的位置
下面 n 行为数组的元素个数
输出描述
输出 n 行,表示移动后的数字
样例输入
5
3
1
2
3
4
5
样例输出
4
5
1
2
3
一样的问题:
https://ask.csdn.net/questions/1061901
如果你有额外需要我修改或者解释的,请在下面留言评论。
#include<stdio.h>
int main()
{
int a[100],i,n,k;
scanf("%d%d",&n,&k);
for(i = 0 ; i < n ; i++ )
{
scanf("%d",a+i);
}
for(i = 0 ; i < n ; i++)
{
printf("%d\n",a[(i+k)%n]);
}
}
数量不固定,要用动态分配:
#include<stdio.h>
int main()
{
int *a, i, n, k;
scanf("%d%d", &n, &k);
a = (int*)malloc(sizeof(int)*n);
for (i = 0; i < n; i++)
{
scanf("%d", &a[i]);
}
for (i = 0; i < n; i++)
{
printf("%d\n", a[(i + k) % n]);
}
free(a);
return 0;
}
#include<iostream>
using namespace std;
void fun(int n,int k)
{
cout<<"start";
int a[n];
int i,j,t;
for(i = 0;i < n;i++)
cin>>a[i];
for (i = n - 1;i>k-1; i--)
{
t = a[n-1];
for (j = n-1;j>0; j--)
{
a[j] = a[j-1];
}
a[0] = t;
}
cout<<"输出移动后的结果";
for (i = 0; i < n; i++)
{
cout<<a[i];
}
cout<<"\n";
}
int main()
{
int n,k;
while(cin>>n>>k)
fun(n,k);
return 0;
}
望采纳