今天是第一天开始刷POJ上的题。作为一个要找互联网行业工作的大四本科僧,如果代码能力不过关,应该是处处碰壁的命。所以,从今天开始,要好好学习一下编程了。
根据新浪微博上的推荐文档,先刷POJ上面一些比较水的题目来巩固自己的基础。第一题,POJ3299
废话不多说,上代码:
//POJ3299
#include "stdio.h"
#include "math.h"
int main( )
{
//在使用C语言编译器的时候,需要把所有的变量定义在最前面。不然编译器会报错
char a;
float h,d,t;
int i;
for(;;)
{
h=d=t=101;
for(i = 0;i<2;i++)
{
scanf("%c",&a);
if(a=='E')
return 0;
else if(a=='D')
scanf("%f",&d);
else if(a=='T')
scanf("%f",&t);
else if(a=='H')
scanf("%f",&h);
else
{//主要针对换行和空格,scanf在使用的时候会把这两个键当作字符输入。遇到这种情况,直接跳过,再次循环。
i--;
continue;
}
}
if(h==101)
h = 0.5555*((6.11 * exp (5417.7530 * ((1/273.16) - (1/(d+273.16))))) - 10.0) + t;
if(t==101)
t = h - 0.5555*((6.11 * exp (5417.7530 * ((1/273.16) - (1/(d+273.16))))) - 10.0);
if(d==101)
d = 1/((1/273.16)-((log((((h-t)/0.5555)+10.0)/6.11))/5417.7530))-273.16;
printf("T %.1f D %.1f H %.1f\n",t,d,h);
}
return 0;
}
做的过程中遇到两个的问题。
1.是输入的时候有空格以及换行键的问题。在使用C语言scanf输入时,会把空格以及enter键当作字符输入,导致每次都有错误。解决办法是直接加上判断,除了正确字符以外的所有字符都视为无效字符,重新输入一次。
2.C语言编译器问题。写完代码在电脑上运行正确之后,提交到POJ的C语言编译器的时候,出现了编译错误。多方查找,感觉代码就是没错的,运行也没问题,但是一提交就是编译错误,错误原因乱七八糟的。后来经过多方查找资料,才发现问题出在这行代码上
for(int i = 0;i < 2;i++)
原来,C语言里规定,所有的变量在使用的时候应该在开头提前定义,然后才能使用。但是对于C++却是可行的。而我电脑上的编译器是VS2010,C++的编译器,所以在电脑上运行是可以通过的,但是在网页C语言编译器却总是出问题。