c++编程问题,输入你的身高(单位是cm),转换成英尺和英寸显示。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++编程问题,输入你的身高(单位是cm),转换成英尺和英寸显示。相关的知识,希望对你有一定的参考价值。
#include<iostream>
using namespace std;
const double inch=0.39;
const double foot=0.03;
int main()
cout.setf(ios_base::fixed,ios_base::floatfield);
int cm;
double myinch,myfoot;
myinch=inch*cm;
myfoot=foot*cm;
cout<<"输入你的身高(CM)___\\b\\b\\b";
cin>>cm;
cout<<"你的身高是"<<cm<<"cm,"<<myinch<<"inch,"<<myfoot<<"foot"<<endl;
下面是显示结果:
输入你的身高(cm)172
你的身高是172cm,-335007449.400000inch,-25769803.800000foot
请问为什么英尺和英寸会显示一长串错误的数字。
using namespace std;
const double inch=0.39;
const double foot=0.03;
int main()
cout.setf(ios_base::fixed,ios_base::floatfield);
int cm;
double myinch,myfoot;
cout<<"输入你的身高(CM)___\\b\\b\\b";
cin>>cm;
myinch=inch*cm;
myfoot=foot*cm;
cout<<"你的身高是"<<cm<<"cm,"<<myinch<<"\
inch,"<<myfoot<<"foot"<<endl;
return 0;
/*程序的顺序写错了,在执行
myinch=inch*cm;
myfoot=foot*cm;
如果你没有对cm赋予初值那么编译器就会随机的给他一个初值来完成此语句的执行。那么就会得不到你想要的结果。你的主函数是有返回值的,最好给他一个返回值,虽然不加也可以,但是当你写大程序的时候,警告的东西好、就会多起来,处理起来不好,加个返回语句,程序看起来比较整齐,这也是养成良好编程习惯的一种哦。*/ 参考技术A 看样子是装不下直接越界了
从输入中获取数字和单位作为双精度和字符串 - 编程:使用 C++ 的原则和实践
【中文标题】从输入中获取数字和单位作为双精度和字符串 - 编程:使用 C++ 的原则和实践【英文标题】:Getting a number and a unit from input as a double and a string -- Programming: Principles and Practices Using C++ 【发布时间】:2015-10-02 07:43:38 【问题描述】:我一直在阅读 Bjarne Stroustrup 的《编程:为我自己的利益使用 C++ 的原则和实践》。这不是家庭作业,也不是上学的。
我对第 4 章的这个练习已经束手无策了。我应该从输入中获取一个数字和一个单位,将数字存储为双精度数,将单位存储为 while 循环中的字符串,然后跟踪迄今为止看到的最大和最小数字。它非常适用于像“m”或“g”这样的一个字符的单位,但是当我输入一个像“cm”或“ft”这样的两个字符的单位时,循环结束并且程序终止。以下是我的代码:
#include <iostream>
using namespace std;
int main()
double temp = 0;
string unit = " ";
double largest = 0;
double smallest = 0;
while (cin >> temp >> unit)
if (largest == 0 && smallest == 0)
largest = temp;
smallest = temp;
cout << "That's the largest number seen so far.\n";
cout << "That's the smallest number seen so far.\n";
else if (temp >= largest)
largest = temp;
cout << "That's the largest number seen so far.\n";
else if (temp <= smallest)
smallest = temp;
cout << "That's the smallest number seen so far.\n";
else
cout << temp << '\n';
return 0;
我非常感谢在解决此问题方面的任何帮助。快把我逼疯了。
【问题讨论】:
您确定您正在使用您向我们展示的程序,与您向我们展示的完全一样吗? Because it seems to work fine. 看起来您的编译器假定字符串是没有string
标头的字符...
@JoachimPileborg 如果是这样的话,那么我能想到的唯一问题就是我运行它的环境。我正在使用 Xcode 并在 Xcode 的控制台模拟器中对其进行测试。
@SergeBallesta #include 在它编译之前我需要#include <string>
,并且我添加了额外的“printf()”stmts 用于调试。
但是您的代码应该可以工作:一个字符或多个字符。
这是我的(修改后的)代码:
#include <iostream>
#include <string>
using namespace std;
int main()
double temp = 0;
string unit = " ";
double largest = 0;
double smallest = 0;
while (cin >> temp >> unit)
cout << "NEXT: temp=" << temp << ", unit=" << unit << "\n";
if (largest == 0 && smallest == 0)
largest = temp;
smallest = temp;
cout << "That's the largest number seen so far.\n";
cout << "That's the smallest number seen so far.\n";
else if (temp >= largest)
largest = temp;
cout << "That's the largest number seen so far.\n";
else if (temp <= smallest)
smallest = temp;
cout << "That's the smallest number seen so far.\n";
else
cout << temp << '\n';
cout << "DONE: temp=" << temp << ", unit=" << unit << ", smallest=" << smallest << ", largest=" << largest << "\n";
return 0;
这是示例输出:
12 cm
NEXT: temp=12, unit=cm
That's the largest number seen so far.
That's the smallest number seen so far.
6 "
NEXT: temp=6, unit="
That's the smallest number seen so far.
18 feet
NEXT: temp=18, unit=feet
That's the largest number seen so far.
^D
DONE: temp=18, unit=feet, smallest=6, largest=18
【讨论】:
感谢您的评论。它仍然对我不起作用。输入 12cm 给出以下结果:DONE: temp=0, unit=m, minimum=7, maximum=7 您需要一个介于“12”和“cm”之间的空格。由于您要求两个变量 - 您需要空格(“分隔符”)来分隔它们。 @AnthonyRossello 这是因为 cin 失败了,因为它试图读取一个明显的字符串“12cm”而不是像它需要的数字。更正是在12到cm之间加一个空格或者回车,然后将t“12”作为数字读入temp,将“cm”作为字符串读入unit【参考方案2】:好的,谢谢大家的帮助。
问题似乎是编译器/系统特定的。我的代码与 OSX 的默认编译器存在问题,但在 Windows 10 上使用 MinGW 作为编译器运行相同的代码可以完美运行。多么奇怪的错误。如果有人对如何使用其默认编译器使该程序在 OSX 上运行有任何提示,将不胜感激。
【讨论】:
这不是“编译器错误”。请参阅下面的回复。以上是关于c++编程问题,输入你的身高(单位是cm),转换成英尺和英寸显示。的主要内容,如果未能解决你的问题,请参考以下文章