以下是一個C語言實現的隨機抽獎程序示例:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
int numParticipants, numWinners;
printf("請輸入參與抽獎的人數:");
scanf("%d", &numParticipants);
printf("請輸入中獎人數:");
scanf("%d", &numWinners);
if (numWinners > numParticipants) {
printf("中獎人數不能大于參與人數!\n");
return 0;
}
// 使用當前時間作為隨機數種子
srand(time(NULL));
int* participants = (int*)malloc(numParticipants * sizeof(int));
int* winners = (int*)malloc(numWinners * sizeof(int));
// 初始化參與者編號
for (int i = 0; i < numParticipants; i++) {
participants[i] = i + 1;
}
// 隨機抽獎
for (int i = 0; i < numWinners; i++) {
int randIndex = rand() % numParticipants;
winners[i] = participants[randIndex];
// 將已中獎的參與者從數組中刪除
for (int j = randIndex; j < numParticipants - 1; j++) {
participants[j] = participants[j + 1];
}
numParticipants--;
}
printf("中獎者編號:");
for (int i = 0; i < numWinners; i++) {
printf("%d ", winners[i]);
}
printf("\n");
free(participants);
free(winners);
return 0;
}
該程序會先詢問參與抽獎的人數和中獎人數,然后使用隨機數生成器生成中獎者編號,最后輸出中獎者的編號。請注意,該程序使用了動態內存分配,因此在使用完之后需要調用free
函數釋放內存空間。