题目:用指针实现数组的逆序存放并输出
方法一:
#include<stdio.h>
int main()
{
int arr[10] = {0};
int i;
//计算数组元素的个数
int n = sizeof(arr)/sizeof(int);
printf("请输入10个数字为数组赋值:");
//为数组赋值
for(i=0;i<n;i++)
{
scanf("%d",&arr[i]);
}
//打印原始数组
for(i=0;i<n;i++)
{
printf("%d ",arr[i]);
}
printf("\n");
putchar('\n');
//定义指针变量
int *left = &arr[0];
int *right = &arr[n-1];
//利用指针的解引用操作交换数组首尾元素的值
for(i=0;i<(n/2);i++)
{
int temp = *left;
*left = *right;
*right = temp;
left++;
right--;
}
//打印交换后的数组
for(i=0;i<n;i++)
{
printf("%d ",arr[i]);
}
putchar('\n');
return 0;
}
方法二:
#include<stdio.h>
int main()
{
int arr[10] = {0};
int i;
//计算数组元素的个数
int n = sizeof(arr)/sizeof(int);
printf("请输入10个数字为数组赋值:");
//为数组赋值
for(i=0;i<n;i++)
{
scanf("%d",&arr[i]);
}
//打印原始数组
for(i=0;i<n;i++)
{
printf("%d ",arr[i]);
}
printf("\n");
putchar('\n');
//定义指针变量
int *left = &arr[0];
int *right = &arr[n-1];
//利用指针的解引用操作交换数组首尾元素的值
while(left<right)
{
int temp = *left;
*left = *right;
*right = temp;
left++;
right--;
}
//打印交换后的数组
for(i=0;i<n;i++)
{
printf("%d ",arr[i]);
}
putchar('\n');
return 0;
}
程序运行结果:
