一个C语言源代码,为什么运行后会出错?求大神解答

#include<stdio.h>#include<math.h>voidmain(){doubles,m,x,y,z;x=0.5*11.9*1000*60*60;pri... #include<stdio.h>
#include<math.h>
void main()
{
double s,m,x,y,z;
x=0.5*11.9*1000*60*60;
printf("如需要结束程序请输入@并按回车键结束!");
printf("本程序仅用于计算ξ,并已设b=1000,h0=60,fc=11.9,请输入M:");
scanf("%lf",m);
while(m!='@')
{
y=m*1000000;
z=sqrt(1-y/x);
s=1-z;
printf("经计算得ξ的值为:%lf\n",s);
printf("请输入M:");
scanf("%lf",m);
}
}
展开
 我来答
赵韦华和
2013-06-04 · 超过51用户采纳过TA的回答
知道小有建树答主
回答量:160
采纳率:0%
帮助的人:119万
展开全部
输入要加&,你m是double,怎么可能等于@,所以肯定是死循环结束不了。
#include<stdio.h>
#include<math.h>
void main()
{
double s,m,x,y,z;
x=0.5*11.9*1000*60*60;
printf("如需要结束程序请输入@并按回车键结束!");
printf("本程序仅用于计算ξ,并已设b=1000,h0=60,fc=11.9,请输入M:");
scanf("%lf",&m);
while(getchar()!='p')
{
y=m*1000000;
z=sqrt(1-y/x);
s=1-z;
printf("经计算得ξ的值为:%lf\n",s);
printf("请输入M:");
scanf("%lf",&m);
}
}
昌大少年
2013-06-04 · TA获得超过255个赞
知道小有建树答主
回答量:370
采纳率:0%
帮助的人:185万
展开全部
scanf("%lf",m); 改成 scanf("%lf",&m);
m!='@' 类型不一致,没有可比性

可以改为 m!=0
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yuhezcb0755
2013-06-04 · TA获得超过643个赞
知道小有建树答主
回答量:237
采纳率:0%
帮助的人:117万
展开全部
1. scanf函数时对m用取地址符 &m 这样
2. 用了sqrt函数, 编译加上-lm参数
3. m是double型, 与'@'不好比较, 可能导致程序异常。建议使用某个值退出, 比如输入的是负数就退出while (m < 0) 类似这样。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
miniappU21aVS0g36jlk
2013-06-04 · 超过12用户采纳过TA的回答
知道答主
回答量:38
采纳率:0%
帮助的人:32.3万
展开全部
scanf 输入后面给m加上取地址符& 即scanf(“%lf”,&m);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式