2013-10-10 4 views
-1

Может кто-нибудь помочь мне запустить эту программу? Я попытался это:Пытается запустить программу в C

#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)

+1

Почему ваш 'main' не возвращает вещь? – Maroun

+0

какая у вас платформа? как вы его запускаете? – sds

+1

Вы включили все предупреждения компилятора? Я получаю '10:26: warning: переменная 'Cateto1' не инициализируется при использовании здесь [-Униминистрационированный] scanf ("% 1f ", Cateto1);' – ldrumm

ответ

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

Первый аргумент зсапЕ должен быть "%lf" (как буква L), чтобы указать, что соответствующая выходная переменная является указателем, чтобы удвоить вместо поплавка. '1' (Один) не имеет значения для scanf.

Предполагается, что второй аргумент scanf должен быть указателем на double, и вместо этого вы дадите ему двойной.
Я полагаю, что это простая опечатка, так как вы поняли ее во второй раз.

+0

Эти upvotes вы получаете из-за ↑, что я там там ....... – Maroun

+0

@MarounMaroun довольно симпатичный ↑, спасибо, он сделал мой день ;-) – SirDarius

+0

Я просто шучу: D Приоритеты не имеют к этому никакого отношения :) И вас приветствует – Maroun

2

Вот ошибка:

scanf("%1f", Cateto1); 

Изменить это:

scanf("%1f", &Cateto1); 
+0

Не совсем ... «1» по-прежнему не так. –

-1

Есть несколько ошибок:

  • Синтаксис выражения scanf был неправ: " % 1f "должно быть"% lf "
  • Вам необходимо передать адрес из Cateto1 (&Cateto1) в scanf
  • Вам не нужен fflush
  • Вам не нужно system вызов

Вот обновленный код:

#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); 
} 
+0

-1 дайте человеку рыбу ... – ldrumm

+0

Было бы хорошо, если бы вы прямо сказали, что они, а не я, пытаюсь сделать разницу между умственными различиями, чтобы определить разницу. Вы говорите, что системная пауза вызвала ошибку? – doctorlove

+0

Сначала я поставил код, а затем добавил объяснение, чтобы избить пистолет ;-) –

0

Существует ошибка в вашем коде. Вместо

scanf("%1f", Cateto1); 

вы должны написать:

scanf("%1f", &Cateto1); 
0

Простая ошибка

scanf("%1f", &Cateto1); // '&' was missing in all scanf statements 
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; 

     } 
Смежные вопросы