C++的一段代码,求大神看看为什么不管输入什么结果都一样?

#include <stdio.h>
#include "zylib.h"
int main()
{
double a,c,d,e,f,g;
printf("输入高度(km),范围0-32:");
scanf("%f",&a);
if(a<0&&a>32) printf("你输入的高度超出范围。\n") ;
else c=227.65-(227.65-228.65)*(a-31),d=0.10200-(0.10200-0.08680)*(a-31),e=0.01562-(0.01562-0.01323)*(a-31),f=302.47-(302.47-303.13)*(a-31),g=1.4814-(1.4814-1.4868)*(a-31);
printf("T=%f K\n",c);
printf("p=%f *10^-4Pa\n",d);
printf("ρ=%f kg*m^-3\n",e);
printf("c=%f m*s^-1\n",f);
printf("μ=%f *10^5Pa*s\n",g);
return 0;
}

double的输入输出用%lf,之前我说错了,下面个数据是没初始化的结果

你的程序c,d,e,f,g的计算都用了上面这个a的值

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-10-10
帮你改了一下你自己看一下吧:
#include <stdio.h>

int main()

{

double a,c,d,e,f,g;

printf("输入高度(km),范围0-32:");

scanf("%lf",&a);

if(a<0||a>32) printf("你输入的高度超出范围。\n") ;

else {
c=227.65-(227.65-228.65)*(a-31);
d=0.10200-(0.10200-0.08680)*(a-31);
e=0.01562-(0.01562-0.01323)*(a-31);
f=302.47-(302.47-303.13)*(a-31);
g=1.4814-(1.4814-1.4868)*(a-31);
}
printf("T=%f K\n",c);

printf("p=%f *10^-4Pa\n",d);

printf("ρ=%f kg*m^-3\n",e);

printf("c=%f m*s^-1\n",f);

printf("μ=%f *10^5Pa*s\n",g);

return 0;

}本回答被提问者采纳
第2个回答  2013-10-10
a是double类型的,不能减去int的
第3个回答  2013-10-10
if(a<0&&a>32) printf("你输入的高度超出范围。\n") ;
这句,你觉得 if(a<0&&a>32)逻辑对吗?追问

if(a32)

c++,无论输入什么,结果都是1.求老师教教!
这么晚了还在码代码,孺子可教也!解释一下,你的这个问题是初学者经常会犯的一个问题,属于类型转换上出现的漏洞,h=pow(t,1\/3); \/*这一行程序中的"1\/3"由于除号两侧都是整型常量所以"1\/3"的结果也会输出为整形,即"(1\/3)取整"结果为0,pow(param,0)≡1……*\/ 剩下的步骤就交给...

为什么devc++编译后总是输出同样的结果???
同学你好,这是DEVC++系统的问题,当你修改非源文件内容(即非main函数所在文件)中的代码时,他不会自动进行重新编译,你可以尝试F12(全部重新编译)试一下【或者找到运行->全部重新编译】。

...c++无论代码怎么写确定是有输出但是结果什么都没有 也没有错误_百...
1。第一你得检查有没有错误(虽然你说没有但我还是得说)这包括有没有写输出的语句cout或者printf,第二就是你有没有#include<iostream> using namespace std;2.也许是输出了你没看见,就在return前加一句system("pause");

c++新手求助,为什么下面代码 无论输入什么输出的结果都是0.00 0.00
需要float型的数据,但是你从键盘输入的时候用的是%d,所以全读成了整数了。改成%f即可。for(i=0;i<5;i++){ scanf("%f",&score1[i]);\/\/改成%f } printf("please input 10 score:\\n");for(j=0;j<10;j++){ scanf("%f",&score2[j]); \/\/改成%f } 我调试过你的代码,修改之后...

C++,大佬们看下这里报错是为什么?可是这代码能AC啊?!
不过这种方法有一个小问题,并不是所有的环境都支持,尤其是在正式比赛的场合,所以一般情况下大家都是一些网络赛才会用它,我个人由于懒得区分环境,所以还是习惯自己一个一个 include。请点击输入图片描述 define部分 define 是 C++ 当中非常强大的功能,它可以定义规则对代码进行替换。熟练使用 define ...

c++基础 解释下这段代码每句什么意思和计算机选哪个做答案 为什么 非常...
n=b>a;是不是这个式子不成立,都会取值为0——不。b=1,而a=0,故b>a是成立的,所以b>a的逻辑结果是“真”,“真”用1表示,所以最后n=1。k=n&&(m=a); 等效于 k=(0&&0) (0&&0)=1;——又错了。n=1,m=a=0,所以k=1&&0=0,因此最后k=0。希望有所帮助。

C++编程问题:为什么以下代码运行后输入数字循环正常,但输入字母就会陷入...
一次输入过程是这样的,当一次键盘输入结束时会将输入的数据存入输入缓冲区,而cin函数直接从输入缓冲区中取数据。正因为cin函数是直接从缓冲区取数据的,所以有时候当缓冲区中有残留数据时,cin函数会直接取得这些残留数据而不会请求键盘输入.intenter=0;\/\/enter为整形数据在你输入字母按回车时时,cin会...

有关C++ cout 输出问题 为什么下面的代码会报错,如果用注释的写法就是...
刚用代码测了下,的确是需要加上const的才可以。不加const的话,不管加不加括号都会出错。看来的确是临时对象的关系,临时对象是实际是const的,所以找最匹配的<<运算时,friend ostream &operator<<(ostream &os,test &t); 不通过的。最后找到const unsigned char*了,但const test是转不成const ...

C++,为什么我写了几条代码,调试后 删除,写另外不同的代码,调试,结果还是...
vs如果此次编译不通过的话,他会提示你是否运行上一次正确的程序,如果你点“是”的话,运行的就是上一次的结果。。

c++中为什么代码没有报错,但是没有运行完全?
问题在你第三次输入的密码不匹配,你可以print看看test的值是多少,可能是声明问题,也可能是输入函数问题。

相似回答