| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 598 人关注过本帖
标题:新手求教,为何输入数据后,输出的数据中没有输出字符型数据
只看楼主 加入收藏
mk_zhou
Rank: 2
来 自:历代兵家必争之地
等 级:论坛游民
威 望:1
帖 子:78
专家分:83
注 册:2015-6-30
结帖率:84.62%
收藏
已结贴  问题点数:20 回复次数:4 
新手求教,为何输入数据后,输出的数据中没有输出字符型数据
输入数据为:a=3,b=7,x=8.5,y=71.82,c1='A',c2='a'
我是想知道代码这样写为什么最终输出的数据不对。总是不输出字符型数据
还有就是为何将代码改为先输入浮点型数据或最后输入浮点型数据的时候,为什么只能输入两组数据,第三组数据无法输入。
请大神解释一下。最好详细点,刚学没多久,谢谢~


程序代码:
#include<stdio.h>
void main()
{
    int a,b;
    float x,y;
    char c1,c2;    
    scanf("a=%d,b=%d",&a,&b);
    scanf("%f,%e",&x,&y);
    scanf("%c,%c",&c1,&c2);
    printf("%d,%d\n",a,b);
    printf("%f,%e\n",x,y);
    printf("%c,%c\n",c1,c2);
}


[ 本帖最后由 mk_zhou 于 2015-7-6 00:05 编辑 ]
搜索更多相关主题的帖子: 最好 
2015-07-06 00:01
hjx1120
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:李掌柜
等 级:贵宾
威 望:41
帖 子:1314
专家分:6927
注 册:2008-1-3
收藏
得分:10 

#include<stdio.h>
#include<stdlib.h>
int main(void)
{
    int a,b;
    float x,y;
    char c1,c2;   
   
    printf("a=");
    scanf("%d",&a);
   
    printf("b=");
    scanf("%d",&b);
   
    printf("x=");
    scanf("%f",&x);
   
    printf("y=");
    scanf("%f",&y);
    fflush(stdin);//清空缓冲区
   
    printf("c1=");
    scanf("%c",&c1);
    fflush(stdin);//清空缓冲区
   
    printf("c2=");
    scanf("%c",&c2);
    fflush(stdin); //清空缓冲区
   
    printf("\n\na=%d,b=%d\n",a,b);
    printf("x=%.1f,y=%g\n",x,y);
    printf("c1=%c,c2=%c\n",c1,c2);
   
    return 0;
}
2015-07-06 06:51
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
收藏
得分:10 
回复 楼主 mk_zhou
我也是新人,就你的代码我说下我个人的理解,仅供参考吧
scanf("a=%d,b=%d",&a,&b);//这句是想输入ab的数值吧,但是前面放a=,b=,貌似没啥意义。如果你想表达打印时候能看到你输入a=XX,b=XX,可能要和2楼说的一样。用printf先打印出a=,b=;
scanf("%f,%e",&x,&y);//这句%e输入可以是可以,因为你的y是float型,你可以输入 定点数,十进制整数,e型式等,都可以的,如果你是想让y按照指数形式输入,我觉得在printf里面用%e就可以达到你的效果了。也可能你有其他的想法,所以用%e输入。

另外至于你说的最后输入没有字符的原因。我估计和2楼写的意思差不多,看2楼用的比较多的清空缓存没,
scanf输入的数据貌似都是先存在缓存里的,没有输入可能和这有关,因为我也新人,不是太懂,只能说说我的看法,你参考下,理解下看看是否正确,可以的话也回馈下我,让我也能更理解点

[ 本帖最后由 wanglianyi1 于 2015-7-6 10:19 编辑 ]
2015-07-06 09:39
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
收藏
得分:0 
回复 楼主 mk_zhou
http://c.
scanf的解释,你看下,应该有所收获
2015-07-06 10:01
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
收藏
得分:0 
回复 楼主 mk_zhou
楼主下面是就你的代码增加了清空缓存就能实现你要的效果了。你的代码问题在于,你scanf的两个数据间用的是逗号间隔,所以你输入数据时候也必须用逗号做间隔
#include<stdio.h>
void main()
{
    int a,b;
    float x,y;
    char c1,c2;   
    scanf("%d,%d",&a,&b); //输入数据时候要用逗号分隔2个数据,输入1和2,就要1,2回车。这样,不能1 2,不能空格,下面2组数据输入同理
    fflush(stdin);
    scanf("%f,%e",&x,&y);
    fflush(stdin);
    scanf("%c,%c",&c1,&c2);
    fflush(stdin);
    printf("%d,%d\n",a,b);
    printf("%f,%e\n",x,y);
    printf("%c,%c\n",c1,c2);
}
综上:我觉得你的疑问有2个问题:1、第三组字符数据不能输入是没有清空缓存。2、如果你出现输入结果不正确的时候,应该是你输入的格式不对

[ 本帖最后由 wanglianyi1 于 2015-7-6 10:19 编辑 ]
2015-07-06 10:17
快速回复:新手求教,为何输入数据后,输出的数据中没有输出字符型数据
数据加载中...
 
   



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

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