而循环仅打印一次功能

问题描述 投票:0回答:1

我正在创建一个简单的程序来转换单位。 while循环调用n次scanf(),每次都输出一个单位转换。在下面的代码中,它似乎偶尔会随机工作。

这是正在发生的事情:

多少?2num转换,单位转换?4楼num转换,单位转换?3克0.006615磅

注意:用户首先输入2,因此理想情况下它将可以进行2个单位转换。但是随后用户输入4 f为什么不输出返回值[这意味着它将传递给函数double feet(double m)?它似乎没有传递给函数f() ....

#include <stdio.h>
double feet(double m);
double lbs(double g);
double f(double c);

int main()
{
    int num, i;
    i = 0;

    printf("how many?\n");
    scanf("%i", &num);

    for(i = 0; i < num; i++)
    {
    double input = 0.0;
    double output;
    char unit = '\0';
        printf("num to convert, units to convert?\n");

        if(scanf("%lf %c", &input, &unit) != 2) break;


        //meters to feet
        if(unit == 'm')
        {
            output = feet(input);
            printf("%lf ft\n",output);
        }

        //grams to lbs
        if(unit == 'g')
        {
            output = lbs(input);
            printf("%lf lbs\n",output);
        }

        //c to f
        if(unit == 'c')
        {
            output = f(input);
            printf("%lf f\n",output);
        }


    }


    return 0;
}

double feet(double m)
{
    double feet = 3.3808*m;
    return feet;
}


double lbs(double g)
{
    double lbs = 0.002205*g;
    return lbs;
}


double f(double c)
{
    double f = 32 + 1.8*c;
    return f;
}

我已经尝试过很多事情,例如将print语句放入函数中[但是似乎没有在调用函数]。我可能不正确地使用scanf。谢谢!

c for-loop scanf
1个回答
0
投票

在if语句中,没有将unit与字符'f'进行比较的语句。

因此是第一个输入

num to convert, units to convert?
4 f

均未调用。

所以看来程序有错字。

代替

    //meters to feet
    if(unit == 'm')
    {
        output = feet(input);
        printf("%lf ft\n",output);
    }

应该有

    //meters to feet
    if(unit == 'f')
    {
        output = feet(input);
        printf("%lf ft\n",output);
    }
© www.soinside.com 2019 - 2024. All rights reserved.