今天在学习C语言循环时遇到的问题

今天在学习C语言的循环 做《C primer plus》第六章的课后习题的时候,课后习题有这样一道题:编写一个程序,要求输入两个浮点数,然后打印出用两者的差值除以二者的成绩所得的结果在用户键入非数字的输入之前程序循环处理每对输入值。

没有好好看书的我就大概的码了一段代码:

#include 
int main()
{
	float a,b;
	float sum;
	printf("请输入两个浮点数:\n");	
	scanf("%f%f",&a,&b);
	while(scanf("%f%f",&a,&b)==2)
	{	c=(a-b);
		d=(a*b);
		sum = c/d;
		printf("sum=%f\n",sum);
		printf("请继续输入,输入非数字退出:\n");
		scanf("%f%f",&a,&b);
	}
	return 0;}
运行后发现这段代码必须要输入四个浮点数后才能算出值,在经过网上的查询后我发现,这段代码等于是要求输入了两次a,b的值,其实只需要while循环里的scanf函数就可以了,于是我进行修改:

#include 
int main()
{
	float a,b;
	float c,d;
	float sum;
	printf("请输入两个浮点数:\n");
	while(scanf("%f%f",&a,&b)==2)
	{	c=(a-b);
		d=(a*b);
		sum = c/d;
		printf("sum=%f\n",sum);
		printf("请继续输入,输入非数字退出:\n");
	}
	return 0;

}
程序就正常的完成了题目的要求,我是这样理解的:while里的scanf函数既判断了是否输入了两个浮点数,又可以接收用户输入的两个浮点数。如果理解有误,有问题希望大家指正。

你可能感兴趣的:(今天在学习C语言循环时遇到的问题)