-1

有人可以帮我运行这个程序吗?我试过这个:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(void) {
    double Cateto1;
    double Cateto2;
    double hipotenusa;

    printf("dame el primer cateto: ");
    scanf("%1f", Cateto1);
    fflush(stdout);

    printf("dame el segundo cateto: ");
    scanf("%1f", &Cateto2);
    fflush(stdout);

    hipotenusa = sqrt ((Cateto1*Cateto1)+(Cateto2*Cateto2));

    printf("hipotenusa= %2f",hipotenusa);
    system("pause");
}

我可以构建它,但我无法运行它......它给了我:

RUN FAILED(退出值-1.073.741.790,总时间:17s)

4

6 回答 6

11
scanf("%lf", Cateto1);
        ↑    ↑
        |    You are missing a '&' character here
        The width specifier for doubles is l, not 1

scanf 的第一个参数必须是"%lf"(作为字母 L)以指定相应的输出变量是指向双精度而不是浮点数的指针。'1'(一)对scanf没有意义。

这里 scanf 的第二个参数应该是一个指向 double 的指针,而你给它的是一个 double 。
我想这是一个简单的错字,因为您第二次就正确了。

于 2013-10-10T13:47:32.087 回答
2

这是错误:

scanf("%1f", Cateto1);

将其更改为:

scanf("%1f", &Cateto1);
于 2013-10-10T13:49:53.877 回答
0

There are a couple of errors:

  • The syntax of the scanf expression was wrong: "%1f" should be "%lf"
  • You need to pass the address of Cateto1 (&Cateto1) to scanf
  • You don't need the fflush
  • You don't need the system call

Here's the updated code:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(void) {
    double Cateto1;
    double Cateto2;
    double hipotenusa;

    printf("dame el primer cateto: ");
    scanf("%lf", &Cateto1);

    printf("dame el segundo cateto: ");
    scanf("%lf", &Cateto2);

    hipotenusa = sqrt ((Cateto1*Cateto1)+(Cateto2*Cateto2));

    printf("hipotenusa= %2f\n",hipotenusa);
}
于 2013-10-10T13:50:18.623 回答
0
             #include <stdio.h>

             #include <math.h>

            int main(void) 
            {

               double Cateto1;

               double Cateto2;

               double hipotenusa;

               printf("dame el primer cateto: ");

               scanf("%lf", &Cateto1);

               //fflush(stdout);

               printf("dame el segundo cateto: ");

               scanf("%lf", &Cateto2);

               //fflush(stdout);

               hipotenusa = sqrt ((Cateto1*Cateto1)+(Cateto2*Cateto2));

               printf("hipotenusa= %2f\n",hipotenusa);

               //system("pause");

               return 0;

         }
于 2013-10-10T16:35:06.777 回答
0

您的代码中有错误。代替

scanf("%1f", Cateto1);

你应该写:

scanf("%1f", &Cateto1);
于 2013-10-10T13:51:26.270 回答
0

简单的错误

scanf("%1f", &Cateto1); // '&' was missing in all scanf statements
于 2013-10-10T13:51:26.370 回答