c语言小数中5.0是整形还是小数型

求三个整形数的平均值v=(a+b+c)/3,a=4,b=3,c=7,输出两位小数_c语言吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:270,244贴子:
求三个整形数的平均值v=(a+b+c)/3,a=4,b=3,c=7,输出两位小数收藏
楼主自己做的
float a=4.00,b=3.00,c=7.00,v;v=(a+b+c);printf(“%8.2f”,v);
楼上正解 v不应该定义成int 楼主你这样去编译的时候应该是会有警告出现的。
#include&stdio.h&void main(){int a=3,b=4,c=7;scanf("%d,%d,%d",&a,&b,&c);v=(float)(a+b+c)/3;printf("%.2f\n",v);}这样就可以了,你把平均值强制转化成了float型,v就不能取整型了,会出错的
登录百度帐号我的游戏推荐游戏
后查看最近玩过的游戏
为兴趣而生,贴吧更懂你。或c语言 int是不是程序中所有小数都自动化为整数?_百度知道
c语言 int是不是程序中所有小数都自动化为整数?
y.32还是4呢比如输入一个三位数 求它逆序输出的程序#include&100=4;void main(){%d&10;,z;y=a%100/printf(&quot.32如果没有最后一步输出整数的话这里的x是4;,a;}问一下 假如 a是432 那么 这里x=432/scanf(&quot,&a)? 就是int的取整是只针对它后面到分号前那些数 还是针对整个程序呢;x=a&#47,x);100,z;z=a%100%10;%d%d%d\n&quot,y;stdio.h&gt
我有更好的答案
按默认排序
自动转换啊。你最好去看看整数的四则运算,它本身就会做取整操作的。
来自:求助得到的回答
x=4.因为432与100都是整数,结果也只取整数部分。在你编译时候会有警告(不是错误),x的当前类型会造成结果部分丢失。int是一种定义类型,当然只对xyz有效。如果有新的定义,会遵循新的定义类型。xyz属于int类型,而不能说int针对那些数还是整个程序。
int可以强制取整,例如:(int)4.5=4;int在它对应作用域内成立,int是定义在main里面的,所以在main中适用。
是不带小数的432 和 100 在c语言都被看成是int
而int相除的结果就是 int
然后将这个int赋值给x而不是因为x是int 而舍弃小数的你可以这样试试float x = 432/100;然后 用%f输出
看输出的是 4.32还是 4.0 ??
对后面表达式的结果约束,使其转化为整形
其他类似问题
c语言的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁紧急啊C语言 设变量x为float型且已经赋值,则以下语句中能够将x中的数值保留到小数点后面2位,并将第3位四舍五入在线等 - 你问我答知识网
&&&&&&>>>>>>&&紧急啊C语言 设变量x为float型且已经赋值,则以下语句中能够将x中的数值保留到小数点后面2位,并将第3位四舍五入在线等
已解决问题
紧急啊C语言 设变量x为float型且已经赋值,则以下语句中能够将x中的数值保留到小数点后面2位,并将第3位四舍五入在线等
12、设变量x为float型且已经赋值,则以下语句中能够将x中的数值保存到小数点后面2位,并将第3位四舍五入的是__B__。
A)x=x*100+0.5/100.0
B)x=(x*100+0.5)/100.0
C)x=(int)(x*100+0.5)/100.0
D)x=(x/100+0.5)*100.0
我要分析过程,谢谢大虾
(int)(x*100+0.5)
把float型数据(x*100+0.5)强转成int,这样就可以去掉小数点,+0.5就是为了四舍五入
例如x=4.256,则(4.256*100+0.5)=426.1
,则(int)426.1/100.0=4.26
你选的B是错误的,没有强转成int,所以426.1/100=4.261,并没有达到题目要求
••••••••••
回答1:C)x=(int)(x*100+0.5)/100.0
//这个才正确。x*100+0.5对千分位四舍五入,(int)(x*100+0.5)对结果取整,把千分位及以后的位舍去。 回答2:这题的答案不是C吗?怎么你那里写的是B?
A,D明显错了,不解释
B中四舍五入有问题,没有舍去小数点后2位后的数,且值改变了
C是正解,x先乘以100,于是小数点后两位以前的数都到整数部分去了,四舍五入判定小数点后第三位的值,此时应是x*100小数点后一位,若大于4则进,所以x*100+0.5把这种情况进位,而小于等于4的都进不了位,再(int)转型,去掉小数部位,最后除以100 结果就出来了 回答3:C
A ,很明显的错误,乘以100后没有除100,值放大了100倍,再怎么舍也不会变回去
B ,B的错误在于它并不能保留小数点后面2位,但是他可以将小数点第3位四舍五入
C,C和B的差别就在于强制转换类型i,(int)(x*100+0.5)
把float型数据(x*100+0.5)强转成int,X*100的目的是将小数点2位变为整数,+0.5就是为了四舍五入,因为强制转换的时候会将小数部分去掉,如果原来大于0.5那么他就会进1,整数部分就会加1,然后再除以100.0,小数点后2位变回四舍五入后的值。
D。D明显是错的,X/100 +0.5 ,不可能实现第三个小数四舍五入的功能。
祝你进步!!!! 回答4:(int)(x*100+0.5)
把float型数据(x*100+0.5)强转成int,这样就可以去掉小数点,+0.5就是为了四舍五入
例如x=4.256,则(4.256*100+0.5)=426.1
,则(int)426.1/100.0=4.26
你选的B是错误的,没有强转成int,所以426.1/100=4.261,并没有达到题目要求
这个解释挺好。 回答5:float类型的数据是不精确的,所以必须取得其近似值。取其近似值,最好的方法当然是把其放大啦,这样就可以看到它的细微差别。所以先要乘以100,然后考虑四舍五入问题,加上0.5/100就等于是加上0.005.若果其小数点后的第三位小于五,不可以进位,所以就舍去了。这样看当然是B了.
C和D很显然不对,A的话,说实话,在有括号和没括弧的表达式中,我肯定选择带括号的。
现在看出问题了,我有罪我悔过
你知道这是神马?看看这段c语言代码输出小数乘以多少变为整数 为什么小数长了输出就错了 #include &stdi_百度知道
看看这段c语言代码输出小数乘以多少变为整数 为什么小数长了输出就错了 #include &stdi
看看段c语言代码输数乘少变整数 数输错#include &stdio.h&#include &stdlib.h&int main(){ double a,b;
scanf(&%lf&,&a);
while ((a-b)&0) {
b=(long)a; } printf(&%ld&,i); return 0;}
提问者采纳
double 截断误差乘累积误差引起double 截断误差等于 DBL_EPSILON
(需文件 float.h)用 while (fabs(a-b)& DBL_EPSILON)
判断或 自设精度 1E-07 类位数太行 #include &math.h&#include &float.h&while (fabs(a-b)& DBL_EPSILON)
{ }------------另思路 用字符串char a[80];int i,i1=-1;scanf(&%s&,&a);for (i=0;i&strlen(a);i++){if (a[i]=='.')
{ i1==i;}}if (i1== -1) {..}elsei = strlen(a)-i1;
如何将输入的字符串变为double 再将其乘以i
将输入的字符串变为double 再将其乘以i, 同输入double 再将其乘以i 没什么不同。字符串变为double: char a[80];
....; sscanf(a,&%lf&, &b);
提问者评价
太给力了,你的回答完美解决了我的问题!
其他类似问题
按默认排序
其他2条回答
0.0001输入a=0.0001,b=1说(a-b)于0于0……简单程序自debug需要网问……
#include &stdio.h&#include &stdlib.h&int main(){
long b,i; scanf(&%lf&,&a);
b=0; i=1; while ((a-b)&0) {
b=(long)a; } printf(&%ld&,i); return 0;}这样还是不对,一样的问题,我这里debug不方便 这是在用手机编程 不如复制问一问
不会C语言~~~~
include的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁C语言中:输入若干个实数(当连续输入两个零时,输入结束),分别计算它们的整数部分和小数部分的和_百度知道
C语言中:输入若干个实数(当连续输入两个零时,输入结束),分别计算它们的整数部分和小数部分的和
提问者采纳
都不会,完全没有思路,只有寻求帮助了
你是想知道思路还是直接要程序
直接要程序,希望是用C++便写,顺便说哈是怎样思考的,可以不
思路:1:首先输入结束,你把输入放入while(1)循环中,用一个变量保存上一次的输入,如果上一次的为零这一次的也为0 那么就 2:取整求和,直接用(int) 转换便可; 3:小数求和,用输入的浮点型数减去
(int)后的数便可; 至于程序,看完这个之后如果还不会我再给你。不过,你最好自己思考然后自己写出来
嘿嘿·······你还是直接给我程序吧
用标准c行吗
粗糙的写了下, 程序运行结果正确 #include &stdio.h&void main(){ double a=1,a1=0,s=0,ss=0; scanf(&%lf&,&a1); s
= (int)a1; ss =
a1-s; while(1) {
scanf(&%lf&,&a);
if(a1==0 && a==0)
+= (int)a;
ss += a - (int)a; } printf(&%lf\t%lf\n&,s,ss);
提问者评价
其他类似问题
按默认排序
其他2条回答
#include&iostream.h&int main(){ double x,y;
int sum1=0;
double sum2=0; do {
cin&&x&&y;
int x1,y1;
double x2,y2;
x1=(int)x;
y1=(int)y;
sum2+=x2;}while(x!=0&&y!=0);
cout&&&整数&&&sum1&&& &&&&数& &&sum2; return 0;}
#include &iostream&#include&iomanip&int main(){
int Int[100] = {0};//整数部分
float Dec[100] = {0.000000f};//小数部分。
cout && "输入数字个数:" &&
int isum=0;//整数和
float dsum=0.000000f;//小数和
for(int i=0;i&n;i++)//分解实数 整数部分 与小数部分
cout && "输入第"&& i && "数字:" &&
cin.clear();
cin.sync();
Int[i]=(int)f;
Dec[i] = f - (int)f;
for(int i = 0;i&n;i++)//分别求整数和小数的和
isum += Int[i];
dsum += Dec[i];
cout && isum &&
cout&&setiosflags(ios::fixed)&&setprecision(6)&&dsum&&
return 0;}
不过你好像忽略了“当连续输入两个零时,输入结束”
这种答案你也能选。double与0的比较都不会的。
他还是很热心的,所以···········
整数部分的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 c语言小数 的文章

 

随机推荐