【问题标题】:How to write a simple program in c language to transform grams to miligrams and vice versa如何用c语言编写一个简单的程序将克转换为毫克,反之亦然
【发布时间】:2018-03-30 19:37:39
【问题描述】:

我想用 c 编写一个程序来将毫克转换为克,反之亦然。我尝试了下面的方法,但我得到零作为输出。我想知道怎么了。

我的方法:

#include<stdio.h>

int main()
{
    char input;
    double mili = 0,gram = 0;

    printf("\n give input \n");
    scanf("%c", &input);
    if (input == 'g')
    {
        printf("\n enter grams to transform to miligrams \n");
        scanf("%f",&gram);
        mili=gram/1000;
        printf("\n the transformation of %.10lf grams to miligrams is %.10lf \n",input,mili);

    }
    else if (input == 'm')
    {
        printf("\n enter miligrams to transform to grams \n");
        scanf("%f",mili);
        gram=mili*1000;
        printf("\n the trasnformation of %.2f miligrams to grams is %.2f \n",input,gram);
    }  
    else
        printf("\n wrong input \n");

    return 0 ;
}

【问题讨论】:

  • 您错误地打印input 而不是grammili
  • 加上你的数学错了.. 毫克 = 克 * 1000 和克 = 毫克 / 1000

标签: c data-conversion


【解决方案1】:

这里有三个问题:

首先,对于grammili,您使用的是%f,当您传递double * 时,它需要float *。您需要使用%lf 来读取double

其次,你的计算搞混了。毫克 = 克 * 1000 和克 = 毫克 / 1000。

第三,你在两个地方打印input,而你应该打印grammili

【讨论】:

    【解决方案2】:

    您的数学混合为克=毫克/1000 和毫克=克*1000。您需要将输入类型更改为 double 而不是使用 float。

    【讨论】:

    • hmm 除了数学问题,最重要的是获得输出。浮动 ----> 双重声明完成了这项工作,谢谢。
    【解决方案3】:

    要阅读double,请使用"%lf",反向数学计算,不要打印input,而是打印grammili

    更正:

    #include <stdlib.h>
    #include <string.h>
    #include <stdio.h>
    
    int main()
    {
        char input;
    
        double mili = 0;
        double gram = 0;
    
        printf("\n give input \n");
        scanf("%c", &input);
    
        if (input == 'g')
        {
            printf("\n enter grams to transform to milligrams \n");
    
            scanf("%lf", &gram);
            mili = gram*1000.0;
    
            printf("\n the transformation of %lf grams to milligrams is %lf \n", gram, mili);
    
        }
        else if (input == 'm')
        {
            printf("\n enter milligrams to transform to grams \n");
            scanf("%lf", &mili);
    
            gram = mili/1000.0;
    
            printf("\n the transformation of %.2f milligrams to grams is %.2f \n",mili,gram);
        }
        else
            printf("\n wrong input \n");
    
        return 0 ;
    }
    

    测试:

     give input                                                                                                                                   
    m                                                                                                                                             
    
     enter milligrams to transform to grams                                                                                                        
    2000                                                                                                                                          
    
     the transformation of 2000.00 milligrams to grams is 2.00
    
     give input                                                                                                                                   
    g                                                                                                                                             
    
     enter grams to transform to milligrams                                                                                                        
    5                                                                                                                                             
    
     the transformation of 5.000000 grams to milligrams is 5000.000000  
    

    【讨论】:

    • 解决了!实际上,问题肯定是我试图读取变量类型的方式,就像你们上面提到的那样。对于 double 是 %lf。多么愚蠢的错误。解决了 mili 和 gram 的其他问题。谢谢。
    • @OrestisLivas 欢迎您!您也可以考虑选择其中一个答案并接受它。它可以帮助帮助您的人和您获得积分。见:stackoverflow.com/help/accepted-answer
    猜你喜欢
    • 1970-01-01
    • 2020-12-24
    • 2021-10-03
    • 1970-01-01
    • 2017-01-26
    • 1970-01-01
    • 1970-01-01
    • 2015-06-28
    • 1970-01-01
    相关资源
    最近更新 更多