0

私はC++の初心者です。数値グレードの横に文字グレードを出力したいだけですが、int Wを変換して文字を出力する方法がわかりません。

char Grade(int W)
{
    char A,B,C,F;
    if (W == 100)
        return W = "A";
    else if (W == 99)
        return A;
}
4

3 に答える 3

2

typesC++ プログラムに存在する違いを理解する必要があります。intは数字用、charは文字用です。

また、変数の型名前にも違いがあります。宣言

char A,B,C,F;

char4 つの変数を作成していることを意味します。それらの名前は A、B、C、および F です。ただし、現在はが含まれていません。したがって、コードを次のように変更できます。

char Grade(int W)
{
 char A = 'A',B = 'B',C = 'C',F = 'F';  //now, A has the value 'A', B has the value 'B' etc.
 if(W==100)
     return A;
 else if(W==99)
     return A;
}

ここで、変数Aであるchar変数の値は です'A'また、返す型は関数の戻り値の型と同じでなければならないことに注意してください。関数のシグネチャ char Grade(int W)は です。これは、引数が でintあり、戻り値の型がであることを意味しますchar

に 100 個の異なる値がある場合、どうしますWか? それぞれの可能性をチェックする必要はありません。そうしないとelse if、プログラミングの目的に反する 100 個の異なる ... ステートメントになってしまいます。代わりに、90 を超えるものはすべて「A」、80 を超えるものはすべて「B」などとします。したがって、コードは次のように変更されます。

char Grade(int W)
{
 char A = 'A',B = 'B',C = 'C',F = 'F';
 if(W >= 90)     //Now, any value of W that is greater than
                 //or equal to 90 will return 'A'
     return A;
 else if(W >= 80) //the 'else' means that (W >= 90) was not true,
                      //so W must be less than 90. Now we check if W >= 80
     return B;
 else if ..... //do the same for C, F etc.
}
于 2013-08-02T22:48:38.137 に答える
1

単純な if/else ブロックを使用して、スコアをレター グレードに変換できます。

char Grade(int score)
{
    if(score >= 90) return 'A';
    else if(score >= 80) return 'B';
    else if(score >= 70) return 'C';
    else if(score >= 60) return 'D';
    return 'F';
}
于 2013-08-02T22:51:08.877 に答える
0

他の解釈によると、数値グレードを 100 から 50 から "A" から "F" に変更します。ここで、50 未満のものはすべて自動的に "F" になりますが、現在は何if..else記述されていません。結局のところ、それは単純な関係です。

char Grade (int W)
{
   return W < 50 ? 'F' : 'F'-(W-50)/10;
}

多少の丸めが必要です。90 から 100 まではすべて "A" を返し、80 から 89 までは "B" を返します。

(プログラミング レベルを考慮した上で) 三項演算子のないバージョンで、ロジックがより明確になる可能性があります。また、可能なすべての組み込み表記のショートカットについて削除されました。

char Grade (int W)
{
   if (W < 50)
     return 'F';
   W = W-50; /* we know W >= 50 at this point */
   /* Now W=0..50 */
   W = W/10;
   /* Now W is 0..5 */
   return 'A'+5-W;
}
于 2013-08-02T23:37:17.753 に答える