用for循环多次遍历输入的(0.5,0.5)类型数据,但最终只能输出第一遍的值?
输入:
(0.1,0.15)
(0.15,-0.5)
(0.5,-0.1)
#include <stdio.h>
#define R 3.24
#define d0 1
int main()
{
float x1,y1,x2,y2;
int i,j,k,l;
int m=0,n=0;
int r=0,y=0;
int d1,d2;
float red[9],yellow[9];
float r1,r2;
float min1,min2;
for(i=0;i<=2;i++)
{
scanf("(%f,%f)", &x1, &y1);
r1=x1*x1+y1*y1;
if(r1<R)
{
red[i]=r1;
m++;
}
fflush(stdin);
printf("%d %f",m,red[i]);
return 0;
}
}
应该是对scanf输入的形式理解不对,scanf每次输入一行,默认后面有个/n,x1,y1每次都是存放在缓冲区内,一次循环结束后开始下一次循环缓冲区会释放内存,最终只有m和red[i]的值会发生变化。尝试在(%f,%f)后面和前面加上\n,但是依旧只能打印出第一回的值。
三次遍历后通过判断计算m最终的值,以及返回存储了red[i]的数组。
你的return 0;在for循环里面啊。所以一次循环就直接结束程序了
输入数值间没有逗号
另外既然要:三次遍历后通过判断计算m最终的值,以及返回存储了red[i]的数组。
那你的printf语句应该在for循环后面,不能在for循环里面啊,而且你还把return 0写在for循环里,这for循环不可能循环三次的啊,一次就被你结束掉了
#include <stdio.h>
#define R 3.24
#define d0 1
int main()
{
float x1,y1,x2,y2;
int i,j,k,l;
int m=0,n=0;
int r=0,y=0;
int d1,d2;
float red[9],yellow[9];
float r1,r2;
float min1,min2;
for(i=0;i<=2;i++)
{
scanf("(%f,%f)", &x1, &y1);
r1=x1*x1+y1*y1;
if(r1<R)
{
red[i]=r1;
m++;
}
}
printf("%d\n",m);
for(i=0;i<=2;i++)
printf("%f ",red[i]);
return 0;
}
你的输入要和你写的格式匹配
你现在读入的"(%f,%f)"
的形式,那么输入的时候也要对应的按照(0.5,1.5)
这种形式读入
如果不希望有格式限制,直接用scanf("%f%f");
即可有帮助望采纳~