freemandj 2019-12-01 16:35 采纳率: 100%
浏览 845
已采纳

不理解(i=0;i<n/2;i++),为什么要(i<n/2)

7-1 将数组中的数逆序存放 (20 分)
本题要求编写程序,将给定的n个整数存入数组中,将数组中的这n个数逆序存放,再按顺序输出数组中的元素。

输入格式:
输入在第一行中给出一个正整数n(1≤n≤10)。第二行输入n个整数,用空格分开。

输出格式:
在一行中输出这n个整数的处理结果,相邻数字中间用一个空格分开,行末不得有多余空格。

输入样例:
4
10 8 1 2
输出样例:
2 1 8 10
#include
#define MAX 10
int main()
{

int i,n;
int temp;
int a[MAX];
scanf("%d",&n);
for(i=0; i<n; i++)
{

scanf("%d",&a[i]);
}
for(i=0;i<n/2;i++)
{

temp = a[i];
a[i] = a[n-i-1];

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

printf(" %d",a[i]);
}
return 0;
}

  • 写回答

2条回答 默认 最新

  • threenewbee 2019-12-01 16:55
    关注

    前面的和后面的交换,所以是n/2
    如果是n的话,那么过了一半,又交换,那么等于交换回来了。
    看下面的例子:
    1 2 3 4 5
    i=0交换 15:5 2 3 4 1
    i=1交换2 4:5 4 3 2 1
    i=2 交换 3自己:5 4 3 2 1
    i=3>5/2停止,完成
    如果不停止,再交换4 2就成了5 2 3 4 1,再交换1 5成了1 2 3 4 5就回来了

    问题解决请点下"采纳"

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已采纳回答 9月6日

悬赏问题

  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作