-1

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

截屏

我正在运行 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);
}
4

3 回答 3

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";
于 2013-04-21T00:56:49.273 回答
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++ 中,乘法和除法运算符的优先级高于加法和减法,与科学计数法相同。

于 2013-04-21T03:57:09.510 回答
-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;
}
于 2014-10-23T16:58:58.583 回答