标题:关于scanf输入问题求解
只看楼主
鱼欲语雨
Rank: 1
等 级:新手上路
帖 子:38
专家分:9
注 册:2012-9-27
结帖率:90.91%
已结贴  问题点数:20 回复次数:10 
关于scanf输入问题求解
#include<stdio.h>
main(void)
{
    int n,a,b,c,d,e;
    char x,y,z;
    printf("Please input data set number!(n<=10)\n");
    scanf("%d",&n);
    printf("Please enter the trump card design and color!\n");
    scanf("%c",&x);
    printf("Please input board surface and design and color!\n");
    scanf("%c%d",&y,&a);
    printf("Next!\n");
    scanf("%c%d",&z,&b);
    return 0;
}
这是本人编的程序中的一段
令我奇怪的是第二个输入函数 也就是scanf("%c",&x); 总是无法运行 就是每次运行的时候 会直接跳过第二个输入函数 直接显示Please input board surface and design and color
本人刚刚入大学 才上过一节课很多东西都是通过自己看书了解的 所以有什么错的地方请指点下
搜索更多相关主题的帖子: return number include design 
2012-09-29 19:41
阿鞠尼
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:首尔
等 级:蒙面侠
威 望:5
帖 子:1467
专家分:4442
注 册:2012-5-30
得分:10 
在scanf前加上一个fflush(stdin);

喜欢睡觉 却经常熬夜
2012-09-29 22:25
阿鞠尼
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:首尔
等 级:蒙面侠
威 望:5
帖 子:1467
专家分:4442
注 册:2012-5-30
得分:0 
还有第二种方法 就是在scanf(" %c");加一个空格

喜欢睡觉 却经常熬夜
2012-09-29 22:26
天仲子
Rank: 2
等 级:论坛游民
帖 子:49
专家分:49
注 册:2012-1-3
得分:5 
回复 3楼 阿鞠尼
为什么会出现这个问题呢
2012-09-29 22:35
阿鞠尼
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:首尔
等 级:蒙面侠
威 望:5
帖 子:1467
专家分:4442
注 册:2012-5-30
得分:0 
fflush(stdin); 的作用就是清空输入缓冲区  输入数据时  数据会临时存在缓冲区内(这个课本应该有讲)  读取的函数有时候直接从缓冲区取数据  这就导致了一种问题:前面数据度过之后  回车确认  紧接着的读字符的语句被跳过  原因就是缓冲区有数据   这个清空之后就读你输入的数据

喜欢睡觉 却经常熬夜
2012-09-29 22:44
w995612220
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:139
专家分:313
注 册:2012-6-20
得分:5 
这个好经常出现,我都回复了几个了。还有一种是加getchar()吸收掉回车按键
2012-09-30 00:13
Sukhavati
Rank: 1
等 级:新手上路
帖 子:9
专家分:4
注 册:2012-9-25
得分:0 
键盘缓冲区问题
2012-09-30 01:44
鱼欲语雨
Rank: 1
等 级:新手上路
帖 子:38
专家分:9
注 册:2012-9-27
得分:0 
谢谢,问题已解决
2012-09-30 14:45
lx1066198952
Rank: 2
等 级:论坛游民
帖 子:16
专家分:24
注 册:2012-9-28
得分:0 
scanf语句的输入内容要与语句的输入格式相同,例如
scanf("%d %d",&a,&b);
scanf("%d,%d",&a,&b);
scanf("%d%d",&a,&b);
第一个就要输入a空格b
第二个就要输入a逗号b
第三个就要输入ab
2012-10-01 10:29
Mrrr
Rank: 2
等 级:论坛游民
帖 子:15
专家分:72
注 册:2012-9-4
得分:0 
#include <stdio.h>
void main()
{
    int decimal = 0;
    int bits[4] = {1,0,1,1};
    int weight = 1;
    int count = 0;
    while(count <= 3)
    {
        decimal = decimal + bits[count]*weight;
        weight *=2;
        ++count;
    }
    printf("The result is : %d" , decimal);
}
2012-10-01 21:02



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-382339-1-1.html




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

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