问题描述:小明有5本新书,要借给A,B,C这三位小朋友,若每次每人只能借一本,则可以有多少种不同的借法?
问题分析:我们可以将5本书进行1~5的编号,A,B,C。 3个人每次都可以从5本书中任选一本书,即每人都有5种选择,由于一本书不可能同时借给一个以上的人,因此三个人的书籍编号不一样。
abc三位同学每个人五次循环嵌套
判断是否借书编号相同
若相同则不输出
都不同则输出结果
每次成功输出则给count加一
最后得出所有排列顺序和总数
代码:
#include <stdio.h>
int main() {
int a, b, c,i=0;
int count=0;
for (a = 1; a <= 5; a++)//a同学借书编号1~5
{
for (b = 1; b <= 5; b++)//b同学借书编号1~5
{
for (c = 1; c <= 5; c++)//c同学借书编号1~5
{
if (a != b && a != c && b != c)// 判断三人abc借书的编号1~5是否重复
{
printf("A=%2d B=%2d C=%2d\t", a, b, c);//输出结果
i++;
count++;//统计借书的种树
if (i % 4 == 0) {
printf("\n");
}
}
}
}
}
printf("共有%d种借书法",count);
return 0;
}