(急)小弟刚自学两天,学while,写了一个例子,用MS VC++60编译,报错,请问错在哪里?

xon 2001-12-29 10:14:42


/*计算汽车平均速度的程序*/
#include<stdio.h>
viod main(viod)
{
double begin_miles; /*里程计开始值*/
double end_miles; /*里程计结束值*/
double miles; /*行车路程 */
double hours; /*行车时间小时*/
double minutes; /*行车时间分钟*/
double speed; /*平均速度 */

printf("读取里程计开始的值 ");
scanf("%lg",&begin_miles);
while(begin_miles<0.0)
{
printf("\n读取开始值有误");
scanf("%lg",&begin_miles);
}

printf("读取里程计结束的值 ");
scanf("%lg",&end_miles);
while(end_miles<=begin_miles)
{
printf("\n读取结束值有误 结束值必须大于开始值");
scanf("%lg",&end_miles);
}

printf("读取所用时和分的值 ");
scanf("%lg%lg",&hours,&minutes);
hours=hours+(minutes/60);
while(hours<0.0)
{
printf("\n读取时间值有误");
scanf("%lg %lg",&hours,&minutes);
}

miles=end_miles-begin_miles;
speed=miles/hours;
printf("\n平均速度为 %g\n",speed);

puts("normal termination");
}

...全文
66 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
gqlin 2001-12-29
  • 打赏
  • 举报
回复
问题应出在:
while ( begin_miles < 0.0 )
这条语句判断begin_miles小于0不能这样用。而要用下面这条语句:
while ( begin_miles >= -0.00001) && ( begin_miles <= 0.00001)
rhesus 2001-12-29
  • 打赏
  • 举报
回复
首先两个viod都改为void,这不用解释了吧!!
scanf("%lg%lg",&hours,&minutes);最好改为scanf("%lg,%lg",&hours,&minutes);方便输入
bary1980 2001-12-29
  • 打赏
  • 举报
回复
还有printf("读取所用时和分的值 ");
scanf("%lg%lg",&hours,&minutes);//应该改为scanf("%lg %lg",&hours,&minutes);

用一个空格,否则怎么分辨两个同时输入而没有空格的数字哪

bary1980 2001-12-29
  • 打赏
  • 举报
回复
对不起,我没有仔细看,不是while毛病,而是viod应该为void,

但是你要注意,一般c++中不用print,
bary1980 2001-12-29
  • 打赏
  • 举报
回复
大虾,为什么用while,那样可能会死循环的,改用if

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧