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

不知道哪里有问题 输不出1

#include <stdio.h>
int main()
{
    int sum = 0;
    int i;
    KKKL:for(i=1; i<=10; i++)
    {
        printf("%d\n", i);
        if(i==3)
        break;//是不是少了一个判断呢?
        goto  KKKL;                     //在这里使用goto语句
    }
    printf("结束for循环了....");  //请选择合适位置添加标识符
    return 0;   
}

正在回答

3 回答

你这个逻辑关系理错了

你这个if这么写的话

if(i==3)
        break;//是不是少了一个判断呢?
        goto  KKKL;

1:结构上少了大括号,计算机认为的是如果i==3执行break;else否则执行goto KKKL;所以当i=1时,if语句判断为i<3,执行了goto KKKL; 而你goto到for语句又把i的值初始化为1了,所以就死循环了。

2:goto是强制执行到有标识符的位置的,所以你把goto放在for语句前面是不对的,应该吧goto放在printf(“”结束for循环了“”)的前面,当i==3,输出结束for循环。

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

qq_绝不将就_0 提问者

非常感谢!
2017-01-19 回复 有任何疑惑可以回复我~

#include <stdio.h>
int main()
{
    int sum = 0;
    int i;
    for(i=1; i<=10; i++)
    {
        printf("%d\n", i);
        if(i==3)//是不是少了一个判断呢?
        goto  KKKL;                     //在这里使用goto语句
    }
     KKKL:printf("结束for循环了....");  //请选择合适位置添加标识符
    return 0;    
}

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

这样写的话,会陷入死循环吧,大概意思是这样的:

for(i=1; i<=10; i++)
    {
        printf("%d\n", i);
        if(i==3)
            break;//是不是少了一个判断呢?
        else

            for(i=1; i<=10; i++)
            {
                printf("%d\n", i);
                if(i==3)
                break;//是不是少了一个判断呢?
                else

                for...
    }


    }

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

举报

0/150
提交
取消
C语言入门
  • 参与学习       926207    人
  • 解答问题       20797    个

C语言入门视频教程,带你进入编程世界的必修课-C语言

进入课程

不知道哪里有问题 输不出1

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