免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12345下一页
最近访问板块 发新帖
查看: 9990 | 回复: 41
打印 上一主题 下一主题

请教改改这个程序 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-07-31 20:20 |只看该作者 |正序浏览
我想编写一个计算乘积的程序,按'y'键开始,按其他键结束,每计算1次乘积后程序重新提示“do you want to cal:y/n ”,并由按y/n 键进行是否重新计算的选择。我想通过循环实现,但程序执行时只执行了一次。请问为什么只运行了一次?错在哪儿?
#include <stdio.h>;
void main()
{
        int i,j;
        char c;
        printf("\n do you want to cal:y/n \n";
       
        while(c=getchar()=='y')
        {
                                   printf("input number:";
                    scanf("%d%d",&i,&j);  
                    printf("i*j=%d",i*j);
                   }
}

论坛徽章:
0
42 [报告]
发表于 2011-11-28 16:03 |只看该作者
最近也被输入缓存整崩溃了

论坛徽章:
0
41 [报告]
发表于 2005-08-04 10:31 |只看该作者

请教改改这个程序

弄了半天是思路的问题

论坛徽章:
0
40 [报告]
发表于 2005-08-03 23:20 |只看该作者

请教改改这个程序

自己类似问题的解决~~不是很精巧但很有效
scanf("%d%d%*[^\n]",&i,&j);
getchar();

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
39 [报告]
发表于 2005-08-03 21:01 |只看该作者

请教改改这个程序

原帖由 "fsilence" 发表:
man fflush的输出
NOTES: Note  that fflush() only flushes the user space buffers provided by the C library.


恩..看到了..man 的不够仔细啊..
谢谢提醒.

论坛徽章:
0
38 [报告]
发表于 2005-08-03 20:42 |只看该作者

请教改改这个程序

man fflush的输出
NOTES: Note  that fflush() only flushes the user space buffers provided by the C library.

论坛徽章:
0
37 [报告]
发表于 2005-08-03 09:22 |只看该作者

请教改改这个程序

原帖由 "luojiannx" 发表:
请回帖的各位同志先看看楼上以前的帖子
此问题已得到了很好的解决
fflush(stdin)因为为明确定义对stdin的行为,所以不建议使用(很有可能无效)
此题答案1 ,在scanf后面加一行getchar()读完残留信息
          ..........

正解!

论坛徽章:
0
36 [报告]
发表于 2005-08-03 09:00 |只看该作者

请教改改这个程序

请回帖的各位同志先看看楼上以前的帖子
此问题已得到了很好的解决
fflush(stdin)因为为明确定义对stdin的行为,所以不建议使用(很有可能无效)
此题答案1 ,在scanf后面加一行getchar()读完残留信息
            2 ,  setbuf(stdin,0)清除输入缓冲

论坛徽章:
0
35 [报告]
发表于 2005-08-03 01:57 |只看该作者

请教改改这个程序

试试下面的:
#include <stdio.h>;

int main(void)
{
        int  i,j;
        char c;

        printf("\n do you want to cal: y/n \n";

        while(c = getchar() == 'y') {
                printf("input number:";
                scanf("%d%d",&i,&j);   
                printf("i*j=%d \n"
                           "do you want to cal: y/n \n", i*j);
                c = getchar();               
        }
        return 0;
}

论坛徽章:
0
34 [报告]
发表于 2005-08-02 09:21 |只看该作者

请教改改这个程序

[quote]原帖由 "AndyFastow"][/quote 发表:

刷新了缓冲区才会让你读到“\n”的,你应该忽略掉“\n”等等。。
  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP