C语言香港跑马
#include <stdio.h> #include <time.h> #include <windows.h> //定义宏 #define HORSENUM 6//赛马数量 #define DISTANCE 70//赛马跑道的长度 #define MAXSTEP 5//赛马跑动一次的最长距离 #define ACCOUNT 100000//我的账户 #define MINPAY 3000//最低下注额 char horse[] = {'%', '&', '#', '@', '$', '!'}; //获取下注额 int get_deposit() { int deposit; printf("请下注(最低下注额为%d元):", MINPAY); while(!scanf("%d", &deposit) || deposit < MINPAY) { printf("错误,请重新下注(最低下注额为%d元):", MINPAY); fflush(stdin); } return deposit; } //选择赛马的编号 int get_number() { int num; printf("请选择赛马的编号(1~%d):", HORSENUM); while(!scanf("%d", &num) || num < 1 || num > HORSENUM) { printf("错误,请重新选择赛马的编号(1~%d):", HORSENUM); fflush(stdin); } return num; } //赛马开始比赛 void run(int rank[]) { int i, j; int index = 1;//赛马的名次 int dis[HORSENUM] = {0};//记录所有赛马已经跑出的距离 memset(rank, 0, sizeof(int) * HORSENUM);//把rank数组中的元素全部赋值为0 while(index <= HORSENUM) { system("cls"); printf("--------欢迎来到香港赌马场-----------\n"); for(i = 0; i < HORSENUM; ++i) { dis[i] += rand() % MAXSTEP; if(dis[i] >= DISTANCE) { dis[i] = DISTANCE; if(!rank[i]) rank[i] = index++; } printf("NO.%d:", i + 1); for(j = 0; j < dis[i]; ++j) printf("."); if(rank[i]) printf("%d\n", rank[i]); else printf("%c\n", horse[i]); } Sleep(200); } } int main() { int deposit; //下注额 int account = ACCOUNT;//我的账户 int rank[HORSENUM];//存储赛马的名次 int num;//获取赛马的编号 int bonus;//奖金 char answer; srand((unsigned)time(0));//初始化随机种子 printf("你现在的账户余额为%d元!\n", account); while(1) { if(account < MINPAY) { printf("你的钱已经不够下注了,请离开!\n"); break; } //获取下注额 while((deposit = get_deposit()) > account) { printf("你的账户没有这么多钱了!\n"); } num = get_number() - 1;//获取赛马的编号 run(rank); printf("\n********************************************\n"); if(rank[num] == 1) { bonus = deposit * 5; printf("神啊!你太厉害了,%d号赛马竟然跑了第一名,获得了5倍奖金%d元.\n", num + 1, bonus); account += bonus; } else if(rank[num] == 2) { bonus = deposit * 2; printf("厉害厉害了,%d号赛马竟然跑了第二名,获得了2倍奖金%d元.\n", num + 1, bonus); account += bonus; } else { deposit = deposit * rank[num] / HORSENUM; printf("遗憾!你选择的%d号赛马只获得了第%d名, 将扣除%d元!\n", num + 1, rank[num], deposit); account -= deposit; } printf("你现在的账户余额是%d元.\n", account); printf("你还想再玩一次吗(y or n)?"); fflush(stdin); scanf(" %c", &answer); if(answer != 'y') break; } return 0; }