kid_0203 2015-11-03 14:02 采纳率: 50%
浏览 1816
已采纳

c语言else break;的问题

用插入排序法对10个数进行降序排列

#define A 10  
#include <stdio.h>   
int main()   
{   
    int a[A+1],i,j,t;   
    for(i=1;i<=A;i++)   
    scanf("%d",&a[i]);   
    for(i=2;i<=A;i++)   
    {for(j=i-1;j>=1;i--,j--)   
    if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;} 
**  else break;**
    }   
    for(i=1;i<=A;i++)   
    printf("%d ",a[i]);   
    printf("\n");   
    return 0;   
} 

中间这个 else break;必须要加上吗?我觉得不用呀,,因为如果不满足if的话应该能进行下一次循环呀,,,可我去掉之后运行不了。。。为啥

  • 写回答

2条回答 默认 最新

  • jiqi323 2015-11-03 14:40
    关注

    你不觉得你的这个程序已经进入一个死循环了吗。。。。。那个break只是纠正这个死循环,让你误以为程序是没有问题的,但是实际的问题是:
    因为你的i是在循环体外面申明的变量,所以在你的嵌套循环中,里面循环结束后,i的值都会减小为1,然后外层循环又给i加了1,到了里面的循环
    又减小到1,于是就无限循环了下去。。。。。

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

报告相同问题?

悬赏问题

  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
  • ¥15 帮我写一个c++工程
  • ¥30 Eclipse官网打不开,官网首页进不去,显示无法访问此页面,求解决方法
  • ¥15 关于smbclient 库的使用
  • ¥15 微信小程序协议怎么写
  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教