1986年世界杯_世界杯年份 - duowuon.com

  • 首页
  • 世界杯比赛结果
  • 卡塔尔世界杯球场
  • 世界杯最终排名

输入了数据,为什么输出的结果为0.00?初学者容易犯的几种错误

2025-05-20 03:22:58 | 世界杯最终排名

对于初学者大概有以下几种情况:

A,定义的字符类型与输入函数的类型不一样

B,scanf函数没有加“&”符号

C,计算的数字并没有进行赋值

D,int型数字进行除法时,除数大于被除数

下面来一一讲解:

引入求圆的以及球的一些简单计算:

​

#include

#include

int main() {

double r,h,pi,a1;//输入的double

pi = 3.1415926;

printf("enter the r:");

scanf("%f",&r);

printf("enter the h:");

scanf("%f",&h);

a1=2.0*pi*r;

printf("C圆=%6.2f\n",a1);

printf("S圆=%6.2f\n",pi*r*r);

printf("C球=%6.2f\n",4*pi*r*r);

printf("S球=%6.2f\n",4/3*pi*r*r*r);

return 0;

}

​

A,这一段代码看似没有问题:

但是double 定义的r,h要与%lf对应才可,否则会出现储存不了的情况。

这里1,可以将double改为float。

2,可以将%f改为%lf

注意:用float定义时,用%lf或者%f输入都可以

printf输出用什么%(,)也没有那么讲究,根据需求来就行。

B,在进行盲打的时候,对于初学者而言(至少我是这样嘿嘿),“&”及其容易忘记:

​

#include

int main() {

int d;

scanf("%d",d);

printf("%d",d);

return 0;

}

​

不管你输入的是什么,最后都无法输出。

C,计算的数字并没有进行赋值,

就是说如果你先写的输出语句后写的输入语句,那么结果会被计算机随机赋上0.

#include

int main() {

double d,e;

double f,g;

e=g;//为什么e,d=0?

d=f;//时效性问题,就是在给e,d赋值的时候f,g还没有进行赋值,故默认为0

f=3157.890121;

g=0.123456789;

printf("e=%lf,d=%lf\n",e,d);

printf("f=%lf,g=%lf",f,g);

}

D,int型数字进行除法时,除数大于被除数:

有以下示例:

#include

int main() {

int a1,b1;

float a2,b2;

a1=3/4;

b1=3/4;

a2=3.0/4.0;

b2=3.0/4.0;

printf("a1=%d\n",a1);

printf("b1=%lf\n",b1);

printf("a2=%d\n",a2);

printf("b2=%lf\n",b2);

printf("%d\n",3/4);

printf("%lf\n",3/4);

printf("%d\n",3.0/4.0);

printf("%lf",3.0/4.0);

return 0;

}

简单观察以后发现,输出的结果与定义类型还有输出类型都有关系:

首先如果要输出0.75

那么输出不能为%d,否则因为显示不了小数而被计算为0

其次定义不能用int(整形),以整形计算时,无论输出如何都为0

总结就是,

如果分开写1,定义为double或者float

2,计算时以浮点型计算

3,输出以%f或者%lf

复合语句就是:printf("%lf",3.0/4.0);写就行

出错场景可能是这样的

#include

int main(){

const double PI=3.14;

double r,s1,s2;

printf("enter r:");

scanf("%lf",&r);

s1=3/4*PI*r*r*r;

s2=3.0/4.0*PI*r*r*r;

printf("%.21f\n",s1);

printf("%.21f",s2);

return 0;

由上面总结的可知s1输出为0.00

改错的话就如s2,将整形数字变为浮点型即可

找错误的时候可以看“/”的分子分母是不是所需要的类型

还有就是数字后面加小数点什么意思:

double a = 3/4;

double b = 3.0/4.0;

前一个是按整数型计算:结果a=0.000000;

后面一个是按浮点型计算:结果b=0.750000;(均是以%lf输出)

(浮点型说白了就是带小数的数据)

作者也是刚刚学习C语言1个多月,有什么不足的地方欢迎各位大佬指正

操作系统:Windows10

软件:Devc++

编译器:TDM-GCC 4.9.2 64-bit Release

竿的成语
《黑暗之魂3》英雄古达弱什么?
友情链接:
Copyright © 2022 1986年世界杯_世界杯年份 - duowuon.com All Rights Reserved.