| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 976 人关注过本帖, 1 人收藏
标题:问scanf,printf程序无法执行?
只看楼主 加入收藏
smnh
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-12-15
收藏(1)
 问题点数:0 回复次数:7 
问scanf,printf程序无法执行?
我这里有问题,请大家看看:
题目:请输入三个数,并编号显示,提示是否修改,输入编号和数,然后显示修改后的数据,我编的的程序为,
main()
{
    float a=8,b=9,c=10;
    char d;
    int e;
         printf("请输入三个数!\n");
    scanf("%f%f%f",&a,&b,&c);
    printf("这三个数分别是1=%f,2=%f,3=%f\n",a,b,c);
    printf("你是否想修改?(Y/N)\n");
    scanf("%c",&d);
    if(d=='Y'||d=='y')
    {   
        printf("请输入你想修改的编号\n");
        scanf("%d",&e);
        switch(e)
        {
        case 1: scanf("%f",&a);break;
        case 2: scanf("%f",&b);break;
        case 3: scanf("%f",&c);break;
        }
    printf("修改后的3个数据为1=%f,2=%f,3=%f\n",a,b,c);
    }
}
在vc6.0执行后执行不下去,但是把这条语句删了就行
         printf("请输入三个数!\n");
    scanf("%f%f%f",&a,&b,&c);
麻烦大家帮我看看
搜索更多相关主题的帖子: 问scanf 
2008-12-15 11:37
醉罪
Rank: 2
等 级:论坛游民
帖 子:140
专家分:24
注 册:2008-7-26
收藏
得分:0 
没有相关的头文件  printf 和scanf 是在头文件stdio.h里面的
所以 最前面要申明函数
#include <stdio.h>
2008-12-15 11:45
leger
该用户已被删除
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2008-12-15 11:54
smnh
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-12-15
收藏
得分:0 
加了#include<stdio.h>后
1 #include<stdio.h>
2 main()
3 {
4     float a=8,b=9,c=10;
    char d;
    int e;
     printf("请输入三个数!\n");
    scanf("%f%f%f",&a,&b,&c);
    printf("这三个数分别是1=%f,2=%f,3=%f\n",a,b,c);
10    printf("你是否想修改?(Y/N)\n");
    scanf("%c",&d);
    if(d=='Y'||d=='y')
    {   
        printf("请输入你想修改的编号\n");
        scanf("%d",&e);
        switch(e)
        {
        case 1: scanf("%f",&a);break;
        case 2: scanf("%f",&b);break;
        case 3: scanf("%f",&c);break;
        }
    printf("修改后的3个数据为1=%f,2=%f,3=%f\n",a,b,c);
    }
}
运行结果
到第10步就结束了
2008-12-15 12:19
liumang_D
Rank: 2
来 自:计算机
等 级:论坛游民
威 望:1
帖 子:89
专家分:50
注 册:2008-10-20
收藏
得分:0 
不是他们说的那些问题,问题的关键是你在输入输出后你没有清空你的标准输入流的缓冲区,你那里面不是有个if 语句么,你可以写个else,我敢保证你的程序会执行你的else语句的。
这其实是C语言里面容易出错的地方。
你可以在每次的sacnf前面加上一句setbuf(stdin, NULL);它是为了清空标注输入流的缓冲区的。
你这个程序里面,你只需要在scanf("%c", &d);前面加上一句setbuf(stdin, NULL);就OK了,因为它是读入字符。其他读入的整数或者实数都不满足格式要求,所以不用担心会读入错误的数据。

[[it] 本帖最后由 liumang_D 于 2008-12-15 12:34 编辑 [/it]]
2008-12-15 12:28
smnh
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-12-15
收藏
得分:0 
程序解决
谢谢5号楼主liumang_D的提示,问题解决
2008-12-15 12:40
醉罪
Rank: 2
等 级:论坛游民
帖 子:140
专家分:24
注 册:2008-7-26
收藏
得分:0 
清空标准输入流的缓冲区
学习了
2008-12-15 18:29
快速回复:问scanf,printf程序无法执行?
数据加载中...
 
   



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

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