填空题 以下程序实现了数组元素按相反顺序进行存放。
#include<stdio.h>
int main()
{
int i, a[10], temp;
int* p, *low, *high;
1;
for(i=0; i<10; i++)
scanf("%d", p+ 2); /*输入数组元素*/
for(i=0; i<10; i++)
{
printf("%d", *p); /*输出原数组元素*/
3;
}
printf("/n");
for(low=&a[0], high=&a[9]; low<high; 4)
{temp=*high; *high=*low; *low=temp;}
for(i=0; i<10; i++)
printf("%d", a[i]); /*输出变换后的数组元素*/
return 0;
}
【正确答案】
【答案解析】p=a i p++ low++, high--[解析] 根据程序中前2个for语句可知,应将P指向数组a;为了输入各数组元素,p+ ---|||________|||---应依次表示各数组元素的地址,由于p指向a[0],所以可以使用循环变量i,通过p+i来实现。为了输出原数组各元素,*P应能在循环中依次表示各元素,只能在第三空中使p逐次加上1;为实现各数组元素按相反顺序进行存放,使用了low、high两个指针变量,起始时它们分别指向数组的首和尾,当low所指数组元素的下标值小于high所指数组元素的下标值时,将它们所指的数组元素对调。每循环一次,low应该加上1,而high应该减去1,这样,经过5次循环,便可实现目标。