用c语言写出这个问题
时间: 2024-11-13 15:27:58 浏览: 4
495个C语言问题
当然可以,下面是一个简单的C程序,用于解决上述问题。我们将使用数组和循环来存储选手的猜测并遍历它们,找到最接近真实价格的选手。
```c
#include <stdio.h>
#include <stdlib.h> // 用于 abs 函数
int main() {
int num_players = 3;
int guesses[num_players], real_price, min_difference = INT_MAX; // 初始化最小差距为最大整数值
char winner[10]; // 存储获胜者的名字
// 获取每位选手的猜测
for (int i = 0; i < num_players; i++) {
printf("请输入第 %d 位选手的猜测: ", i+1);
scanf("%d", &guesses[i]);
}
// 获取真实价格
printf("请输入真实价格: ");
scanf("%d", &real_price);
// 比较猜测值与真实价格,更新最小差距和获胜者
for (int i = 0; i < num_players; i++) {
int difference = guesses[i] - real_price;
if (difference == 0) {
strcpy(winner, "平局"); // 如果有人猜中,视为平局
break;
}
if (difference < min_difference) {
min_difference = difference;
if (min_difference == 0) { // 如果新的最小差距为0,说明找到了准确的预测者
strcpy(winner, "猜对了!"); // 或者直接输出名字
} else {
// 对于非零差距,只记录名字
sprintf(winner, "%d", guesses[i]); // 例如 "36"
}
}
}
// 输出结果
if (strcmp(winner, "平局")) {
printf("获胜者的猜测是 %s, 与真实价格的差距是 %d\n", winner, min_difference);
} else {
printf("平局!\n");
}
return 0;
}
```
这个程序首先获取每个选手的猜测和真实价格,然后通过循环逐个检查差异,并更新最小差距及获胜者信息。最后,根据规则输出相应的结果。
阅读全文