📚 知識家圖書館 奇摩知識+ 紀念館

c語言:模擬大樂透開獎程式(陣列)

發問者 智慧 偉大 (Lv.1) ・2007 年 11 月 29 日 ・程式設計

問題一 (用陣列寫出程式) 讓使用者先輸入座號再輸入成績(打-1結束輸入),算出平均、總分、不及格人數、最高分.最低分的座號和分數,在輸入座號時,會檢查是否有重複的座號輸入,如果發生的話,就要求使用者重新輸入,例如第一次輸入20號, 分數90分,第二次輸入〇號,此時會顯示”號碼20已經出現過,請重新輸入座號!” 要求使用者重新輸入座號。另外, 再找最高分最低分的時候,如果有同分的,也要把號碼都顯示出來。 問題二 (用陣列寫出程式) 請設計一個程式,模擬大樂透開獎程式,利用亂數產生六個1~46號碼。每次都不會有相同的排列結果。你的程式必須利用陣列儲存每次開獎號碼的次數。假設模擬30,000次,你的程式會顯示號碼分布情形。記得: 六個號碼不會重複產生。

1 則回答

最佳解答
題1與這題一樣,題2達達幫你解了!! #include <stdio.h> #define n 3 //設定同學數 int main(void) { int i, j, A[n][2]; for(i = 0; i < n; i++) { printf("請輸入第%d位學號: ", i+1); scanf("%d", &A[i][0]); for(j = 0; j < i; j++) { if(A[i][0] == A[j][0]) { printf("號碼%d已經出現過,請重新輸入座號!\n", A[i][0]); break; } } if(j != i) { i--; continue; } printf("請輸入第%d位成績: ", i+1); scanf("%d", &A[i][1]); printf("\n"); } //排序 for(i = 0; i < n-1; i++) { for(j = i+1; j < n; j++) { if(A[i][1] < A[j][1]) { //降冪排序 A[i][1] ^= A[j][1] ^= A[i][1] ^= A[j][1]; A[i][0] ^= A[j][0] ^= A[i][0] ^= A[j][0]; } } } printf("==最高分==\n學號: %d, 成績: %d\n", A[0][0], A[0][1]); for(i = 1; i < n; i++) { if(A[i][1] == A[0][1]) printf("學號: %d, 成績: %d\n", A[i][0], A[i][1]); else break; } printf("\n"); printf("==最低分==\n學號: %d, 成績: %d\n", A[n-1][0], A[n-1][1]); for(i = n-2; i >= 0; i--) { if(A[i][1] == A[n-1][1]) printf("學號: %d, 成績: %d\n", A[i][0], A[i][1]); else break; } return 0; } 已編譯可以執行!!
逃跑的青蛙(Lv.5) 2007 年 12 月 2 日

電腦與網際網路的其他問題