急!C语言,一个题目,DEV C++编译没错,上交OJ后编译错误!

#include<stdio.h>
#include<math.h>
int main()
{
double t,j,q,v,r,w,h;
while(~scanf("%lf %lf %lf",&r,&h,&w))
{
v=r*w;
t=sqrt(2*h/9.8);
j=v*r*t;
q=sqrt(r*r+j*j);
printf("%.2lf\n",q);
}
}
我在DEV C++上通过,为什么上了OJ却错了!
错误类型!
2/87/186047.c: In function ‘main’:
2/87/186047.c:13: warning: control reaches end of non-void function
/tmp/ccbrYbWh.o: In function `main':
186047.c:(.text+0x4b): undefined reference to `sqrt'
186047.c:(.text+0x78): undefined reference to `sqrt'
collect2: ld returned 1 exit status

第1个回答  2012-05-07
1、函数没有返回值。
2、sqrt()没有声明。可能是头文件<math.h>不同吧。
第2个回答  2012-05-06
while(~scanf("%lf %lf %lf",&r,&h,&w))
改成
while(scanf("%lf %lf %lf",&r,&h,&w)==4)追问

为什么要这样改,貌似好像还是错的!

追答

不好意思打错了是while(scanf("%lf %lf %lf",&r,&h,&w)==3)

第3个回答  2012-05-08
数学库, gcc编译参数要加-lm

~scanf("%lf %lf %lf",&r,&h,&w) 改成 scanf("%lf %lf %lf",&r,&h,&w) == 3

main函数最后加 return 0;
第4个回答  2012-05-07
可能是两种软件的运行环境不同导致

急!C语言,一个题目,DEV C++编译没错,上交OJ后编译错误!
1、函数没有返回值。2、sqrt()没有声明。可能是头文件<math.h>不同吧。

DEVC++编译无error,但OJ说编译错误,哭辽,求大佬指教
原因很简单,如果是c++的话,你没有加using namespace std;加在#include后面,不加oj就会判错。就像我把#include <bits\/stdc++.h>写成了#include <bits\\stdc++.h>(斜杠写反了,有一次手误),dev的确不会报错,我放到oj上就一直编译错误。

在北大oj上的题,Dev-c++可以运行,一提交就说complie error求看
编译器选的是gcc,gcc可能用的是c99的标准 for(int i=0;i<12;i++)\/\/c99是不能在for里面定义的int i;for(i=0;i<12;i++)

c语言一道很简单的题,但代码运行了多次都正确,一题交就错,求一个代码...
在C++中头文件尽量使用cstdio代替stdio.h,它对stdio.h做了一些额外的工作,据说比stdio.h好一些(不容易出错)。但要使用C++库(cstdio、iostream、cmath等)时尽量在函数名前加上namespace::(C++库都用std),或者在程序开头加上using namespace std;如果你写C,请尽量将拓展名改为.c 错误更正...

dev C++出现错误Pernission denied ld returned 1 exit status_百度知...
分号 前头多了一个 逗号 还有一个楼上说的不对的地方,就是main的定义:根据c99规则main()当不定义类型时,默认为int型,并且若定义,main()也只能为int型。虽然在DEV中,void main()是可以通过编译的,但不符合标准。比如你找北大的OJ去测个程序,应该用void main()是会出现编译错误的。

为什么在c++上写好且运行的程序在ACM编译器上却编译错误?
若出现编译错误,各OJ上都会有提示,告诉你哪行错了。常见VC正确,但标准C++错误的:1.void main()纯粹M$YY GCC和ISO C99、ISO C++98都只认可int main()谭浩强版的main()——省略int类型名,在C89下是合法的,但在C99下也不合法了 2.main()返回参数 因为是int main(),所以return 0必不可...

如何学好C语言?
Visual C++ 6.0使用很方便,调试也很直观,但其默认的编译器对C标准的支持并不好,而Dev C++使用gcc编译器,对C99的标准都支持良好。使用顺带提一下,很多大学的C语言课程还在使用Turbo C 2.0作为实验环境,这是相当不可取的,原因其一是TC 2.0对C标准几乎没有支持,其二是TC 2.0编译得到的程序是16位的,这对今后理解...

零基础先学习C语言 JAVA 还是C++好?对于零基础OJ的题在哪做比较好?如何...
我个人认为要想学习C++,最好直接学习它,不要先学习C语言,然后在学习C++,虽然C++是从C语言上发展过来的,但如果你对C语言了解的越多,在你写C++程序的时候,你很难摆脱C的风格,既使你是一位很有经验的程序员,如果你对C很了解,在学习C++的时候,尽量使用C++的风格,我这样并不是说C不好,关...

用dev c++编程 输入正整数n,1<=n<=6,输出长度为n的所有01字符串,每行...
方法1:其实如果这是oj里头的一道题,你可以打表。方法2:\/\/把一个10进制的数字转换成2进制的 string to2(int x,int len){ string ans;while(x>0){ char ch=(x%2)+'0';ans=ch+ans;x\/=2;} while(ans.size()<len){ans="0"+ans;}\/\/让返回的字符串的长度一定要到len长度 return...

“绝大多数代码是WA,少数代码是CE,TLE和RE”,请问WA,CE,RE,都是什么意...
Online Judge系统(简称OJ)是一个在线的判题系统。用户可以在线提交程序多种程序(如C、C++)源代码,系统对源代码进行编译和执行。通过(Accepted,AC)、答案错误(Wrong Answer,WA)、超时(Time Limit Exceed,TLE)、超过输出限制(Output Limit Exceed,OLE)、超内存(Memory Limit Exceed,MLE)、运行时...

相似回答