shiftright函数实现将整型一维数组的元素依次循环后移一位,以下空格如何填写
你先试着自己写这个实现啊,不然这种问题你提到这,对自己学习意义不大。
可以参考答案多多练习,必须多练习,不然理解不了。
做这个题,你至少先得梳理实现这个逻辑的思路,然后根据有思路来梳理这个。
1 2 3 4 5 ==>编程 5 1 2 3 4
可以先保存数组最后下标的值,然后遍历前面的,依次从后往前重新赋值,然后最后把5赋值开始位置
#include <stdlib.h>
#include <stdio.h>
void shiftright(float *a, int n)
{
int i;
int t; //注意下面有个t变量
t = *(a+n-1); //理解这个吗? 数组的指针+1的动作 a是数组起始地址,+n-1其实到最后一个位置了
for(i = n-2; i>=0; i--) //已经保存最后一个变量了,要循环后移一位,是不是直接重新赋值
{
a[i+1] = a[i];//后移以为
}
a[0] = t; //把数组最后面的值赋值
}
int main()
{
int i;
float arr[5] = {1,2,3,4,5};
shiftright(arr, 5);
for(int i=0; i<5; i++)
{
printf("%6.2f ", arr[i]);
}
printf("\n");
return 0;
}
//输出是 : 5.00 1.00 2.00 3.00 4.00
```c
```