| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 733 人关注过本帖
标题:C语言关于循环的一个问题
只看楼主 加入收藏
anglehou
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2012-3-5
收藏
得分:0 
回复 9楼 xiyao0206
昨天是我错了3楼正解。然后还有一个问题scanf(" %c",&x);就是在%c之前加一个空格,这样也可以。用 getchar();可以吸收enter带入的字符,为什么用空格也可以,这个理解不了啊。
2012-05-18 10:07
荡气回肠
Rank: 2
等 级:论坛游民
帖 子:33
专家分:40
注 册:2012-5-6
收藏
得分:0 
使用格式化scanf函数输入数据时,必须注意以下几个问题,否则会发生意想不到的状况。
(1)、输入地址列表问题;
       scanf函数中的地址表应当是变量的地址,而不是变量名。
(2)、用%c输入字符的问题;
       在用%c输入字符时,空格符、转义字符都会作为有效输入。
(3)、标准输入流使用多个scanf输入数据时,会发生数据残留问题;
       解决此问题的办法由两种:
           一、在第二个scanf的格式控制字符串前加一个空格,以抵消上一行输入的回车。
           二、使用函数fflush(stdin)来消除输入缓冲区的内容。
       这样无论上一行输入什么内容都对下一个scanf语句没有影响。

针对楼主遇到的问题有两种解决方案(当然3楼的做法也行),分别如下:
第一种:
#include<stdio.h>
void main()
{
    char x = 'q';
    while (x != 'n' ) {
        printf("请输入x的值\n");
        scanf(" %c", &x);     //在scanf的格式控制字符串前加一个
                              //空格,以抵消上一行输入的回车.
        printf ( "X的值是:%c\n", x );
    }
}
图片附件: 游客没有浏览图片的权限,请 登录注册


第二种:
#include<stdio.h>
void main()
{
    char x = 'q';
    while (x != 'n' ) {
        printf("请输入x的值\n");
        scanf("%c", &x);
        fflush(stdin);  //使用函数fflush(stdin)来消除输入缓冲区的内容
        printf ( "X的值是:%c\n", x );
    }
}


      
2012-05-19 08:28
快速回复:C语言关于循环的一个问题
数据加载中...
 
   



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

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