更新: 最後のif文if(lettergrade <= 'A' && lettergrade >= 'F')
は、F(70)のASCII値がA(65)より大きいため正しくありません。 C - 関数から返されたcharを出力します。
にMy機能、assignletterを関数によって返された文字を印刷しようとしている、フロートを与えられ、そして文字を返しています。
であるように私はプログラムを実行すると:
skirchbaum:~/workspace/HMWK/HMWK4 $ ./assignletter
Enter pointsgrade
100
Pointsgrade: 100.00 Lettergrade:
何もlettergradeのために印刷されません取得します(私が試してみました複数のケース - 100.1、1、など)私が間違っているのは何
?
CODE:
/* Input: a grade as points
Functionality: converts point grade into letter grade
Output: a char representing the letter grade, or -1 if error
LETTER GRADE BREAKDOWN:
A = 100 - 91
B = 90 - 81
C = 80 - 71
D = 70 - 61
F = 60 and below
*/
#include <stdio.h>
#include <stdlib.h>
#define DEBUG 1
char assignletter(float pointsgrade);
char lettergrade;
float pointsgrade;
int main(){
//Input a pointsgrade for debugging
#ifdef DEBUG
printf("Enter pointsgrade\n");
scanf("%f", &pointsgrade);
lettergrade = assignletter(pointsgrade);
printf("Pointsgrade: %.2f Lettergrade: %c\n", pointsgrade, lettergrade);
#endif
}
char assignletter(float pointsgrade){
char lettergrade;
//Grade A
if(pointsgrade <= 100 && pointsgrade >= 91){
lettergrade = 'A';
}
//Grade B
if(pointsgrade <= 90 && pointsgrade >= 81){
lettergrade = 'B';
}
//Grade C
if(pointsgrade <= 80 && pointsgrade >= 71){
lettergrade = 'C';
}
//Grade D
if(pointsgrade <= 70 && pointsgrade >= 61){
lettergrade = 'D';
}
//Grade F
if(pointsgrade <= 60){
lettergrade = 'F';
}
//Return letter grade or -1 if error
if(lettergrade <= 'A' && lettergrade >= 'F'){
return lettergrade;
}
else{
return -1;
}
}
'lettegrade'は' 'A''以下でなければならず、' 'F ''以上でなければなりません。演算子を切り替える –
しかし、AはFよりも高い値ではありませんか? @EliSadoff –
「A」は「65」、「F」は「70」です。 –