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
请问为什么英尺和英寸会显示一长串错误的数字。

#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;
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 仍然没有解决问题。 【参考方案1】:

在它编译之前我需要#include &lt;string&gt;,并且我添加了额外的“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),转换成英尺和英寸显示。的主要内容,如果未能解决你的问题,请参考以下文章

如何在我的列表中的浮点数末尾添加后缀(如度量单位 cm、m、km 等)?

2015级C++第2周实践项目

c语言编程题

分支嵌套

班级排队

28 三元运算符之三个和尚