输入了数据,为什么输出的结果为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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!