我在編程方面是全新的,最近我發現這個網站幫助教育我的自我。 我正在嘗試使用「C」來編寫一個程序,該程序會在我的書中遇到三種不同類別的成績提示,並且我認爲它們是我最好的選擇。 我目前的代碼看起來像這樣。如何使用while循環
int countA;
int gradeA;
int totalA;
int weightA;
float averageA;
int countE;
int gradeE;
int totalE;
int weightE;
float averageE;
int countQ;
int gradeQ;
int totalQ;
int weightQ;
float averageQ;
totalA = 0;
countA = 0;
totalE = 0;
countE = 0;
totalQ = 0;
countQ = 0;
printf("Enter Assignment Grade, -1 to end: "); /* prompt for input */
scanf("%d", &gradeA);
while (gradeA != -1){
totalA = totalA + gradeA; /* add gradeA to totalA */
countA = countA + 1;
printf("Enter Assignment Grade, -1 to end: "); /* prompt for input */
scanf("%d", &gradeA);
}
if (countA != 0) {
averageA = (float) totalA/countA;
printf("total is %.2f\n", averageA);
}
printf("Enter Exam Grade, -1 to end: "); /* prompt for input */
scanf("%d", &gradeE);
while (gradeE != -1){
totalE = totalE + gradeE; /* add gradeE to totalE */
countE = countE + 1;
printf("Enter Exam Grade, -1 to end: "); /* prompt for input */
scanf("%d", &gradeE);
}
if (countE != 0) {
averageE = (float) totalE/countE;
printf("total is %.2f\n", averageE);
}
printf("Enter Quiz Grade, -1 to end: "); /* prompt for input */
scanf("%d", &gradeQ);
while (gradeQ != -1){
totalQ = totalQ + gradeQ; /* add gradeQ to totalQ */
countQ = countQ + 1;
printf("Enter Quiz Grade, -1 to end: "); /* prompt for input */
scanf("%d", &gradeQ);
}
if (countQ != 0) {
averageQ = (float) totalQ/countQ;
printf("total is %.2f\n", averageQ);
}
我們什麼,我想這點後,做的是兩次重複這個過程,但是當我嘗試運行exe文件我得到的第1部分運行,但其他兩個部分根本就沒有得到由於某種原因而提出的。這是否僅限於重複陳述的內容?或者我有一個錯誤在哪裏。我試圖弄清楚我做錯了什麼,但我只是看到它。
我不太確定如何正確發佈這裏,但這是我得到的輸出的一個例子。
這裏是我輸出的一個例子,你可以看到它提示我輸入第一個段,它是Assignment部分,但是輸入-1結束循環後,它給出了平均值和結束值。
C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin>project1.exe
Enter Assignment Grade, -1 to end: 100
Enter Assignment Grade, -1 to end: 80
Enter Assignment Grade, -1 to end: 77
Enter Assignment Grade, -1 to end: 33
Enter Assignment Grade, -1 to end: 76
Enter Assignment Grade, -1 to end: 92
Enter Assignment Grade, -1 to end: -1
total is 76.33
我的身影,至少第一部分工作,但我得到我之後不提示接下來看看總然後請求對考試成績。
請後輸出。我懷疑你沒有看到提示,因爲你需要調用'fflush(stdout)'。很多終端都是行緩衝的,除非你寫一個換行符(或顯式刷新),否則默認情況下不會將輸出刷新到屏幕。 – paddy 2013-02-13 22:19:47
在我的Mac(鏗鏘聲)和Windows(vc2012)上運行良好。 – WhozCraig 2013-02-13 22:22:33
很難想象在讀取輸入前沒有刷新輸出的任何C I/O庫。 – 2013-02-13 22:42:40