用C++实现某杯子可以装水,初始时杯中存有一些水,且杯子有最大容量(单位:升)限制。请编写一个杯子类,并编写一个主函数,演示以下功能:往杯子中加水,每次随机添加一定体积的水,当水杯满时,则结束加水,否则可以继续加水。程序要输出一共加了几次水、每次加了多少升水。
时间: 2024-05-05 07:16:24 浏览: 121
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
// 杯子类
typedef struct Cup {
double capacity; // 容量
double volume; // 当前体积
} Cup;
// 初始化杯子
void initCup(Cup *cup, double capacity, double volume) {
cup->capacity = capacity;
cup->volume = volume;
}
// 向杯子中加水
void addWater(Cup *cup) {
double addVolume = ((double)rand() / RAND_MAX) * (cup->capacity - cup->volume); // 随机添加一定体积的水
cup->volume += addVolume;
printf("添加了 %.2f 升水,当前杯子中有 %.2f 升水\n", addVolume, cup->volume);
}
int main() {
srand((unsigned int)time(NULL)); // 以当前时间为种子,初始化随机数生成器
Cup cup;
double capacity, volume;
printf("请输入杯子的最大容量(单位:升):");
scanf("%lf", &capacity);
printf("请输入杯子的初始体积(单位:升):");
scanf("%lf", &volume);
initCup(&cup, capacity, volume);
int count = 0; // 记录加水的次数
while (cup.volume < cup.capacity) {
addWater(&cup);
count++;
}
printf("杯子已满,一共加了 %d 次水\n", count);
return 0;
}
```
阅读全文