鱼C论坛

 找回密码
 立即注册
查看: 4467|回复: 4

关于C++快速入门第六讲 问题请教

[复制链接]
发表于 2013-8-17 11:47:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
在第六讲中,小甲鱼两次输入温度,第一次是 浮点型→浮点型  第二次是 整形→整形。
我按照小甲鱼写的,为什么我第二次是输入整形,他还是转换成浮点型??一下是源码,醒我大家帮我改下,告诉我错在哪里?谢谢~~

//f = c x 9 / 5 + 32
#include<iostream>

void js(double tempin, char typein);
void js(int tempin, char typein);

int main()
{
        double tempin;
        char typein;
        int tempinint;

        std::cout << "输入xx.x c   or  xx.x f\n";
        std::cin  >> tempin >> typein;
        std::cin.ignore (100,'\n');
        std::cout <<"\n";

        js( tempin, typein);


        std::cout << "输入xx c   or  xx f\n";
        std::cin  >> tempinint >> typein;
        std::cin.ignore (100,'\n');
        std::cout <<"\n";

        js( tempinint, typein);

        return 0;
}

void js(double tempin, char typein)
{
        const unsigned short add = 32;
        const double ratio = 9.0 / 5.0 ;

        double tempout;
        char typeout;
       
        switch( typein )
        {
        case 'c':
        case 'C':
                tempout = tempin * ratio + add;
                typein = 'C';
                typeout = 'F';
                break;

        case 'f':
        case 'F':
                 tempout = (tempin - add) / ratio;
                 typein = 'F';
             typeout = 'C';
                 break;

        default:
                typeout = 'E';
                break;
        }

        if( typeout != 'E' )
        {
                std::cout << tempin << typein
                        <<" = " << tempout
                        << typeout << "\n \n";
        }
        else
        {
                std::cout<<"输入错误";
        }

        std::cout <<"请重新输入任何退出";
        std::cin.get();
}

void js(int tempin, char typein)
{
        const unsigned short add = 32;
        const double ratio = 9.0 / 5.0 ;

        double tempout;
        char typeout;
       
        switch( typein )
        {
        case 'c':
        case 'C':
                tempout = tempin * ratio + add;
                typein = 'C';
                typeout = 'F';
                break;

        case 'f':
        case 'F':
                 tempout = (tempin - add) / ratio;
                 typein = 'F';
             typeout = 'C';
                 break;

        default:
                typeout = 'E';
                break;
        }

        if( typeout != 'E' )
        {
                std::cout << tempin << typein
                        <<" = " << tempout
                        << typeout << "\n \n";
        }
        else
        {
                std::cout<<"输入错误";
        }

        std::cout <<"请重新输入任何退出";
        std::cin.get();
}

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-8-17 12:21:59 | 显示全部楼层
我也是刚刚看到这里 给你我的源码 共同努力啊 (*^__^*) 嘻嘻……
  1. #include<iostream>
  2. int Converttemperature(double tempin,char typein);
  3. double CTOF(double tempin);
  4. double FTOC(double tempin);
  5. void main()
  6. {
  7.         double tempin;
  8.         char typein;
  9. s:  std::cout << "请以[温度 C]或[温度 F]的格式输入:";
  10.         std::cin >> tempin >> typein;
  11.         std::cin.ignore (100,'\n');
  12.         std::cout << "\n";
  13.         Converttemperature(tempin,typein);
  14.         if(Converttemperature(tempin,typein) == 1)//如果格式错误就提示
  15.         {
  16.                 std::cout << "对不起你输入错误请重新输入!" << "\n";
  17.                 goto s;
  18.         }
  19.         std::cout <<"Please enter an end of any character";
  20.         std::cin.get();

  21. }

  22. int Converttemperature(double tempin,char typein)
  23. {
  24.         switch(typein)
  25.         {
  26.         case 'C':
  27.         case 'c'://如果是 [温度 c/C] 则将摄氏度转换成华氏度
  28.                 {
  29.                         double result;
  30.                         result=CTOF(tempin);
  31.                         std::cout << tempin <<"摄氏度 = "<< result <<"华氏度" << "\n";
  32.                         return 0;
  33.                         break;
  34.                 }
  35.         case 'f':
  36.         case 'F'://如果是[温度 f/F]则将华氏度转换成摄氏度
  37.                 {
  38.                         double result;
  39.                         result = FTOC(tempin);
  40.                         std::cout << tempin << "华氏度 = "<< result << "摄氏度" << "\n";
  41.                         return 0;
  42.                         break;
  43.                 }
  44.         default:
  45.                 {
  46.                         return 1;//如果格式错误则返回1
  47.                         break;
  48.                 }
  49.         }
  50. }

  51. double CTOF(double tempin)//将摄氏度转换成华氏度
  52. {
  53.         double result;
  54.         result = tempin * 1.8 + 32;
  55.         return result;
  56. }

  57. double FTOC(double tempin)//将华氏度转换成摄氏度
  58. {
  59.         double result;
  60.         result = (tempin - 32) / 1.8;
  61.         return result;
  62. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-17 12:30:57 | 显示全部楼层
谢谢,楼上,我下载对比下,看看我错哪了。谢谢啊~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-17 12:55:01 | 显示全部楼层
继续求答案~我一楼的程序错哪了?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-17 13:04:19 | 显示全部楼层
我知道我错哪了,从上往下,我的最后一个函数里面 有一个 int 类型的 没改过来,还是定义的double所以错了= =
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-5 15:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表