C ++将华氏温度转换为摄氏温度

时间:2013-04-21 00:52:52

标签: c++

以下是帮助说明我的问题的屏幕截图:

screenshot

我正在运行Apache服务器。现在,用户将在html页面中输入华氏数字,然后将他们带到此程序进行转换。正如你所看到的,它不是正确的计算。这是华氏数字,并由于某种原因增加额外的数字,甚至字母?无论如何,任何人都可以帮我编辑我的代码以使其工作?非常感谢!!

#include <iostream>
    #include <string.h>
    #include <stdlib.h>
    #include <stdio.h>
    #include <time.h>
    #include <windows.h>

    using namespace std;





    //(Include the c++ getvar comment block and code here)

    int getvar(char *var, char *dest, char *stream)
    {  
        char *vptr;
        int size, i=0, j=0, hex; /* ptr+i to src, ptr+j to dest */ 

        vptr=strstr(stream, var);  

        if(vptr) ; 
        else return(1); /* 1 for a checkbox thats off */

        if((vptr==stream)||(*(vptr-1)=='&')) ; 
        else return(-1); /* -1 for a var that appears in error */

        size=(int) strlen(var)+1; /* +1 accounts for the = */

        while(*(vptr+size+i)!='&') 
        {      
                if(*(vptr+size+i)=='+') /* output a space */           
                    *(dest+j)=' ';     
                else if(*(vptr+size+i)=='%') /* hex character */           
                        {              
                            sscanf(vptr+size+i+1,"%2x",&hex);              
                            *(dest+j)=(char)hex;               
                            i+=2;          
                        }      
            else *(dest+j)=*(vptr+size+i);     
                i++; j++;  
            }  
        *(dest+j)='\0';
            return(0);
}

3 个答案:

答案 0 :(得分:7)

cout << "Fahrenheit Temperature = " <<(fahrenheitTemp)<<
cout << "Celsius Temperature = " <<(celsiustemp)<<
cout << "</body></html>\n";

奇怪的字符是因为这是一个长语句,而不是三个单独的语句。它打印cout的地址两次!

cout << "Fahrenheit Temperature = " <<(fahrenheitTemp)<< "<br/>\n"
     << "Celsius Temperature = " <<(celsiustemp)
     << "</body></html>\n";

答案 1 :(得分:1)

我不知道您的额外字符问题,但由于操作顺序,您的公式错误。

你有:

celsiustemp = fahrenheitTemp - 32.0 * (5.0/9.0);

这相当于:

 celsiustemp = fahrenheitTemp - (32.0 * (5.0/9.0));

这不是正确的转换公式。

您应该使用:

 celsiustemp = (fahrenheitTemp - 32.0) * (5.0/9.0);

乘法和除法运算符的优先级高于C ++中的加法和减法,与科学计数法相同。

答案 2 :(得分:-1)

#include<iostream>
#include<string>
#include<math.h>
#include<iomanip>
using namespace std;

double ferentocelsious(double feren)
{
    return 5 * (feren - 32) / 9;
}
int main(void)
{
    double ferenhit;
    cout << "Enter the temprature in ferenhit:\t";
    cin >> ferenhit;
    cout << ferenhit << " ferenhit temprature to celcious is:  " << ferentocelsious(ferenhit) << endl;
    return 0;
}