繁体   English   中英

对于用 c 编写的简单代码,我该如何修复此运行时错误?

[英]how can i fix this runtime error for a simple code written in c?

我的代码通过将面积显示为零来向我显示错误的 output:

#include <stdio.h>
double calc(float rad);
void main(void) {
    float rad;
    printf("Enter the circle radius: \n");
    scanf("%f",&rad);
    printf("You entered: %f\n",rad);
        printf("Area is %d\n",calc(rad));
    if(calc(rad)>1000){
       printf("Area is > 1000"); 
    }
    else{
         printf("Area is < 1000"); 
    }
    
}

double calc(float rad){
   double area=3.14*rad*rad;
   return area;
}

Output:

Enter the circle radius : 20
you entered 20.000000
area is 0
area > 1000

所需的 output:

Enter the circle radius : 20
you entered 20.000000
area is 1256.000000
area > 1000

错误的 output 是由于在printf语句中使用%d而不是%lf表示双精度或%f表示浮点数。 打开编译器警告-Wformat将在编译期间突出显示此内容

#include <stdio.h>
double calc(float rad);
void main(void) {
   float rad;
   printf("Enter the circle radius: \n");
   scanf("%f",&rad);
   printf("You entered: %d\n",rad);
       printf("Area is %f\n",calc(rad));
   if(calc(rad)>1000){
      printf("Area is > 1000"); 
   }
   else{
        printf("Area is < 1000"); 
   }

}

double calc(float rad){
  double area=3.14*rad*rad;
  return area;
}

这是正确的代码。 如果您想了解更多信息:

https://codeforwin.org/2015/05/list-of-all-format-specifiers-in-c-programming.html

https://www.cplusplus.com/reference/cstdio/printf/

https://aticleworld.com/format-specifiers-in-c/请先到最后一个链接go。我很抱歉任何不好的英语。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM