函数问题请教,请大神帮忙解答

本人菜鸟水平,请尽量在程序语句详细注释。谢谢!

编写一个名为RoTaTaRead的函数,它将数组的浮点数和数组的大小作为参数,并将数组的元素向左旋转一个。这意味着数组的第一个元素应该被旋转到数组的末尾。不允许在函数体内部声明数组。例如,调用数组(5, 7, 1,9, 0)上的函数将旋转它并将其更改为[ 7, 1, 9,0, 5 ]。

纯C语言,不知道你要求的是啥

#include "stdio.h"
#include "string.h"

float *function(float *in, int length)//要求返回一个数组,所以只能用指针函数 
{
    float *out=(float *)malloc(sizeof(float)*length);
    //创建一个局部变量指针,用于处理数据,由于长度是未知的,所以用指针可以使函数适用于一切长度 
    //malloc用于给指针分配内存,不然程序会报错 
    int i = 0;//i用于循环 

    for (i = 0; i<length-1; i++)//将旧数组的[1]~[length-1]移到新数组的[0]~[length-2] 
    {
        out[i] = *(in+1+i) ;//左移后的数放到局部变量 ,只剩下最后一个 
    }
    out[i] = *in;//让旧数组的[0]移到新数组的[length-1],完成左移 
    return out;//返回左移后的数组 
}

void main()
{
    float aa[5] = { 1.1, 2.2, 3.3, 4.4, 5.5 };//举个例子试验一下 
    float bb[5] = { 0.0 };//初始化全零 
    int i,len=sizeof(bb)/sizeof(float);//用于循环打印 

    memcpy(bb, function(aa, 5), sizeof(float)*len);//将左移后的数组赋值给bb 
    for(i=0;i<len;i++)//打印 
    {
        printf("%.5f  ",bb[i]);
     } 
    getch();//暂停以显示 
}


https://zhidao.baidu.com/question/240531657520502524.html

//
// main.m
// testJson
//
// Created by 王鹤朝 on 2018/6/14.
// Copyright © 2018年 YMXX. All rights reserved.
//

#import

void RoTaTaRead(int *pArray, int n);

int main(int argc, const char * argv[]) {
@autoreleasepool {
// insert code here...
NSLog(@"Hello, World!");

    int a[5] = {5, 7, 1, 9, 0};
    RoTaTaRead(a, sizeof(a)/sizeof(int));


}
return 0;

}

void RoTaTaRead(int *pArray, int n)
{
if (n == 0)
{
return;
}

int temp = *pArray;
int *pMove = pArray;

for (int i = 0; i < n - 1; ++i, ++pArray)
{
    *pArray = *(++pMove);
}

*pMove = temp;

}

void RoTaTaRead(int *pArray, int n)
{
if (n == 0)
{
return;
}

int temp = *pArray;
int *pMove = pArray;

for (int i = 0; i < n - 1; ++i, ++pArray)
{
*pArray = *(++pMove);
}

*pMove = temp;

}

这里给出一个C语言的例子。这个函数支持了任意步的滚动,负数为左移,正数为也右移:
#include
#include

void cycle_move(int *array, int array_length, int steps) {
// convert steps in array_length range
steps = steps % array_length;
if (array_length==0 || steps==0) {
return;
}
// copy array to another place
int *array_copy = (int *)malloc(array_length*sizeof(int));
for (int i=0; i<array_length; ++i) {
array_copy[i] = array[i];
}
// fill moved data to array
for (int i=0; i<array_length; ++i) {
int move_target = (i+array_length+steps) % array_length;
array[move_target] = array_copy[i];
}
free(array_copy);
}

void show_array(int *array, char *array_name, int array_length) {
printf("%s[%d] = [", array_name, array_length);
for (int i=0; i<array_length; ++i) {
printf("%d", array[i]);
if (i < array_length-1) {
printf(", ");
}
}
printf("]\n");
}

int main() {
printf("************ test for the function cyc_move ************\n");
int array[] = {1,2,3,4,5,6};
int array_length = 6;
show_array(array, "array_original", array_length);
cycle_move(array, array_length, 2);
show_array(array, "array_move_2", array_length);
cycle_move(array, array_length, -1);
show_array(array, "array_then_move_-3", array_length);
cycle_move(array, array_length, -7);
show_array(array, "array_then_move_-7", array_length);
return 0;
}

以下是输出结果:
************ test for the function cyc_move ************
array_original[6] = [1, 2, 3, 4, 5, 6]
array_move_2[6] = [5, 6, 1, 2, 3, 4]
array_then_move_-3[6] = [6, 1, 2, 3, 4, 5]
array_then_move_-7[6] = [1, 2, 3, 4, 5, 6]