所以,在终端中,我在C中的整个程序输出应该是这样的(**之间的文本是用户输入)
**Ax Ay alpha**
**Bx By beta**
d Cx Cy
我当前的代码只接受第一行,第二行以某种方式不被扫描,而是尝试给我输出。这是输入的代码行,我认为问题只在于那部分。
scanf("%2f %2f %2f", &Ax, &Ay, &alpha );
scanf("%2f %2f %2f", &Bx, &By, &beta );
整个代码
#include <stdio.h>
#include <math.h>
#define PI 3.14159265
int main(){
float alpha, beta, Ax, Ay, Bx, By;
float d, Cx, Cy;
scanf("%2f %2f %2f", &Ax, &Ay, &alpha );
scanf("%2f %2f %2f", &Bx, &By, &beta );
/* calculaions are here, whole lot of mess */
printf("%.2f %.2f %.2f \n", d, Cx, Cy );
}
问题如下:我输入前三个变量 - Ax,Ay和alpha。然后,当我按下回车时,我想要它做的是让我输入Bx,By和beta。相反,它已经向我展示了结果并结束了该计划。
答案 0 :(得分:2)
我怀疑它是一个区域设置问题,请尝试检查scanf()
返回值以查看输入是否与格式字符串匹配
#include <stdio.h>
int main()
{
float Ax, Ay, Bx, By, alpha, beta;
if (scanf("%f%f%f", &Ax, &Ay, &alpha) != 3)
{
fprintf(stderr, "Invalid input.\n");
return -1;
}
if (scanf("%f%f%f", &Bx, &By, &beta) != 3)
{
fprintf(stderr, "Invalid input.\n");
return -1;
}
return 0;
}
这是您滥用函数时出现的问题类型的示例,scanf()
因某种原因而返回值。
使用整数测试代码,如果有效,请将小数点分隔符从'.'
切换为','
或反之。
此外,可能是您将输入限制为2个字符,这对于几乎任何浮点数都是一个问题,因为1.2
有3个字符,删除它。
答案 1 :(得分:0)
您希望%2f
取得什么成果?这将扫描限制为2位数。我想你只想在零后打印两位小数:
将"%2f"
替换为"%0.2f"
,换句话说,请执行以下操作:
float a, b, c, d, e, f;
scanf("%f %f %f", &a, &b, &c);
scanf("%f %f %f", &d, &e, &f);
printf("%0.2f %0.2f %0.2f\n", a+b, d+e, f+c);
,您的程序将正常运行。 %2f
导致您描述的行为。