修改程序,使得三人的开枪顺序也可以人为输入
时间: 2023-12-13 18:05:39 浏览: 77
好的,以下是修改后的程序,可以让用户输入三个人的开枪顺序和命中率,程序会根据这些信息模拟三人轮流开枪的过程,并计算最终的获胜概率。
```
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
float a, b, c;
char order[3];
float ra, rb, rc;
int i, j;
int Awin = 0, Bwin = 0, Cwin = 0;
srand((unsigned)time(NULL)); // 设置随机种子
printf("请输入三个人的开枪顺序(例如:ABC)和命中率(例如:0.5 0.6 0.7):\n");
scanf("%c%c%c%f%f%f", &order[0], &order[1], &order[2], &a, &b, &c);
for (i = 0; i < 1000000; i++) { // 模拟1000000次游戏
for (j = 0; j < 3; j++) {
if (order[j] == 'A') {
ra = (float)rand() / RAND_MAX; // 产生0~1之间的随机数
if (ra < a) {
if (j == 2) Awin++;
}
else {
break;
}
}
else if (order[j] == 'B') {
rb = (float)rand() / RAND_MAX;
if (rb < b) {
if (j == 2) Bwin++;
}
else {
break;
}
}
else {
rc = (float)rand() / RAND_MAX;
if (rc < c) {
if (j == 2) Cwin++;
}
else {
break;
}
}
}
}
printf("A获胜概率:%f\n", (float)Awin / 1000000.0);
printf("B获胜概率:%f\n", (float)Bwin / 1000000.0);
printf("C获胜概率:%f\n", (float)Cwin / 1000000.0);
return 0;
}
```
在这个程序中,我们让用户输入三个人的开枪顺序和命中率,然后在模拟游戏的过程中,根据开枪顺序依次判断每个人是否能够命中对手。如果某个人没有命中对手,那么游戏就会结束,并且下一个人成为第一个开枪的人。
需要注意的是,在输入开枪顺序时,需要输入每个人的大写字母缩写,例如ABC表示A先开枪,B再开枪,C最后开枪。
阅读全文