m0_74260788 2023-02-10 12:16 采纳率: 86.4%
浏览 28
已结题

数组(一堆数组)pta练习

为什么输入-5,但是结果是0啊,不应该是1吗?

写出以下程序段的运行结果。请注意,直接填数字,前后不要加空格等任何其他字符。

int i, n = 5, x;
int a[10] = {1, 3, 5, 7, 9};
scanf("%d", &x);
for (i = n-1; i >= 0; i--){
    if(x < a[i])  a[i+1] = a[i];
    else  break;
}
a[i+1] = x; 
n++;
printf("%d ", i+1); 

  • 写回答

2条回答 默认 最新

  • 北海 2023-02-10 12:24
    关注

    程序中的循环是在寻找一个合适的插入位置,如果输入的数小于数组中的某一个元素,则该元素后移,直到找到一个比输入数大的元素为止。如果输入的数比数组中所有元素都小,则程序会执行完循环后退出,并将新的数插入到数组的第一个位置。

    所以在这里,如果输入的数是-5,那么循环会执行完后退出,因为数组中的所有元素都大于-5。因此,插入位置是数组的第一个位置,也就是下标为0,所以输出0。

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

报告相同问题?

问题事件

  • 系统已结题 2月18日
  • 已采纳回答 2月10日
  • 创建了问题 2月10日

悬赏问题

  • ¥15 如何绘制动力学系统的相图
  • ¥15 对接wps接口实现获取元数据
  • ¥20 给自己本科IT专业毕业的妹m找个实习工作
  • ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
  • ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)
  • ¥50 mac mini外接显示器 画质字体模糊
  • ¥15 TLS1.2协议通信解密
  • ¥40 图书信息管理系统程序编写
  • ¥20 Qcustomplot缩小曲线形状问题
  • ¥15 企业资源规划ERP沙盘模拟