标题:oj平台显示运行错误,但我用Dev却没问题,求求大神帮我看看,C语言初学者
只看楼主
Tingsu
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2020-10-24
结帖率:0
已结贴  问题点数:20 回复次数:12 
oj平台显示运行错误,但我用Dev却没问题,求求大神帮我看看,C语言初学者
#include<stdio.h>
#define PI 3.14159
int main(){
    float r;
    scanf("%f",&r);
    float c=2*PI*r,s=PI*r*r;
    printf("%.2f %.2f",c,s);
    return 0;
}
搜索更多相关主题的帖子: 显示 平台 Dev C语言 错误 
2020-10-24 09:13
Tingsu
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2020-10-24
得分:0 
嗷,题目
输入圆的半径,求圆的周长和面积。
要求定义圆周率为如下宏常量
#define PI 3.14159
输入
输入半径r的值,为一实数。
输出
输出一行,包括周长和面积。数据之间用一个空格隔开,数据保留小数后面两位。
2020-10-24 09:16
风过无痕1989
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:8
帖 子:228
专家分:1050
注 册:2020-7-17
得分:10 
回复 2楼 Tingsu
两个语句用逗号隔开写在同一行,是C99允许的,DEV部份支持C99,而你的OJ以及VC++6.0或其他的编译器却不一定能支持C99,所以,不能在这些平台上编译运行

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


[此贴子已经被作者于2020-10-24 09:48编辑过]

2020-10-24 09:32
Tingsu
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2020-10-24
得分:0 
回复 3楼 风过无痕1989
好的,我再试一次
2020-10-24 09:52
Tingsu
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2020-10-24
得分:0 
回复 3楼 风过无痕1989
还是错的呜呜

2020-10-24 09:58
Tingsu
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2020-10-24
得分:0 
回复 4楼 Tingsu
大佬,我同学用的double,然后把float换成double这个程序就过了
2020-10-24 10:27
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:10 
以下是引用Tingsu在2020-10-24 10:27:22的发言:

大佬,我同学用的double,然后把float换成double这个程序就过了

很显然呀,你贴的那个图片上不是写了嘛!(因为你贴的是图片,我没法选择文字,你自己找吧)
此外,为什么要用 float,目的何在?
2020-10-24 11:17
风过无痕1989
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:8
帖 子:228
专家分:1050
注 册:2020-7-17
得分:0 
回复 7楼 rjsp
息工程院OJ平台
====[test3.out]=========
Expected                                                                Yours
46847.39 174647070.22                                                   46847.39 174647872.00
======================
time_space_table:
/1010/test1. in :  AC mem-1152k time=4ms
/1010/sample . in : AC mem=1152k time=3ms
/1010/testo . in : AC mem=1152k time=5ms
/1010/test3 . in : WA mem-1152k time=5ms
/1010/test2 . in : AC mem-1152k time=5ms
/1010/test4 . in : AC mem=1152k time=5ms
2020-10-24 13:03
风过无痕1989
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:8
帖 子:228
专家分:1050
注 册:2020-7-17
得分:0 
回复 7楼 rjsp
我试过:PI 只要是带小数,比如 3.1,它就是 double 型,所以用 double 型肯定没有问题。然而,用 float 型也只是出现两条警告而不是语法错误呀:conversion from 'double ' to 'float ', possible loss of data (从 double 型转换为 float 型,可能造成数据丢失)。我用 DEV_C++5.11 与 VC++6.0 都运行了,程序却是可以正常运行的,没有任何的问题(在这里,我不懂怎么贴图出来)

我刚看到,本论坛的顶上有一个在线编程,我将我3楼的程序复制去那里,运行也是正常的

[此贴子已经被作者于2020-10-24 13:20编辑过]

2020-10-24 13:14
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
程序却是可以正常运行的,没有任何的问题

那你输入 46847.39 后输出是正确的 174647070.22   还是错误的 174647872.00 ?
上面这组数据是oj平台告诉你通不过的数据。

关于double/float的选择,
你就一个数据,根本节约不了内存,为什么选用float?
选之前你测算过float的精度足够了吗?
啥都没考虑,就给自己一个陷进。
2020-10-24 20:33



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




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

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