数组编程请高手帮忙...

来源:百度知道 编辑:UC知道 时间:2024/05/25 13:19:20
题目:将一个数组中的值按逆序重新存放,例如原来的顺序为:8,6,5,4,1;要求改为:1,4,5,6,8。
书上讲的解题思路是:以中间的元素为中心,将其俩侧对称的元素的值互换即可。下面的程序是书上照搬的有些语句不明白= =!请你们帮帮忙让我理解下面的句子谢谢。。。。
程序:#include<stdio.h>
#define N 5
void main()
{
int a[N],i,temp;
printf("enter array a:\n");
for (i=0;i<N;i++)
scanf("%d",&a[i]);
printf("arraya:\n");
for(i=0;i<N;i++)
printf("%4d",a[i]);
for(i=0;i<N/2;i++)/*这一句N/2=2.5还是2?*/
{
temp=a[i]; /*这一句和下面俩句都不明白= =!*/
a[i]=a[N-i-1];/* N-i-1是什么意思?反正就是迷糊请高手详细讲解一下谢谢感激不尽*/
a[N-i-1]=temp;/*还有这一句*/
}
printf("\nNow,array a:\n");
for(i=0;i<N;i++)
printf("%4d",a[i]);
printf("\n");
}

for(i=0;i<N/2;i++)// "/"的作用是取整,也就是说N/2是2
for循环里面是一个调换数组中两个元素位置的程序,temp是中间变量
比如数组1,2,3,4,5
当i=0时,进入循环,temp=a[0];第二句是把a[4]赋值给a[0],然后把,temp赋值给a[4],效果就是吧a[0]跟a[4]调换顺序了,你可以用断点调试一下看看,就很明白了。