c++ 代替scanf的方法

老师要求写一个两种单位间温度转换的小程序
我写了如下
#include<stdio.h>
void main()
{
double C,F;
C=5*(F-32)/9;
printf("请输入现在的华氏温度\n");
printf("华氏温度为:");
scanf("F=%f,%F");
printf("现在的摄氏温度为:C\n");
}
系统返回0 errors,1 warnings.
警告原因如下warning C4700: local variable 'F' used without having been initialized
这个警告是说F没有初始化吗?怎么解决.
还有就是我在倒数第二句用了一个scanf,然后回车,再用printf时,printf前面自动出现了四个空格,也就是比scanf 缩进了,这是为什么呢.是不是系统把printf判定为了scanf中的一部分,所以我想用一个其他的函数代替scanf

请解答的详细一点,再加50分
刚才我运行了它,不论输入的F的值是多少,返回的都是C,而不是按照我公式所给的计算出的数值

还有就是,怎么能让计算出的结果只保留两位的小数

c标准的程序:
#include<stdio.h>
void main()
{
double C,F;
printf("请输入现在的华氏温度\n");
scanf("%f",&F);
printf("华氏温度为:%f\n",F);
C=5*(F-32)/9;
printf("现在的摄氏温度为:%f\n",C);
}

c++标准的程序:
#include <iostream>
using namespace std;
void main()
{
double C,F;
cout<<"请输入现在的华氏温度"<<endl;
cin>>F;
cout<<"华氏温度为:<<F<<endl;
C=5*(F-32)/9;
cout<<"现在的摄氏温度为:"<<C<<endl;
}

你问题的解释:

警告原因如下warning C4700: local variable 'F' used without having been initialized
这个警告是说F没有初始化吗?怎么解决.

——————————————是的。解决办法放在scanf F语句(或cin>>)之后,让F被赋值后再用

还有就是我在倒数第二句用了一个scanf,然后回车,再用printf时,printf前面自动出现了四个空格,也就是比scanf 缩进了,这是为什么呢.是不是系统把printf判定为了scanf中的一部分,所以我想用一个其他的函数代替scanf

--------------------是因为你在scanf语句中用了格式控制字符%f,而你又没有实际的输入,那个位置是留给输入的。

你补充问题的回答:
把c标准的程序的输出语句%f改为%.2f。

printf("华氏温度为:%.2f\n",F);
C=5*(F-32)/9;
printf("现在的摄氏温度为:%.2f\n",C);
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-03-24
scanf("F=%f,%F"); sacnf输入是取输入值的地址!!所以scanf("F=%f,&F");
保留两位小数,只要设置输出的长度setw(4)输出内容
第2个回答  2009-03-24
#include<stdio.h>

void main()
{
double C,F=0;
printf("请输入现在的华氏温度\n");
printf("华氏温度为:");
scanf("F=%f,%F");
C=5*(F-32)/9;
printf("现在的摄氏温度为:C\n");
printf("%d",C);
}
你都还没给F赋初值就计算C 当然警告你没有初始化啦
呵呵 把C=5*(F-32)/9; 放到后面就好了
还有 你都没有输出C的语句当然看不到C的值
第3个回答  2009-03-24
那个输入写的是啥...
应该是先得到值,再计算公式,输出也有问题

#include<stdio.h>
void main()
{
float C,F;
printf("请输入现在的华氏温度\n");
printf("华氏温度为:\nF=");
scanf("%f",&F);
C=5*(F-32)/9;
printf("现在的摄氏温度为:%.2fC\n", C); //得到保留2位小数
}本回答被提问者采纳
第4个回答  2009-03-24
//欢迎在线讨论
#include<stdio.h>
void main()
{
double C,F=0.0;
C=5*(F-32)/9;
printf("请输入现在的华氏温度\n");
printf("华氏温度为:");
scanf("F=%f,%F");
printf("现在的摄氏温度为:%dC\n",(int)C);
}
相似回答