array[5]={1,2,3,4,5}
1,2,3,4,5对折后为 5,4,3,2,1
1.首先找到数组的中间值
2.表达式
可以知道需要把数组中间值的左边值、右边的值交换,故表达式为
3.i、j,表达变量
i=0,j=4需要交换,
从图1可以知道j=len-i-1
4.只需知道中间值之前的值即可,无论是奇书还是偶数
i<len/2;
5.算法知道后,代码设计只需要封装即可
void reverseRortArray(int *pArray,int len)//对折排序或者翻转排序
{
int temp;
for(int i=0;i<len/2;i++)
{
temp=*(pArray+i);
*(pArray+i)=*(pArray+(len-1-i));
*(pArray+(len-1-i))=temp;
}
}
整个项目代码如下
#include<stdio.h>
void initArray(int *pArray,int len)
{
for(int i=0;i<len;i++)
{
printf("请输入第%d个数:",i+1);
scanf("%d",pArray+i);//地址自加+1,扫描输入的值
}
}
void printArray(int *pArray,int len)
{
puts("数组的值分别为:");
for(int i=0;i<len;i++)
{
printf("%d ",*pArray);//输出指向地址的值
pArray++;//地址自加
}
puts("");
}
void reverseRortArray(int *pArray,int len)//对折排序或者翻转排序
{
int temp;
for(int i=0;i<len/2;i++)
{
temp=*(pArray+i);
*(pArray+i)=*(pArray+(len-1-i));
*(pArray+(len-1-i))=temp;
}
}
void printReverseRortArray(int *pArray,int len)
{
puts("对折排序后数组的值分别为:");
for(int i=0;i<len;i++)
{
printf("%d ",*pArray);//输出指向地址的值
pArray++;//地址自加
}
puts("");
}
int main()
{
int array[6];
int len=sizeof(array)/sizeof(array[0]);
initArray(array,len);
printArray(&array[0],len);
reverseRortArray(array,len);
printReverseRortArray(array,len);
return 0;
}
结果输出: