在C++中计算1除以三再乘以三 会怎么样?

如题所述

都用int型计算的话,结果为0,它留整数部分;
如果 1除以3.0的话,结果为小数,再乘以3,依旧会有小数部分。

你图片太小了,我看不到代码部分。

#include<stdio.h>
#include<stdlib.h>
main()
{
printf("%f",1/3*3);
}
这样的结果是0.000000

但是
#include<stdio.h>
#include<stdlib.h>
main()
{
printf("%f",1/3.0*3);
}

这样的结果就是1.000000了。原因是1/0.3的结果为0.333333,一个int值被一个float值除的结果会是一个float的值。再乘以一个int值结果也为float值。但是你将printf语句中的输出类型改成%d的话,结果依然会是0。因为,实际计算时候,产生了精度损失,使得实际结果小于1。输出类型改变后,只会取整数部分。

#include<stdio.h>
#include<stdlib.h>
main()
{
printf("%d",1/3*3);
}

这样的结果是0

#include<stdio.h>
#include<stdlib.h>
main()
{
printf("%d",1/3.0*3);
}
这样的结果是0
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-02-19
float f;
f=1/3*3 -- 按整除计算,1/3 得 0, 0*3 得 0, 转 float 0.000000
如果写 f=1.0/3*3; 结果就正确了。
int a;
a =(int) (1.0/3.0*3.0); 按float计算, 最后 得 1
---
完整程序
#include <stdio.h>
#include <stdlib.h>
main()
{int a;
float f;
a =(int) (1.0/3.0*3.0);
printf("%d",a);

f=1/3*3;printf("%f",f);
return 0;
}本回答被网友采纳
第2个回答  2013-02-20
你图片裏面的问题,主要是因为printf函数的第二个参数你使用的是一个表达式,表达式的值你没有定义变量来保存,当printf函数调用的时候,表达式的值已经消失了,所以你运行会出错,你定义一个float型的变量来保存,然後在printf中直接用变量来输出
第3个回答  2013-02-19
结果是零,一除以三结果为零,再乘以三的话,结果为零。追问

你确定吗?

那为什么结果是这样的?

第4个回答  2013-02-19
1/3是整数除,额,那个如图在哪里

在C++中计算1除以三再乘以三 会怎么样?
这样的结果就是1.000000了。原因是1\/0.3的结果为0.333333,一个int值被一个float值除的结果会是一个float的值。再乘以一个int值结果也为float值。但是你将printf语句中的输出类型改成%d的话,结果依然会是0。因为,实际计算时候,产生了精度损失,使得实际结果小于1。输出类型改变后,只会取整数部...

c++求三个整数平均值
在 c++中,求三个整数平均值的方法是将三个整数相加,然后除以 3.0,得到一个浮点数。如果直接除以 3,那么结果会是一个整数,小数部分会被舍去。例如,如果 a=1,b=2,c=3,那么 (a+b+c)\/3.0 的值是 2.000000,而 (a+b+c)\/3 的值是 2。您可以使用 scanf 函数输入三个整数,然后使...

编程序:编写任意一元三次方程求根该怎样编
\/\/ 3x(3)+2x(2)+x(1)-6=0 \/\/ x(3)+10x(2)+x(1)+1=0 在编程中求解方程的解都是用“穷举”的思想(转化为程序就是循环)进行的,即不断判断在一定的数据范围内存不存在解。所以运算的次数会很多很多!\/\/ double x=-0.001; \/\/假设解的最小值,根据方程情况决定!double M=100; \/...

c++中的三目运算符执行的结果是?
因为a=1,b=2,所以a

怎么用c++实现计算阶乘的算法呢?
"%lld\\n", s);\/\/输出结果return 0;}三、输出结果:2561327494111820313 四、注意事项:1 由于20阶乘和很大,达到2.56*10^18,所以32位的int是存储不下的。 必须使用64位的long long。 否则会出现溢出现象。2 如果是VC\/VS一类的IDE,会不支持long long, 需要修改类型为__int64。

执行"int k=11;k=1\/3*k++;"后,k的值是___ (求详细解释!谢谢!)_百度...
k = 1;这题要注意运算符优先级的问题,这点和我们数学上认识的不一样。k=1\/3*k++; “\/"和"*"的优先级是一样的,所以先算1\/3 = 0;因为是K是int,0.333取整就是0了。0*k = 0;最后再++,所以值为1。

C++ 第一行输出一个* 第二行输出三个 如图: * *** *** ***
第三个for循环还是控制横坐标的……第一行中间出现一个“*”,第一行,输出“*”的个数是2*1-1=1啊,这 为什么会换行呢,因为每一行输出后都有cout<<endl;啊,对于每个i都会执行一次cout<<endl;,就是每行结束都会换行啊 j<5-i就是计算每行前面应该打几个空格,j<=2*i-1就是应该打几个...

求大神帮看个C++题
3. 这个在第二条基础上扩展 azbjc是前提 如果把2中的看成一个集合,同时符合3的也看成一个集合,那么azbjc必须是2或3中的一个元素。在此基础上azbojac也是ac的 azbjc=>azbojac 做的改变 azb不变加一个o,j不变,加一个a,结尾c不变 而abc同样只能由o组成 这样综合起来,可以ac的有几个特点...

用c语言编写:从键盘输入一个数,判断是否都能被3整除
1、打开软件,找到文件,新建项目,点击项目新建一个文件。2、会弹出这样的界面,选择为win32控制台程序,输入名称,然后点击确定。3、继续点击下一步 4、在源文件右键,添加,新建项目;然后跳出窗口选择C++文件(.cpp),最后点击添加。5、写一下代码 6、运行结果如下:...

C++根据三角形三边求面积
你的程序错在 area=TriangleArea(a,b,c);\/\/为什么这里就不用再定义float if(area==-1)这两句了;int 类型的-1和double类型的-1.0是不等的。当条件三边长不成立时,函数TriangleArea(a,b,c)返回-1.000000,这和area==-1是不一会事的,你可以改成 if(area)cout<<'('<<a<<','<<b...

相似回答