2 sinat 34553237 sinat_34553237 于 2016.04.05 23:50 提问

C语言小白问,求各位大神点拨

#include
#include
int main(){
float f,c;
printf("请输入华氏温度f=");

scanf("%f",&f);
c=5/9*(f-32);
printf ("相应的摄氏温度c=%f度\n",c);

getch();

}
为什么算不出来呢。。。

6个回答

ReturnForever
ReturnForever   2016.04.05 23:53
已采纳

c=5/9*(f-32);有问题
5/9结果为0
改为 :
c = 5.0/9 *(f-32);

caozhy
caozhy   Ds   Rxr 2016.04.05 23:56
 c=5/(double)9*(f-32);
u011225629
u011225629   2016.04.06 08:44

5/9
都是int类型相除还是int

f为float类型

int与float类型在一起怎么运算呢?

nw852884172
nw852884172   2016.04.06 09:22

问题在与赋值这一行。
c=5/9*(f-32);
表达式计算,你可以搜一下C语言的表达式计算。 你这行表达式计算包含乘除法,计算顺序从左往右。 括号内单独算。 (f-32) , C语言包含隐式转换
(f-32)被隐式转换成float类型。 但是5/9 默认两个int类型值进行计算,结果还是整形。该地方不够除,所以就是0,0*任意float值,还是0.
你只需要像楼上回答那样就好了,不过还是要尽量避免隐式转换类型。 容易造成内存泄漏,数据遗失等问题。 你可以看下C++中的类型强制转换,比如reinterpret_cast,const_cast,static_cast等。

beifengche
beifengche   2016.04.06 22:06

旒氓兎0o 和ReturnForever 说的就是问题所在

sinat_34553237
sinat_34553237   2016.04.06 23:03

谢谢各位大神!!!。。。额。。。那我就采纳最先回答的了。。。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
c语言初步经典题8--求一个数的各位值
题目:写一个程序,输入x(三位数),输出其个、十、百位,用空格隔开 样例输入:768 样例输出:8 6 7#include <stdio.h> #include <stdlib.h>int main() { unsigned short num; unsigned char temp;//保存每一位的数 int i; printf("请输入要分离位数的整数:")
C语言之基本算法30—数组的灵活应用(一个正整数的各位数字平方和)
//数组的灵活应用! /* ===================================================== 题目:求任意输入一个正整数各位数字的平方和,显示如下: 如输入1234,则显示 1*1+2*2+3*3+4*4=30 ===================================================== */
三位数的各位数字之和
#include int main() {    int x,a,b,c,sum=0; printf("请输入一个三位正整数:");    scanf("%d",&x);    a=x/100;    b=(x%100)/10;    c=x%10;    sum=a+b+c;    printf("这个三位数的各位数字之和为:%d\n",sum);
输出整数的位数、顺序输出整数各位数字、逆序输出整数各位数字
一、输出整数的位数  运用“去尾法”获取整数n的位数。“去尾法”是将整数n/10后重新赋值给n,可将整数n的最后一位数去掉。每次去掉一位,计数器+1,直到整数n被赋值为0时,计数器停止计数,此时计数器的数字为整数n的位数。考虑当整数n取0时,运用do-while循环语句可以进入循环。源代码:int GetFigures(int n) { int count=0; //计数器 do ...
求正整数各位数字之和
求正整数各位数字之和 时间复杂度
C语言:输出整数各位数字。
#include &amp;lt;stdio.h&amp;gt;/*本题要求编写程序,对输入的一个整数,从高位开始逐位分割并输出它的各位数字。*/ int main(int argc, char *argv[]) { long x,x1; int i=1,m; scanf(&quot;%ld&quot;,&amp;amp;x); x1=x;  if(x&amp;lt;10){  printf(&quot;%ld&quot;,x); } else{  while(x&amp;g...
实验9 问题 E: 编写函数:各位数字之和 (Append Code)
题目描述 给定一个正整数,求它的各位数字之和,直到这个和只有一位数为止。 例如,给出整数1236,那么计算 1+2+3+6=12 因为12是一个两位数,所以继续求和 1+2=3 得到结果为:3。 ----------------------------------------------------------------------------- 编写一个函数digit_su
C语言解决读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
/* 读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。 输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10100。 输出格式:在一行内输出n的各位数字之和的每一位,拼音数字间有1 空格,但一行中最后一个拼音数字后没有空格。 输入样例: 1234567890987654321123456789 输出样例: yi s
C语言之_数组字符串和指针
如有疑问,请评论告知,谢谢
C语言中关于取三位数的各各位数的单个数字问题
在BCB下 1=9 了|||367除以100 =3367除以10取10余=6367取10余=7 3 1=8 2 1)就是6 a[j]); }}|||位置是固定的 只需要判断/0的位置就可以|||#include main(){ int a[3]; int i =0; int j; int num