2017-09-16 12 views
0

私のプログラムが正しく動作していない理由を理解できません。それが欲しい。それをした後、私のプログラムは私が望むように繰り返す。貧弱な説明には申し訳なく思っていますが、「自分のプログラム」の下にある画像が、何が起こっているのかを説明できるよりも優れていると思います。私のCプログラムが正しく実行された後、私に望ましくない結果が出る理由を理解できない

Execution image

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

int main() 
{ 
float fahrenheit,celsius; 
char selection[30]; 
char *idontknow; 
long trueselection; 

do{ 
printf("1: Fahrenheit to Celsius."); 
printf("\n2: Celsius to Fahrenheit."); 
printf("\n3: Quit program.\n"); 
fgets(selection,10,stdin); //This line and the line below are in the program 
//so that if the user inputs a character instead of an integer it does not infinite loop. 
trueselection = strtol(selection, &idontknow, 10); 

if(trueselection==1){ 
    printf("Enter temperature in Fahrenheit: "); 
    scanf("%f",&fahrenheit); 
    celsius= (fahrenheit - 32)/1.8; 
    printf("Temperature in Celsius: %.2f\n\n\n",celsius); 
} 
else if(trueselection==2){ 
    printf("Enter temperature in Celsius: "); 
    scanf("%f",&celsius); 
    fahrenheit= (celsius*1.8)+32; 
    printf("Temperature in Fahrenheit: %.2f\n\n\n",fahrenheit); 
} 
else if(trueselection==3){ //This "else if" statement is so the program does not say invalid selection before exiting if 3 is entered. 
return 0; 
} 
else{ 
    printf("Invalid selection !!!\n\n\n"); 
} 
} 
while(trueselection!=3); //This line tells the program to repeat back to    line 3 if any selection but 3 is selected. 
} 
+0

私はまだ苦労の理解を少し持っていて申し訳ありません。 fgets()はif文から\ nを読み込んでいますか? – RyanK

+0

Nvm、ありがとうBLUEPIXYこれは私がコンピュータ言語を初めてプログラミングして以来初めての3週目ですが、このサイトの用語集を理解するのは苦労しますが、何度か繰り返したリンクを再読したところ、私はscanf()とfgets()を混在させることができませんでした。 – RyanK

答えて

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

int main() 
{ 
    float fahrenheit,celsius; 
    int selection; 
    char *idontknow; 
    long trueselection; 

    do{ 
     printf("1: Fahrenheit to Celsius."); 
     printf("\n2: Celsius to Fahrenheit."); 
     printf("\n3: Quit program.\n"); 
     scanf("%d",&selection); 

     if(trueselection==1){ 
      printf("Enter temperature in Fahrenheit: "); 
      scanf("%f",&fahrenheit); 
      celsius= (fahrenheit - 32)/1.8; 
      printf("Temperature in Celsius: %.2f\n\n\n",celsius); 
     } 
     else if(trueselection==2){ 
      printf("Enter temperature in Celsius: "); 
      scanf("%f",&celsius); 
      fahrenheit= (celsius*1.8)+32; 
      printf("Temperature in Fahrenheit: %.2f\n\n\n",fahrenheit); 
     } 
     else if(trueselection==3){ //This "else if" statement is so the program does not say invalid selection before exiting if 3 is entered. 
      break; 
     } 
     else{ 
      printf("Invalid selection !!!\n\n\n"); 
     } 
    } 
    while(trueselection != 3); //This line tells the program to repeat back to line 3 if any selection but 3 is selected. 
} 
+0

Geek博士に申し訳ありませんが、それでも問題は解決しません。 – RyanK

関連する問題