标题:oj平台显示运行错误,但我用Dev却没问题,求求大神帮我看看,C语言初学者
只看楼主
风过无痕1989
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:8
帖 子:228
专家分:1050
注 册:2020-7-17
得分:0 
回复 10楼 rjsp
我用电脑系统配置的计算器算:3.14159 * 46847.39 * 46847.39 = 6894778300.350195239
                            2 * 3.14159 * 46847.39 = 294350。5839002

用 float 型计算             3.14159 * 46847.39 * 46847.39 = 6894778368.00
                            2 * 3.14159 * 46847.39 = 294350.59

用 double 型计算            3.14159 * 46847.39 * 46847.39 = 6894778300.35
                            2 * 3.14159 * 46847.39 = 294350.58

改为 int 型计算             3 * 46847 * 46847 = -2006010365 (显然是溢出了)
                            2 * 3 * 46847 = 281082

[此贴子已经被作者于2020-10-25 00:18编辑过]

2020-10-24 23:23
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
回复 11楼 风过无痕1989
我看错了,你输入 7456 试试
7456*7456*3.14159=174647070.21824
2020-10-24 23:30
风过无痕1989
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:8
帖 子:228
专家分:1050
注 册:2020-7-17
得分:0 
回复 10楼 rjsp
用 double 型 输入 7456 就能对上他的答案了

另,不是我要用 float 型的,是他给出的程序用的就是就用 float 型

我刚才又反复看了他的题目,也没说过输入多少,然后要对答案。而程序本身也确实是没有问题,只是精度差些。好了,现在明朗了,他的程序就应该是如下的了:

程序代码:
#include<stdio.h>
#define PI 3.14159
int main(){
    double r,c,s;              // c,s 没有定义
    scanf("%lf",&r);
    c = 2 * PI * r;           // 两个语句不能用逗号隔开写在同一行,可以用分号隔开写在同一行
    s = PI * r * r;
    printf("%.2lf %.2lf",c,s);
    return 0;
}
2020-10-25 00:40



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-503608-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.058865 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved