c语言,这里怎样反复计算,并输入q退出程序

//解一元二次方程
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main()
{
float a, b, c, d, t1, t2, x1, x2;
printf("Input a,b,c\n");
scanf("%f,%f,%f", &a, &b, &c);
if (a == 0.0)
if (b == 0.0)
printf("No Solution\n");
else
{
x1 = -c / b;
printf("x = %f\n", x1);
}
else
{
d = b*b - 4 * a*c;
t1 = -b / (2 * a);
t2 = sqrt(fabs(d)) / (a * 2);
if (d == 0.0)
{
x1 = t1;
printf("x = %f\n", x1);
}
else if (d > 0.0)
{
x1 = t1 + t2;
x2 = t1 - t2;
printf("x1 = %f , x2 = %f\n", x1, x2);
}
else
{
printf("x1 = %f+%fi , x2 = %f-%fi\n", t1, t2, t1, t2);
}
}
system("pause");
}

给你写个模板:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main() {
// 接收输入的三个字符串, 100 表示每个字符串最大允许长度
char input[3][100];
float a, b, c;

while(1) {

// 获取三个字符串的输入(三个字符串分开获取)
// 字符串之间用空格隔开
scanf("%s", input[0]);

// 读取完第一个字符串后,判断第一个字符串是不是长度为1,
// 并且只有一个字符 q,如果是则退出
if ((strlen(input[0]) == 1) && (input[0][0] == 'q')) {
// 跳出循环
break;
}

scanf("%s", input[1]);
scanf("%s", input[2]);



// 把字符串转变为float值
a = atof(input[0]);
b = atof(input[1]);
c = atof(input[2]);

/*
 * TODO: 在这里根据自己的需要处理 a, b, c 三个参数
 */
printf("输入的三个参数值: %.2f, %.2f, %.2f\n", a, b, c);
}

printf("程序已退出\n");

return 0;
}

追问

能不能让变量以逗号的方式输入

追答

一个 scanf 函数的格式化输入,遇到空格或回车,并且已读取完毕时才会结束,如果同一行输入3个数用逗号隔开,然后按回车,由于没有空格隔开 scanf 认为只输入了一次,第一个 scanf 读取到了数据,然后会卡在第二个 scanf ,等待你的输入。
如果硬要实现用逗号分隔,可以把一行输入保存为一个字符串,例如:
输入:23.45,34.67,87.09
scanf("%s", str); // 则这里的 str = "23.45,34.67,87.09"
然后自己用逗号分隔为三个字符串,再做处理。

温馨提示:答案为网友推荐,仅供参考
相似回答