For循环未根据公式输出正确的结果

时间:2018-08-05 22:55:08

标签: c++

我正在尝试进行C ++课程的作业。问题在下面

  

创建一个C程序,使用以下命令在屏幕上打印两列   华氏温度和等效温度   摄氏度。

     

左栏显示以华氏温度为单位的温度。右栏   显示摄氏温度。

     

从0华氏度开始,一直到300度   华氏温度。采取20度的步幅。摄氏1度   逗号后面的位置(使用“%10.1f”作为格式说明符)。也   打印标题文本。

     

使程序维护不敏感,这意味着启动-   并且最终温度和步长必须易于调整。

这是我的C ++代码

{
    // TEMPERATURE CONVERSION
    float celsius;
    float startrange;
    float endrange;
    float increment;

    printf("Enter start range in Fahrenheit \n");
    scanf("%f",&startrange);
    printf("Enter end range in Fahrenheit \n");
    scanf("%f",&endrange);
    printf("Enter increments in Fahrenheit \n");
    scanf("%f",&increment);

    float counter;

    for(counter=startrange; counter<endrange; counter = counter + increment)
    {
        celsius=(5.0/9.0)*(counter-32);
        printf("%f \t","%f \n",counter,celsius);
    }
    return 0;
}

CMD屏幕输出仅将所有结果打印为0。不确定我的方法有什么问题-我正在将用户输入的值分配给输入,并且循环应该只打印输出。

我在屏幕抓取中遇到错误:

https://imgur.com/a/kEEdiSD

1 个答案:

答案 0 :(得分:2)

您的printf调用使用"%f \t"作为格式说明符,并传递字符串文字"%f \n"作为要格式化的值。于是程序表现出未定义的行为,因为%f指定者期望的参数类型为double,而不是char*

第三个和第四个参数-实际的浮点值-根本没有任何对应的格式说明符。