您的位置:首页 > 其它

数组的三种逆序方法:for循环,while循环,指针方式

2018-01-23 17:29 344 查看
#include <stdio.h>

//for方法

int main1()
{
int a[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
int i ;//定义下标i,逆序是把前后对应的元素交换自身存的值
int tmp;//临时存储区
//i < a大小(10)的一半,若以i < a来循环,则数组序列不变
for (i = 0; i < sizeof(a)/sizeof(int)/2; i++)
{
tmp = a[i];
a[i] = a[sizeof(a)/sizeof(int)-i-1];
a[sizeof(a)/sizeof(int)-i-1] = tmp;
}
//打印
for (i = 0; i < 10; i++)
{
printf ("%d\n", a[i]);
}

return 0;
}

//while方法

int main2()
{
int a[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
int min = 0;//数组开头元素下标
int max = sizeof(a)/sizeof(int)-1;//数组结尾元素下标
int tmp;

while (min < max)
{
tmp = a[min];
a[min++] = a[max];
a[max--] = tmp;
}

int i;

for (i = 0; i < 10; i++)
{
printf ("%d\n", a[i]);
}

return 0;
}

//指针方式

int main()
{
int a[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
int *p1 = a;//
int *p2 = a + sizeof(a)/sizeof(a[0]) - 1;
int i, tmp;

while (p1 < p2)
{
tmp = *p1;
*p1++ = *p2;
*p2-- = tmp;
}

for (i = 0; i < 10; i++)
{
printf ("%2d", a[i]);
}

printf ("\n");

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐