两个scanf语句连用时会出现的问题解决

PS:新手上路,第一次接触C语言遇到的问题,请多指教

这个问题呢,是寂寞在敲自己的第几个程序时遇到的呢,问题是在一个程序中同时使用两个scanf语句时,遇到只能输入第一个scanf语句所能够读取到的值,而第二个scanf语句则是被直接忽略了,进而出现执行结果的问题。

#include<stdio.h>
int main()
{
	char tempType;
	float temp,fahren,celsius;
	printf("请输入一个温度:\n");
	scanf("%f\n",&temp);
	printf("请说出你输入的温度属于下列哪一种类型:\n");
	printf("华氏温度:f 摄氏温度:c \n");
	scanf("%c",&tempType);
	if(tempType=='f')
	{
		celsius=(temp-32.0)*5.0/9.0;
		printf("此华氏温度的摄氏温度为%6.2f\n",celsius); 
	 } 
	 else
	 {
	 	fahren=temp*9.0/5.0+32.0;
	 	printf("此摄氏温度的华氏温度为%6.2f\n",fahren);
	 }
	 return 0;
 } 

原始的代码编写出来后,会因为上一个scanf语句的输入的回车键而导致在进行下一个scanf语句读取的时候,直接读取上一个scanf的回车,从而不执行第二条scanf语句。

修正的方法为:

1.把第一个scanf 改成

scanf ("%f\n", &c1);


2.在第一个scanf 后添加下面的语句

fflush (stdin);


3.   在printf("华氏温度:f 摄氏温度:c \n");语句下面添加下面的语句

while (getchar () != '\n');

4.这样也可以不过不知道原因,在%c前方加\n

scanf("/n%c",&tempType);

 


版权声明:本文为maoqiling原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。