循环结构求三角形面积(sqrt)陷入无限循环

#include
#include
int main() {
int a,b,c;
float z,s;
char ch;
do {
printf("请输入三角形的三边长:\n");
scanf("%d,%d,%d",&a,&b,&c);
while(a+b<=c||a+c<=b||b+c<=a) {
printf("数据无效,请重新输入:\n");
scanf("%d,%d,%d",&a,&b,&c);
}
z=(a+b+c)/2.0;
s=sqrt(z*(z-a)*(z-b)*(z-c));
printf("此三角形的面积为:%.2f",s);
printf("是否重新输入数据?Y 或 N ?\n您的选择是:");
ch=getchar();
} while (ch=='y'||ch=='Y');
}

#include <stdio.h> 
#include <math.h>
int main() {
int a,b,c;
float z,s;
char ch;
do {
printf("请输入三角形的三边长:\n");
scanf("%d,%d,%d",&a,&b,&c);
while(a+b<=c||a+c<=b||b+c<=a) {
printf("数据无效,请重新输入:\n");
scanf("%d,%d,%d",&a,&b,&c);
}
z=(a+b+c)/2.0;
s=sqrt(z*(z-a)*(z-b)*(z-c));
printf("此三角形的面积为:%.2f\n",s);
ch=getchar();
printf("是否重新输入数据?Y 或 N ?\n您的选择是:");
ch=getchar();
} while (ch=='y'||ch=='Y');
}

图片说明

没有陷入死循环(可能是你没按格式输入(忘了逗号)),倒是一次就结束了。加个getchar接收\n