c语言,简单的double和int的问题,求救啊!!

#include<stdio.h>
int main()
{
double x,y;
scanf("%lf",&x);
if(x<20);
{
y=x+100;
printf("x=%lf,y=%lf\n",x,y);
}
if((x>=20)&&(x<=100));
{
y=x;
printf("x=%lf,y=%lf\n",x,y);
}
if(x>100);
{
y=x-100;
printf("x=%lf,y=%lf\n",x,y);
}
return 0;
}

为什么if语句判断失效了?比如输入 30,三条if都会执行???

第1个回答  2011-10-27
if语句后不能加分号 ,如果加分号会认为if语句执行完毕,程序会直接执行大括号内的语句,起不到判定作用
程序修改为下面的会更清楚
#include"stdio.h"
void main()
{
float x,y;
scanf("%lf",&x);
if(x<20)
{
y=x+100;
printf("x=%lf,y=%lf\n",x,y);
}
else
if(x<=100)
{
y=x;
printf("x=%lf,y=%lf\n",x,y);
}
else
{
y=x-100;
printf("x=%lf,y=%lf\n",x,y);
}
return 0;
}
if else语句能使该程序简洁。
第2个回答  2011-10-27
把if后面的 ;去掉

看好 你三个if判断后面都有

否则就与后面的;构成了一个空的

if(x<20);
等价于
i if(x<20)
{

}

有问题请追问 满意记得采纳本回答被提问者采纳
第3个回答  2011-10-27
你的if语句后面根本就什么也没做,因为';'使得if语句提前结束了,改为这样就对了

#include<stdio.h>
int main()
{
double x,y;
scanf("%lf",&x);
if(x<20)
{
y=x+100;
printf("x=%lf,y=%lf\n",x,y);
}
if((x>=20)&&(x<=100))
{
y=x;
printf("x=%lf,y=%lf\n",x,y);
}
if(x>100)
{
y=x-100;
printf("x=%lf,y=%lf\n",x,y);
}
return 0;
}
第4个回答  2011-10-27
if语句的括号后没有分号的。改成下面的试试
#include<stdio.h>
int main()
{ double x,y;
scanf("%lf",&x);
if(x<20)
{ y=x+100;
printf("x=%lf,y=%lf\n",x,y); }
if((x>=20)&&(x<=100)) { y=x; printf("x=%lf,y=%lf\n",x,y); }
if(x>100)
{ y=x-100; printf("x=%lf,y=%lf\n",x,y); }
return 0; }
第5个回答  2011-10-27
if(x>100); //这里多了一个分号。把这个分号去掉.就可以了
{
y=x-100;
printf("x=%lf,y=%lf\n",x,y);
}

c语言,简单的double和int的问题,求救啊!!
if语句后不能加分号 ,如果加分号会认为if语句执行完毕,程序会直接执行大括号内的语句,起不到判定作用 程序修改为下面的会更清楚 include"stdio.h"void main(){ float x,y;scanf("%lf",&x);if(x<20){ y=x+100;printf("x=%lf,y=%lf\\n",x,y);} else if(x<=100){ y=x;printf(...

C语言,int与double的问题,求助!!!11
然而计算机保存double型数据使用的8byte,也就是64bit, 而且这64bit没有完全使用上,还有符号位等,也就是说,计算机并没有完全的把0.54这个数字完整的用2进制数字表示出来。基本上可以确定是<0.54的,也就是0.539...所以,当x100,时变成了53.9...而用int时,取整,截断了小数点后面的数据,...

c语言关于int和double的问题
int main (void){ double a,s;scanf("%lf",&a); \/\/这里错了 格式符应该是%lf s=a*950\/3.0e-23;printf("\\n%e",s);}

关于C语言中的int与double区别的问题
因为int 对应的输入输出是%d,double对应的则是%lf,float对应的则是%f,所以输入输出要根据你定义的类型去!

C语言的double和int
int main(void){ double d;printf("Enter a single digit: ");scanf("%lf", &d);printf("The digit entered is %i\\n", (signed int)d);return 0;} 如果在输出的时候加上强制转换的话,输出的就是正确结果,可能是由于原数据类型是双精度浮点,但是却以%i(有符号整数)格式化,转换的时候...

C语言里int与double是怎么回事? 刚学
int 是整型变量,double是双精度浮点型;你这个计算,最好定义r,s,l用float或者double;否则,计算表达式3.14*r*r相当于3*(int)r*(int)*r,变量会被舍弃小数取整再计算(不是四舍五入)include<stdio.h> include<stdlib.h> int main(){ double r,s,l;printf("input r:\\n");scanf("%f"...

在C语言中Int和double怎么转换?
1、打开vc软件,新建一个空白的vc项目文件:2、编写转换程序,首先添加头文件,在main主函数中定义int类型变量sum,count,再定义double类型变量todouble,并进行强制类型转换,强制转换的格式就是括号加要转换的类型,最后使用printf打印结果:3、编译运行程序,查看转换的结果。以上就是C语言中Int和double...

C语言中double 和int型的数据之间可相互赋值?
int a=1;double b;b=a; b=1.00000 (1)double(双精度浮点型)是计算机使用的一种资料型别。比起单精度浮点数(float),double(双精度浮点数)使用 64 位(8字节) 来储存一个浮点数。(2)Int是将一个数值向下取整为最接近的整数的函数。INT是数据库中常用函数中的取整函数,常用来判别一个数...

关于C语言double型的问题。
1、3\/2,因为都是整数形式,系统默认是int型,因此结果也是int型,所以这个中间值是1,而不是1.5。2、x,y都是double型,y=x+1,编译系统在运行时会先将1转化成double类型,1.000000,实际的运算是y=1.000000+1.000000=2.000000。示例程序如下:include <stdio.h>int main(){double x=1,y...

C语言int float long double的问题
int -- TC 编译器处理为 short int, 16位2进制整数.其它编译器处理为 long int, 32位2进制整数.float -- 32位2进制浮点数,有效数字共 7 位.double -- 64位2进制浮点数,有效数字共 14-15 位.long -- long int, 32位2进制整数.double a; scanf("%lf",&a); printf("%lf",a);lo...

相似回答
大家正在搜