当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 4 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 写了个小程序,无限循环了……(已解决)
帖子发表于 : 2011-04-20 16:05 

注册: 2009-11-11 23:13
帖子: 270
送出感谢: 3
接收感谢: 0 次
代码:
#include <stdio.h>

void Temperatures (double far)
{
   double cel, kel;

   while (far != 'q')
   {
      cel = 1.8 * far + 32.0;
      kel = cel + 273.16;

      printf ("%lf est %.2lf Celfius et %.2lf Kelvin. \n", far, cel, kel);

      printf ("Entrez encore(q pour quitter):");
      scanf ("%lf", &far);
   }

}


int main (void)
{
   double n;

   printf ("Entrez un numero:");
   scanf ("%lf", &n);
   Temperatures (n);

   return 0;
}


按“q”以后就开始无限循环,不停地显示最后的计算结果,只能用Ctrl+C停止,求解决
另外,如何实现只要输入的不是数字就会退出?

:em78


_________________
同志们,多年的战争使你们踏遍整个欧洲,前方就是华盛顿白宫,到那里去洗刷你们战争的躯体吧!


最后由 ilsoviet1917 编辑于 2011-04-20 16:24,总共编辑了 1 次

页首
 用户资料  
 
2 楼 
 文章标题 : Re: 写了个小程序,无限循环了……
帖子发表于 : 2011-04-20 16:13 
头像

注册: 2007-02-02 18:14
帖子: 30702
系统: debian sid
送出感谢: 1
接收感谢: 34
我觉得很不好的编程~~~~~这个不要循环,运行一次算一次就好了


_________________
醉了星星,醉月亮●●●●●The Long Way To Go(*^_^*)


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 写了个小程序,无限循环了……
帖子发表于 : 2011-04-20 16:16 
头像

注册: 2008-12-06 10:38
帖子: 4566
送出感谢: 23
接收感谢: 31
scanf从stdin读取输入流到数据缓冲区,如果格式不符,scanf不会清空缓冲区,所以下次读入的输入流还是原来的那些东西,结果就是不断循环,所以最好清空缓冲区,后面加一下
代码:
while((int c=getchar())!='\n' && c!=EOF)
            ;


最后由 灰色小狼 编辑于 2011-04-20 16:26,总共编辑了 1 次

页首
 用户资料  
 
4 楼 
 文章标题 : Re: 写了个小程序,无限循环了……
帖子发表于 : 2011-04-20 16:23 

注册: 2009-11-11 23:13
帖子: 270
送出感谢: 3
接收感谢: 0 次
解决,谢谢两位 :em11


_________________
同志们,多年的战争使你们踏遍整个欧洲,前方就是华盛顿白宫,到那里去洗刷你们战争的躯体吧!


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 4 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译