c语言,定义h为double的话h=1/2*h和h=h/2为什么不一样,具体原因是什么

作者&投稿:陈没曼 (若有异议请与网页底部的电邮联系)
在C语言中(1/2)*(a+b)*h和 (a+b)*h*(1/2)为什么结果不一样?第一个结果是0,第二个就不是.~

你是不是a,b取的都是整形(int类型)?这是(1/2)*(a+b)*h中先算(1/2)*(a+b)。如果这个数小于0.5就会自动四舍五入变为零。所以再乘h还是零。而后面一种先算(a+b)*h再除以二。所以不为零

#include "stdio.h"
main()
{double x,y;
printf("%f",(x=1,y=x+3/2));
getch();
return 0;
}
答案是2.000000
一班书上的参考答案都为2.0,这是正常的,因为谁也不会搞的那么精确吧!
例如那个二级C上机考试吧,有的试题在初始化时也会不那么精确的!
例如,有的定义为double sum=0;
而精确的为:double sum=0.000000;

1/2是整型除以整型,因此结果为0。而h/2中h为浮点型,因此进行浮点运算,结果和数学的h/2相同。


c语言算法,鸡兔同笼
输入:两个整数b和m,如上所述。输出:鸡的数目和兔的数目。我们假设a = 鸡只数,b = 兔只数(兔的脚数×总只数-总脚数)÷(兔的脚数-鸡的脚数)=鸡的只数,a = ( 4*n - m )\/2。总只数-鸡的只数=兔的只数,b = n - a。具体代码:include "stdio.h"int main() { i...

C语言中的DO是什么意思?
C语言中DO是执行某代码块的意思,do关键字不能单独使用,通常用在do...while 循环中。do…while 循环不经常使用,其主要用于人机交互。它的格式是:do{语句;}while (表达式);注意,while 后面的分号千万不能省略。do…while 和 while 的执行过程非常相似,唯一的区别是:“do…while 是先执行一次循...

变频器hdo接线代表什么?
HDO是变频器的“可定义的多功能高速输出端子”,HDI是变频器的“可定义的多功能高速输入端子”,公共端是CM。一、变频器端子 变频器接线端子,从功率上可以分成两类:强电端子和弱电端子。1、强电端子是指高电压高功率的接线端子,通常包括RST供电电源端子、UVW电机端子、P+和N-直流母线端子、PB制动电阻...

用c语言do……while编写一个班级平均分计算程序每次执行该程序都能够处...
首先定义变量`grade`(学生成绩)、`sum`(总成绩)、`count`(学生人数),并初始化`sum`和`count`为0。2. 进入`do{...}while(...);`循环,提示用户输入学生成绩,读取用户输入的整数存储到变量`grade`中。3. 判断`grade`是否大于等于0,如果是,则将该成绩加到`sum`中,并将`count`加1;如果...

C语言正确定义不用程序DO
20 x初始为8,第一次循环 x-=3 x=x-3=5 判断x==0不成立,退出循环。输出为 x=5 21 初始x=1 y=0 第一次循环 ++y y=1 x\/=x x=1\/1=1 判断x>1&&y>2不成立,退出循环 输出为 y=1,x=1

C语言中while和do–while循环的主要区别是什么?
C语言中while和do–while循环的主要区别如下:1、循环结构的表达式不同 while循环结构的表达式为:while(表达式){循环体}。do-while循环结构表达式为:do{循环体;}while (条件表达);。2、执行时判断方式不同 while循环执行时只有当满足条件时才会进入循环,进入循环后,执行完循环体内全部语句至当条件不...

求n!,用c语言的do……while循环结构
include <stdio.h>int main(void){ int n,i=1,fac=1; printf("请输入一个整数数!"); scanf("%d",&n); do{ fac*=i; i++; }while(i<=n); printf("%d的阶乘是%d\\n",n,fac); return 0;}

c语言中用do……while编写一个公差为三的等差数列的前二十项
include<stdio.h>int main(){ int n,i=1; printf("请输入等差数列首项:"); scanf("%d",&n); do{ printf("第%2d项是:%2d\\n",i,n); n+=3; i++; }while(i<=20);}

c语言do while循环语句举例
while循环和for循环都是入口条件循环,即在循环的每次迭代之前检查测试条件,所以有可能根本不执行循环体中的内容。C语言还有出口条件循环(exit-condition loop),即在循环的每次迭代之后检查测试条件,这保证了至少执行循环体中的内容一次。这种循环被称为do while循环。看下面的例子:include <stdio.h> ...

C语言程序题,如何将for语句转换为do while语句?
i=1 do { if(i>=101)break;i++;代码……}while(1)

襄垣县19363485960: c语言,定义h为double的话h=1/2*h和h=h/2为什么不一样,具体原因是什么 -
迟阳尤尼: 1/2是整型除以整型,因此结果为0.而h/2中h为浮点型,因此进行浮点运算,结果和数学的h/2相同.

襄垣县19363485960: c语言double * 多少位 -
迟阳尤尼: double占8个字节(64位)内存空间,最多可提供16位有效数字,小数点后默认保留6位.如全是整数,最多提供15位有效数字.测试代码如下,#include <stdio.h> #include <math.h> int main(int argc, char *argv[]) { printf("%lf\n",...

襄垣县19363485960: C语言里的DOUBLE函数怎么解释,怎么设置变量? -
迟阳尤尼: double是双精度类型变量,就是精确度更高,可以存储的小数位数更多 如果想让a,b随意填,可改成如下程序: #include "stdio.h" void main() {int a,b,sum; cin>>a>>b; sum=a+b; printf("sum is %d\n"); }

襄垣县19363485960: 用c语言实现字符串到double的转换
迟阳尤尼: #include <stdlib.h> void main() { char buf[] = "123.456789"; double k,i=5,j; k = atof(buf);//把字符串转化为double型 j=k+i; printf("%.2lf", j); } atof()是把字符串转化为双精度型数 atoi()是把字符串转化为整型数 atol()是把字符串转化为长整型数

襄垣县19363485960: c语言把数字字符串转换成double型数字 -
迟阳尤尼: sscanf(,"%f",);这样得到的是float类型的,然后将其强制转换为double类型

襄垣县19363485960: c语言怎样输入对数 -
迟阳尤尼: #include<stdio.h> #include <math.h> void main() { float x=5,y; y=log(x); printf("%f\n",y); } 扩展资料: C语言中使用对数函数的方法 log()函数:返回以e为底的对数值 头文件: 1#include log() 函数返回以 e 为底的对数值,其原型为: 1...

襄垣县19363485960: c 语言定义s 为double 类型 -
迟阳尤尼: double是C语言的一个关键字,代表双精度浮点型.2113 占8 个字节(64位)内5261存空间.其数值范围为1.7E-308~1.7E+308,双精度完全保证的有效数字是410215位,16位只是部分数值有保证.1653 可以用格回式化输入输出语句scanf和printf进行double类型的输入输出,格答式化字符为%lf.定义 double a; 可以用 scanf("%lf", &a); 进行输入.用 prinf("%lf",a); 进行输出.

襄垣县19363485960: c语言返回值为double为什么会出错? -
迟阳尤尼: 注意:如果用double类型变量,输入函数scanf中必须要用%lf(就是小写的LF)才行,否则输入的数值以及显示的数值都会因位数不够而出现错误.如下简单程序可以自己做个实验,去掉lf中的l看看:#include<stdio.h> double main () { double a,b,c; printf ("输入两个加数a,b\n"); scanf ("%lf,%lf",&a,&b); //doulbe时候输入必须用%LF,否则空间不够会出现错误数 printf("a=%f,b=%f\n",a,b); c=a+b; printf("%f,%f,%f\n",a,b,c); return c; }

襄垣县19363485960: c语言声明为double类型输出1.QUAN -
迟阳尤尼: 你好 前面你定义a为double类型,那你后面的格式就应该用%lg,(l代表位数更长,除非显示转换否则要对应的类型格式输入输出)如果你定义a为float型,那你后面就可以用%g,当然int型对应%d.

襄垣县19363485960: 在c语言中如何自定义一个函数,将字符串转化为double型,并作为函数的返回值.
迟阳尤尼: 字符串char和整形int的区别就是字符(char)'5'-'0'=整形数字(int)5,然后再强制转换一下将(int)转换成(double)就可以了.算了,我写出来吧.double chartodob(cahr * a) { double i=a-'0'; return i; }

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网