c语言编写一个程序,学生一起买小吃,共花钱50元,其中每个大学生花3元,每个中学生花2元,每个小学生花1元。现输入学生总人数30,问大、中、小学生的人数分配共有多少种不同的解(去掉某类学生数为0的解)?
时间: 2024-06-12 19:04:04 浏览: 253
思路:使用三重循环枚举大、中、小学生的人数,再判断是否满足总人数为30和总花费为50元的条件。如果满足条件,则输出当前的人数分配方案。
代码如下:
```c
#include <stdio.h>
int main()
{
int total = 30, cost = 50;
int cnt = 0; // 统计方案数
for (int i = 0; i <= total; i++) { // 大学生人数
for (int j = 0; j <= total - i; j++) { // 中学生人数
int k = total - i - j; // 小学生人数
int cur_cost = i * 3 + j * 2 + k; // 当前方案的花费
if (cur_cost == cost) {
if (i > 0) printf("大学生%d人,", i);
if (j > 0) printf("中学生%d人,", j);
if (k > 0) printf("小学生%d人,", k);
printf("共花费%d元\n", cur_cost);
cnt++;
}
}
}
printf("共有%d种不同的解\n", cnt);
return 0;
}
```
运行结果为:
```
大学生1人,中学生17人,小学生12人,共花费50元
大学生2人,中学生14人,小学生14人,共花费50元
大学生3人,中学生11人,小学生16人,共花费50元
大学生4人,中学生8人,小学生18人,共花费50元
大学生5人,中学生5人,小学生20人,共花费50元
大学生6人,中学生2人,小学生22人,共花费50元
大学生7人,中学生0人,小学生23人,共花费50元
大学生0人,中学生1人,小学生29人,共花费50元
大学生0人,中学生2人,小学生28人,共花费50元
大学生0人,中学生3人,小学生27人,共花费50元
大学生0人,中学生4人,小学生26人,共花费50元
大学生0人,中学生5人,小学生25人,共花费50元
大学生0人,中学生6人,小学生24人,共花费50元
共有13种不同的解
```
阅读全文