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

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

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

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

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

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

下面来一一讲解:

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

​
#include <stdio.h>
#include <math.h>
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 <stdio.h>
int main() {
	int d;
	scanf("%d",d);
	printf("%d",d);
	return 0;
}

​

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

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

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

#include <stdio.h>
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 <stdio.h>
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 <stdio.h>
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

  • 29
    点赞
  • 64
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值