问答详情
源自:4-14 结束语句之break语句

为什么这个代码只输出1,而不是5?求大佬解答。

#include<stdio.h>
int main()
{
 int i;
 for(i=1;i<=10;i++)
   {
 if(i == 5);
    printf("练球%d次\n",i); 
    {
     printf("哎呀!肚子疼!!\n");
  printf("训练不了啦!!\n");
  break ;
    }
   }
   printf("今天的训练到此结束");
   return 0 ;
}

提问者:qq_慕娘4133401 2018-12-10 20:50

个回答

  • hzCN
    2018-12-11 19:51:58
    已采纳

    错在if后面加了一个分号

    如果 ; 前面前面什么都不写的话代表这是一个空语句,而且if(表达式)只对离它最近的表达式有效,你写的if(i==5)后面恰好是一个空语句 ; ,所以后面{}里面的表达式都无法通过if(i==5)这个条件,也就是说跟if(i==5)这个判断条件无关,从而后面的输出语句将for循环中定义的i=1输出。

    望采纳!

  • 慕粉123__
    2018-12-10 21:28:34

    https://img4.mukewang.com/5c0e69d70001793207460287.jpg

    把分号去掉,把左大括号提到if后面就可以了

  • 慕粉123__
    2018-12-10 21:26:45

    https://img1.mukewang.com/5c0e69680001c2d503100285.jpg

    if后面有分号,已经结束了本次判断

  • 咸鱼想打ACM
    2018-12-10 21:24:46

    #include<stdio.h>
    int main()
    {
     int i;
     for(i=1;i<=10;i++)
       {
     if(i == 5);
        printf("练球%d次\n",i); 
               //这里定义不对,应该是当i!=5时,输出练球次数
        {                                                     //这里没有条件
         printf("哎呀!肚子疼!!\n");
      printf("训练不了啦!!\n");
      break ;                            //break 直接跳出循环
        }
       }
       printf("今天的训练到此结束");
       return 0 ;
    }