【问题标题】:Why my while loop is fail to execute after one time?为什么我的while循环一次后无法执行?
【发布时间】:2021-06-06 07:20:00
【问题描述】:

下面是我的程序

void metertofeet(double);
void gramtopounds(double);
void celsiustofahren(double);
int main(void)
{
    int n,i=0;
    char unit;
    double value;
    scanf("%d",&n);
    while(i<n)
    {
        i++;
        scanf("%lf %s",&value,&unit);
        if(unit=='m')
         metertofeet(value);
        if(unit=='g')
           gramtopounds(value);
        if(unit=='c')
           celsiustofahren(value);
    }
    return 0;
}
void metertofeet(double v1)
{
  double F;
  F=3.2808*v1;
  printf("%.6lf ft\n",F);
}
void gramtopounds(double v2)
{
    double P;
    P =  0.002205*v2;
    printf("%.6lf lbs\n",P);
}
void celsiustofahren(double v3)
{
    double Fh;
    Fh=32 + (1.8*v3);
    printf("%.6lf f\n",Fh);
}

这是一个将米转换为英尺、克转换为磅、摄氏度转换为华氏的程序。基于n 的转换次数(即)值当执行发生时,在while 循环内只询问一次输入。即使我的i 的值没有超过n ,循环也会失败

【问题讨论】:

  • 对单个 char 变量的地址使用 %s 不会有好的结果。您的程序调用未定义的行为,因为设置字符串终止符超出了允许的内存。
  • @WhozCraig 你建议使用%c 作为格式说明符吗?

标签: c function while-loop nested-if


【解决方案1】:

unit 是一个字符变量。 %s 指定一个字符串。将其设为%c,如 scanf("%lf %c",&amp;value,&amp;unit);.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-12
    • 1970-01-01
    • 1970-01-01
    • 2019-01-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多