这是我到目前为止的编码。我正在使用在线编译器,而不是我的普通编译器,所以我很难找到问题点。目标是输入华氏温度并输出摄氏度。
#include<iostream>
using namespace std;
int main ()
{
int fahr=0, cent=0, count=0;
while(fahr!=-99999)
{
count++;
cin>>fahr>>endl;
cout<<"Input temperature, in Farhenheit, to be converted to Centigrade" <<endl;
cent=(5./9.)*(fahr-32)(float);
cout<<"The input Farhenheit value "<<fahr<<" corresponds to the Centigrade value of "<<cent<<endl;
}
return 0;
}
更新:
好的,这是更正后的代码。在我阅读评论之前,我发现了一些更正,并且(因为我之前没有提到过)我是一个完全的初学者。这对我来说都是一个奇怪的领域,所以我很感激所有的反馈。如果我正在做的事情没有意义,请随意指出并/或提出建议。
#include<iostream>
using namespace std;
int main ()
{
int fahr=0, cent=0, count=0;
while(fahr!=-99999)
{
count++;
cin>>fahr;
cout<<"Input temperature, in Farhenheit, to be converted to Centigrade"<<endl;
cent=(float)(5./9.)*(fahr-32);
cout<< "The input Farhenheit value " <<fahr<< " corresponds to the Centigrade value of " <<cent<< endl;
}
return 0;
}
答案 0 :(得分:0)
(float)在以&#34;分&#34;开头的行的末尾不是句法。
删除它很好,因为在此程序中使用浮动而不是整数。
答案 1 :(得分:0)
这一行看起来可能有误:
cent=(5./9.)*(fahr-32)(float);
浮动的通常语法是:
float sngValue = (float) intValue; // casts an integer to a float
float sngValue = (float) dblValue; // casts a double to a float
为什么必须输入fahr
和cent
int
?如果必须,则使用:
cent = (fahr - 32) * 5 / 9;
公式将每个中间结果保持为整数,我们将最后一步除以尽可能减少舍入。否则,如果fahr和cent
被输入float
,您可以更灵活一点:
#include<iostream>
using namespace std;
int main ()
{
int count = 0;
float fahr = 0.0f, cent = 0.0f;
while (fahr != -99999.0f)
{
count++;
cin >> fahr >> endl;
cout<<"Input temperature, in Farhenheit, to be converted to Centigrade" <<endl;
cent = (5.0f / 9.0f) * (fahr - 32.0f); // no need for casting, everything's in float
cout << "The input Farhenheit value " << fahr << " corresponds to the Centigrade value of " << cent << endl;
}
return 0;
}
您在该表达式的末尾有一个(float)
关键字,但这不适用于投射。
答案 2 :(得分:0)
您的第一个错误与在>> endl
之后添加cin >> fahr
:
error: no match for ‘operator>>’ in ‘std::cin.std::basic_istream<_CharT, _Traits>::operator>> [with _CharT = char, _Traits = std::char_traits<char>]((* & fahr)) >> std::endl’
删除它,只需cin >> fahr;
即可从int
读取stdin
。您使用std::endl
添加新行并刷新输出流(ostream
),例如cout
,而不是输入流,例如cin
。
该行还有一个错误:
cent=(5./9.)*(fahr-32)(float);
如果您想将(5./9.)*(fahr-32)
的结果投射到float
,那么您可以在开头使用投射(float)
。
但是,由于cent
的类型为int
,因此更为无意义。也许你想把(fahr-32)
投射到一个float
,不管是演员都在前面。
编辑:您更新的代码出现了新错误。如果您希望cent
成为float
,请将其声明为:http://ideone.com/nprW9