| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 409 人关注过本帖
标题:这是为什么呢(运行结果为何是两行)
只看楼主 加入收藏
JackyZhang
Rank: 2
等 级:论坛游民
帖 子:82
专家分:29
注 册:2010-7-12
结帖率:60%
收藏
已结贴  问题点数:10 回复次数:3 
这是为什么呢(运行结果为何是两行)
程序代码:
main()
{
    char pw;
    scanf("%c",&pw);
    while (pw!='q')
    {
        printf("wrong\n");
        scanf("%c",&pw);
    }
    printf("you're welcome!\n");
    getch();
}
输入q运行结果是you're welcome!
输入非q运行结果是wrong
                 wrong(为什么是两行呢)
若什么也不输入直接按enter键,运行结果是 wrong(就一行)
谁可以为我解答一下
先谢过了
本人用的是TC
搜索更多相关主题的帖子: 结果 运行 
2010-07-17 00:02
do8do8do8
Rank: 10Rank: 10Rank: 10
来 自:沙滩
等 级:贵宾
威 望:17
帖 子:366
专家分:1845
注 册:2010-7-2
收藏
得分:5 
你用的是%c格式 回车也是一个字符
当你输入非q并按了回车后
第一个scanf()接受了你输入的值
因为是非q所以进入循环
输出wrong
本该这里停下来给你再次输入的但是
第二个scanf()也是%c格式,它自动接受了 回车符
回车符也是非q
因此循环继续 输出第二行wrong
scanf()这下没有现成字符可接受了,因此会停顿下来等用户输入

可以在
 while (pw!='q')
    {
      
        printf("wrong\n");
        scanf("%c",&pw);
       printf("%d\n",pw);/*在这里添加个输入语句来观测 pw的值*/
    }

学C语言从底层开始,学编程从问题开始,一日学会C!!!
2010-07-17 00:36
JackyZhang
Rank: 2
等 级:论坛游民
帖 子:82
专家分:29
注 册:2010-7-12
收藏
得分:0 
回复 2楼 do8do8do8
你说的好像有理 怎么添加,还有。你写的%d 该是%f吧。输出函数应该放到while循环外吧   能不能给个完整代码

初生牛犊,望多多照顾!
2010-07-17 10:29
幕雨云天
Rank: 1
等 级:新手上路
帖 子:4
专家分:6
注 册:2010-7-5
收藏
得分:5 
printf("%d\n",pw);/*在这里添加个输入语句来观测 pw的值*/

这是正确的 因为要观察pw的"值" 所以使用%d来转换成ASCII字符编码 毕竟回车换行你用眼睛很难看出来
还有输出函数应该放在while内 不能放在外面 因为你是要观察输入非q运行结果 同样的printf("wrong\n");也在while内
2010-07-17 10:50
快速回复:这是为什么呢(运行结果为何是两行)
数据加载中...
 
   



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

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