免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12345下一页
最近访问板块 发新帖
查看: 9989 | 回复: 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
2 [报告]
发表于 2005-07-31 20:46 |只看该作者

请教改改这个程序

while(c=getchar()=='y')
这里需要好好琢磨琢磨

循环
当getchar()为y的时候循环结束!

论坛徽章:
0
3 [报告]
发表于 2005-07-31 20:53 |只看该作者

请教改改这个程序

没有清除键盘缓冲的原因吧

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

请教改改这个程序

>;>;while(c=getchar()=='y')
while( (c=getchar()) =='y')

运算符号优先级问题.

论坛徽章:
0
5 [报告]
发表于 2005-07-31 21:04 |只看该作者

请教改改这个程序

呵呵,我早想了也改了,不过似乎不是这样的

论坛徽章:
0
6 [报告]
发表于 2005-07-31 21:05 |只看该作者

请教改改这个程序

如果用TC,似乎可考虑用getch(),这个好像会清键盘缓冲

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

请教改改这个程序

恩 需要fflush(stdin)的.在每次scanf之前.

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

请教改改这个程序

luojiannx 说的很对.fflush(stdin)就行了.

论坛徽章:
0
9 [报告]
发表于 2005-07-31 21:14 |只看该作者

请教改改这个程序

您的意思是执行了 scanf 后,如果之后程序要再获得输入,就要先清楚
键盘缓冲?

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

请教改改这个程序

你可以自己试验一下.把fflush(stdin);加上..在scanf之前和之后.然后把结果告诉大家
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP