2017-09-29 3 views
-2

スイッチからこのifプログラムへの変更、または宿題のためのelse文が必要です。私はコーディングに新しいので、正しい方向へのプッシュだけで十分です。このプログラムは、文字「a/A」を読み込み、その文字が入力された回数を出力するように設計されています。スイッチケースからif文とif else文に変換する方法が必要です。スイッチから別の場合に書き直す

/* Counting letter grades */ 

#include <stdio.h> 

/* function main begins program execution */ 
int main(void) 
{ 
int grade; /* one grade */ 
int aCount = 0; /* number of As */ 
int bCount = 0; /* number of Bs */ 
int cCount = 0; /* number of Cs */ 
int dCount = 0; /* number of Ds */ 
int fCount = 0; /* number of Fs */ 

printf( "Enter the letter grades.\n" ); 
printf( "Enter the EOF character ('m')to end input.\n" ); 

/* loop until user types 'm' */ 
while ((grade=getchar()) !='m') { 

/* determine which grade was input */ 
switch (grade) { /* switch nested in while */ 

    case 'A':  /* grade was uppercase A */ 
    case 'a':  /* or lowercase a */ 
     ++aCount; /* increment aCount */ 
     break;  /* necessary to exit switch */ 

    case 'B':  /* grade was uppercase B */ 
    case 'b':  /* or lowercase b */ 
     ++bCount; /* increment bCount */ 
     break;  /* exit switch */ 

    case 'C':  /* grade was uppercase C */ 
    case 'c':  /* or lowercase c */ 
     ++cCount; /* increment cCount */ 
     break; /* exit switch */ 

    case 'D':  /* grade was uppercase D */ 
    case 'd':  /* or lowercase d */ 
     ++dCount; /* increment dCount */ 
     break; /* exit switch */ 

    case 'F':  /* grade was uppercase F */ 
    case 'f':  /* or lowercase f */ 
    ++fCount; /* increment fCount */ 
    break; /* exit switch */ 

    case '\n': /* ignore newlines, */ 
    case '\t': /* tabs, */ 
    case ' ' : /* and spaces in input */ 
     break; /* exit switch */ 

    default: /* catch all other characters */ 
    printf("Incorrect letter grade entered."); 
    printf(" Enter a new grade.\n"); 
     break; /* optional; will exit switch anyway */ 
    }   /* end switch */ 
}   /* end while */ 

/* output summary of results */ 
printf("\nTotals for each letter grade are:\n"); 
printf("A: %d\n", aCount); /* display number of A grades */ 
printf("B: %d\n", bCount); /* display number of B grades */ 
printf("C: %d\n", cCount); /* display number of C grades */ 
printf("D: %d\n", dCount); /* display number of D grades */ 
printf("F: %d\n", fCount); /* display number of F grades */ 
return 0; /* indicate program ended successfully */ 
} /* end function main */ 
+1

これは簡単なことですが、答えを出すだけのヒントを与える方法は考えられません。具体的に何が問題になっていますか? –

+1

https://www.cprogramming.com/tutorial/c/lesson2.html – zerkms

+1

ヒント:同じ名前の同じタイプの変数が複数ある場合は、序数または接頭辞が異なるだけです(ここにあるように)、それはあなたが*配列*を使いたいという本当に強いヒントです。この課題では問題ではありませんが、将来のために念頭に置いておきたいことです。 –

答えて

0

それはそれと同じくらい簡単です:

ここ
if(grade == 'A' || grade == 'a') 
    ++aCount; 
else if(grade == 'B' || grade == 'b') 
    ++bCount; 
else if(grade == 'C' || grade == 'c') 
    ++cCount;  
else if(grade == 'D' || grade == 'd') 
    ++dCount; 
else if(grade == 'F' || grade == 'f') 
    ++fCount; 
else if(grade == '\n' || grade == '\t' || grade == ' ') 
    ++fCount; 
else { 
    printf("Incorrect letter grade entered."); 
    printf(" Enter a new grade.\n"); 
} 

の本体は文が実行された場合や、他の-場合ならば、他の機関が実行されません。

PS:Cprogramming Tutorialを確認してください。

+1

あなたは空白の場合を忘れてしまったようです。 – Zong

+0

空白はどういう意味ですか? @Zong – pwndaman

+0

Zongはこの 'case 'を意味します:/ *と入力のスペース* /' @pwndaman、簡略化のためスペース。 – gsamaras

関連する問題