si suppone che questo programma per convertire i gradi Fahrenheit in gradi Celsius:"while?()" Funzione?
#include <stdio.h>
int main() {
float fahrenheit, celsius;
int max, min, step;
max = 100;
min = 0;
step = 5;
fahrenheit = 0.0;
//celsius = (fahrenheit - 32.0) * 5.0/9.0; DOESN'T WORK HERE
printf("\n");
printf("This program converts fahrenheit into celsius \n");
while(fahrenheit <= max) {
celsius = (fahrenheit - 32.0) * 5.0/9.0; /* Works here */
printf("%3.0f %6.2f\n", fahrenheit, celsius);
fahrenheit = fahrenheit + step;
}
}
Come ho notato nei miei commenti di origine, quando provo messo la formula per celsius nel corpo della funzione main()
, ottengo -17.8
per ogni valore singolo fahrenheit. L'output è simile a questo:
0 -17.78
5 -17.78
10 -17.78
15 -17.78
20 -17.78
25 -17.78
e così via e così via. Tuttavia, quando inserisco la formula celsius nella funzione while()
, ottengo i valori Celsius corretti per ogni valore Fahrenheit. È così:
0 -17.78
5 -15.00
10 -12.22
15 -9.44
20 -6.67
Perché succede?
Ecco il codice che non funziona. È identico al codice sopra, tranne per la posizione della formula celsius. (Almeno, penso che sia.)
#include <stdio.h>
//this program is supposed to convert fahrenheit into celsius
int main() {
float fahrenheit, celsius;
int max, min, step;
max = 100;
min = 0;
step = 5;
fahrenheit = 0.0;
celsius = (fahrenheit - 32.0) * 5.0/9.0;
printf("\n");
printf("This program converts fahrenheit into celsius \n");
while(fahrenheit <= max) {
printf("%3.0f %6.2f\n", fahrenheit, celsius);
fahrenheit = fahrenheit + step;
}
}
'while' non è una funzione; è una parola chiave che specifica un particolare tipo di affermazione. Il codice nella tua domanda funziona correttamente. Dobbiamo vedere il codice che * non * funziona. –
@KeithThompson Ha fornito il codice che non funziona: lo stesso codice, ma il codice di conversione viene spostato fuori dal ciclo. – fuz
@FUZxxl: Sì, ha modificato la domanda dopo il mio commento. –