为了账号安全,请及时绑定邮箱和手机立即绑定

为什么这个代码只输出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 ;
}

正在回答

4 回答

错在if后面加了一个分号

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

望采纳!

0 回复 有任何疑惑可以回复我~
#1

hzCN

if-else语句格式: if() { 表达式1; ... 表达式n; } else { 表达式1; ... 表达式n; }
2018-12-11 回复 有任何疑惑可以回复我~
#2

qq_慕娘4133401 提问者

谢谢!
2018-12-12 回复 有任何疑惑可以回复我~
#3

qq_慕娘4133401 提问者

您能给我解释一下空语句吗?
2018-12-12 回复 有任何疑惑可以回复我~

https://img1.sycdn.imooc.com//5c0e69d70001793207460287.jpg

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

0 回复 有任何疑惑可以回复我~
#1

qq_慕娘4133401 提问者

谢谢!!
2018-12-12 回复 有任何疑惑可以回复我~

https://img1.sycdn.imooc.com//5c0e69680001c2d503100285.jpg

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

0 回复 有任何疑惑可以回复我~

#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 ;
}



0 回复 有任何疑惑可以回复我~
#1

咸鱼想打ACM

噢!打错了,应该是输出练球次数应该在if之前
2018-12-10 回复 有任何疑惑可以回复我~
#2

qq_慕娘4133401 提问者

谢谢!
2018-12-12 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信