c中scanf()一次性输入三行数据无法与循环次数匹配,仅仅第一遍循环能够输出。

问题遇到的现象和发生背景

用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;
    }
}
运行结果及报错内容

img

我的解答思路和尝试过的方法

应该是对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");即可
有帮助望采纳~

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632