| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 675 人关注过本帖
标题:break;语句执行中遇到的问题,求解答!
只看楼主 加入收藏
ksil
Rank: 2
等 级:论坛游民
帖 子:15
专家分:31
注 册:2014-3-1
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:12 
break;语句执行中遇到的问题,求解答!
程序代码:
#include <stdio.h>
int main()
{
    int i=0;
    char c;
    while (1)
    {
        c='\0';
        while (c!=13&&c!=27)
        {
            c=getchar();
            printf("%c\n", c);
        }
        if (c==27)
            break;
        i++;
        printf("The No. is %d\n", i);
    }
    printf("The end");
}
为什么在执行程序是不能显示 printf("The No. is %d\n", i);和 printf("The end");两个语句的结果?只能显示输入的字母组合


2014-03-03 21:19
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
程序代码:
#include <stdio.h>

int main()
{
    int i=0;
    char c;
    while (1)
    {
        c='\0';
        while (1)
        {
            c=getchar();
           if (c==10)  break;
            printf("%c\n", c);
         }
        i++;
        printf("The No. is %d\n", i);
        if(i>5) break;
    }
    printf("The end");
    return 0;
}

DO IT YOURSELF !
2014-03-03 21:26
ywg0503
Rank: 2
等 级:论坛游民
帖 子:6
专家分:11
注 册:2014-3-2
收藏
得分:0 
while(1)永远为真,无限循环,执行不了最后一句!!
2014-03-03 21:28
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
以下是引用ksil在2014-3-3 21:19:15的发言:

#include  
int main()
{
    int i=0;
    char c;
    while (1)
    {
        c='\0';
        while (c!=13&&c!=27)
        {
            c=getchar();
            printf("%c\n", c);
        }
        if (c==27)
            break;
        i++;
        printf("The No. is %d\n", i);
    }
    printf("The end");
}为什么在执行程序是不能显示 printf("The No. is %d\n", i);和 printf("The end");两个语句的结果?只能显示输入的字母组合
你的内外两重循环均无退出循环的条件  所以是死死的死循环

DO IT YOURSELF !
2014-03-03 21:28
ksil
Rank: 2
等 级:论坛游民
帖 子:15
专家分:31
注 册:2014-3-1
收藏
得分:0 
回复 4楼 wp231957
这是书上的例题........我是不是该换本书了,谭浩强的《C语言程序设计》

C学习中。。
2014-03-03 21:42
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
  while (c!=13&&c!=27)
这个13是无法被执行的  27代表的是ESC键  倒是没有试过能不能被检测到

DO IT YOURSELF !
2014-03-03 21:47
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:10 
以下是引用wp231957在2014-3-3 21:47:47的发言:

  while (c!=13&&c!=27)
这个13是无法被执行的  27代表的是ESC键  倒是没有试过能不能被检测到


刚刚测试过    while (c!=13&&c!=27)   这个键值都无法被检测  所以无法退出循环  死死的死循环

DO IT YOURSELF !
2014-03-03 21:52
ksil
Rank: 2
等 级:论坛游民
帖 子:15
专家分:31
注 册:2014-3-1
收藏
得分:0 

程序代码:
#include <stdio.h>
int main()
{
    int i=0;
    char c;
    while (1)
    {
        c='\0';
        while (c!=10&&c!=27)
        {
            c=getchar();
             if (c==13)break;
            printf("%c\n", c);
             i++;
        }

        printf("The No. is %d\n", i);
        break;
    }
    printf("The end");
}
这样改居然对了,版主给推荐本书吧!这个太坑人了..

C学习中。。
2014-03-03 21:54
ksil
Rank: 2
等 级:论坛游民
帖 子:15
专家分:31
注 册:2014-3-1
收藏
得分:0 
以下是引用wp231957在2014-3-3 21:52:22的发言:



刚刚测试过    while (c!=13&&c!=27)   这个键值都无法被检测  所以无法退出循环  死死的死循环
意思就是 while(c!=13&&c!=27) 这个语句等同于 while(1) 永远为真?所以必须要一个if...break语句才能退出循环。这样的话那么懂了!

C学习中。。
2014-03-03 21:58
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
是的  包括你8楼的代码  if (c==13)break; 这都是没有用的

DO IT YOURSELF !
2014-03-03 22:00
快速回复:break;语句执行中遇到的问题,求解答!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.033231 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved