请问这个代码该怎么写?

数据移位
题目描述
将一维数组中的元素循环左移 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;
}

望采纳