C语言回答马克思手稿中有这样一道趣味数学题:男人、女人和小孩总计30个人,在一家饭店里吃饭,共花了50先令,每个男人各花3先令,每个女人各花2先令,每个小孩各花1先令,请用穷举法编程计算男人、女人和小孩各有几人,列出所有可能的组合。 输出提示信息:"Man\tWomen\tChildren\n" 输出格式: "%3d\t%5d\t%8d\n" 注:不允许使用goto语句
时间: 2023-06-30 11:17:24 浏览: 64
好的,这个问题可以使用循环嵌套来穷举所有可能的组合。具体实现可以参考以下代码:
```c
#include <stdio.h>
int main()
{
int man, women, children;
int count = 0; // 记录符合条件的组合个数
printf("Man\tWomen\tChildren\n"); // 输出表头
for (man = 0; man <= 10; man++) // 男人数量最多为10人
{
for (women = 0; women <= 25; women++) // 女人数量最多为25人
{
children = 30 - man - women; // 计算小孩数量
if (man * 3 + women * 2 + children == 50) // 满足条件
{
printf("%3d\t%5d\t%8d\n", man, women, children); // 输出符合条件的组合
count++; // 记录符合条件的组合个数
}
}
}
printf("Total combinations: %d\n", count); // 输出符合条件的组合总数
return 0;
}
```
这个程序中使用了两重循环来穷举所有可能的组合,其中第一重循环枚举男人的数量,第二重循环枚举女人的数量,然后计算出小孩的数量,并判断是否符合条件。如果符合条件,则输出一行符合条件的组合,并记录符合条件的组合个数。最后输出符合条件的组合总数。
注意,程序中使用了 `\t` 表示输出一个制表符,使输出结果更加整齐。同时,程序中使用了 `%3d`、`%5d` 和 `%8d` 等格式化字符串,分别表示输出一个占位宽度为3、5 和 8 的整数。