本人菜鸟水平,请尽量在程序语句详细注释。谢谢!
编写一个名为RoTaTaRead的函数,它将数组的浮点数和数组的大小作为参数,并将数组的元素向左旋转一个。这意味着数组的第一个元素应该被旋转到数组的末尾。不允许在函数体内部声明数组。例如,调用数组(5, 7, 1,9, 0)上的函数将旋转它并将其更改为[ 7, 1, 9,0, 5 ]。
本人菜鸟水平,请尽量在程序语句详细注释。谢谢!
编写一个名为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();//暂停以显示
}