0

我有一个任务要求我做一个数学模型,这是我主要功能的一部分,但是,当我运行它时,我总是无法扫描数字,我只需要有人帮我检查一下。谢谢你

PS如果有人输入3退出这个菜单,我该怎么做?我认为是使用exit(),但仍然不起作用。

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

int main(void)

{

    int option =0;

    double *x1, *x2,*y1, *y2, *x,*y;

    double *slope;

display_menu();

scanf(" %d", &option);

    if(option ==1)

{

printf("You choose to do the Two-point form. \n");

printf("Enter the x-y coordinates of the first point separate by a space=> ");

scanf("%lf","%lf", &x1,&y1);

printf("Enter the x-y coordinates of the second point separate by a space=> ");

scanf("%lf","%lf", &x2,&y2);

two_point_form(*x1,*y1,*x2,*y2); /* <<<--------this one is always wrong.  T.T */

 

}
}


int two_point_form(double *x1, double *y1, double *x2, double *y2)

{

    double slope, intecept;

printf("Two-point form: ");

printf(" (%lf-%lf)", *y2,*y1);

printf(" m = --------");

printf(" (%lf-%lf)", *x2-*x1);

slope = (*y2-*y1)/(*x2-*x1);

intecept = *y1-slope**x1;

printf("Slope-intecept form: y= %lfx+%lf", slope, intecept);

}
4

3 回答 3

1

您将指针对指针的双精度传递给scanf. 以及取消引用x1,等等,这会给出y1未定义的行为,因为它们从未被分配过。two_point_form

正如你所做的那样,option将你的双打声明为“正常”双打,而不是指针:

double x1, y1, x2, y2, x, y;

然后将它们的地址传递给scanf并将它们的值传递给two_point_form

two_point_form(x1, y1, x2, y2);
于 2013-10-17T00:31:35.053 回答
0

这里:

double *x1, *x2,*y1, *y2, *x,*y;

...

scanf("%lf","%lf", &x1,&y1);

您正在设置指针,将指针的地址传递给scanf(),但试图将doubles 读入其中。第一行应该是:

double x1, x2, y1, y2, x, y;
于 2013-10-17T00:31:28.727 回答
0

您创建double * x1(指向双精度的指针)很好,除非您不初始化它。我还假设您想要double x1,因为这就是创建变量的原因,第一个创建的只是指向某种类型的变量的指针。
然后你调用scanf()那个期望指向变量的指针,但不是给它一个指针,而是给它一个指向&x1双精度指针的指针。下一个碰撞。
最后一个是*x1取消引用未初始化的双精度指针的部分。

这是一个三重混乱,你应该(可能)做的是

double x1,x2...;

scanf("%lf...", &x1...);

two_point_form(&x1,...);

你应该(绝对)做的是拿一些C书和阅读指针章节。

于 2013-10-17T00:35:51.630 回答