求大神写出详细代码,用c语言写

具体问题看图,小白一个,求指教图片图片

 int main()
{
int N;
scanf("%d", &N);
int * dat = (int *)malloc(sizeof(int) * N);
for (int i = 0; i < N; i++) scanf("%d", &dat[i]);
int shiftN;
scanf("%d", &shiftN);
for (int i = 0; i < shiftN; i++)
{
int temp = dat[N - 1];
for (int j = N - 1; j > 0; j--) dat[j] = dat[j - 1];
dat[0] = temp;
}
for (int i = 0; i < N; i++) printf("%d ", dat[i]);
}

http://codepad.org/6Tk6Px5n
在线测试
4 5 1 2 3

上面这种方法用的是动态数组,因为你不知道需要创建的数组有多长,当然你也可以#define LEN 1024,定义个大的数组长度,然后用静态数组的方法做。

 # include<stdio.h>
#include<stdlib.h>

int * create_array(int);
void init_array(int *, int);
void traversal_array(int *, int, int);

int main(void)
{
    int len = 0, point = 0;
    int * arr = NULL;

    scanf("%d",&len);
    arr = create_array(len);

    init_array(arr, len);

    scanf("%d",&point);
    traversal_array(arr, len, point);

    return 0;
}

int * create_array(int len)
{
    int * arr = (int *)malloc(sizeof(int)*len);
    return arr;
}

void init_array(int * arr,int len)
{
    int i = 0;
    for(i = 0; i < len; i++){
        scanf("%d",&arr[i]);
    }
}

void traversal_array(int * arr, int len, int point)
{
    int i = 0;
    for(i = len - point; i < len;i++){
        printf("%d ",arr[i]);
    }
    for(i = 0; i < len - point; i++){
        printf("%d ",arr[i]);
    }
}

严格来说,我那个没有移动只是造成效果上实现了而已,你将上面俩个代码合并一下,取长补短就能达到要求了。

第一个人回答的思路是对的,你不要因为别人代码,不能运行就说人家错。只不过他的代码有int i重定义的问题,修改一下就行。并且C中定义变量必须在
最开始定义,执行语句之后就不能定义了。对其稍作修改如下:

 #include<stdio.h>
#include<stdlib.h>

int main()
{
    int N;
    int * dat;
    int shiftN;
    int i,j;

    scanf("%d", &N);
    dat = (int *)malloc(sizeof(int) * N);
    for (i = 0; i < N; i++) scanf("%d", &dat[i]);
    scanf("%d", &shiftN);
    for (i = 0; i < shiftN; i++)
    {
        int temp = dat[N - 1];
        for (j = N - 1; j > 0; j--) dat[j] = dat[j - 1];
            dat[0] = temp;
    }
    for (i = 0; i < N; i++) printf("%d ", dat[i]);
}