第二天打卡

一、问题描述:

小明有5本新书,要借给A、B、C这3位小朋友,若每人每次只能借1本,则可以有多少种不同的借法?
二、设计思路:

对于每个人所选书号,我们可以采用穷举循环来实现,即从每个人可选书号(1、2、3、4、5)的范围内进行穷举,从而得到可行的结果。对第1个人的选择,我们可以用循环将其列出:for(a=1;a<=5;a++),同理对于第2个人、第3个人可以用同样的方法。由于一本书只能借给一个人,所以第2个人的选择会受到第1个人的限制,最后一个人的选择会受到第2个人的限制,即后面的选择都是在前面选择的前提下进行的,所以可采用循环的嵌套来解决问题。
利用循环解决问题的时候,找到循环的三要素:循环变量的初值、循环的控制条件,以及使循环趋于结束的循环变量值的改变是进行编程的关键。读者可参照第一个例子来找一下本题中所对应的循环三要素。本题的输出结果有一个条件限制,即3个人所选书号各不相同。在输出语句前只要用一个if语句if(a!=b&&a!=c&&c!=b)判断即可。
三、程序流程图(必须,可以在 word 或者 Visio 中直接绘制)

 

 

 

 

 

四、伪代码实现:能写代码写代码,代码不会用自然语言代替。

  var int a,b,c,i=0;

 

  begin

 

    for a:=1 to 5

 

    for b:=1 to 5

    for c:=1 to 5

 

        do

 

    begin

 

     if a!=b&&a!=c&&c!=b then

        

 

     begin

 

      output "cA:%2d B:%2d c:%2d ";

    i++;

      end;

 

      begin

       if i%4==0 then

       begin

       

       output "\n";

        output "共有%d种有效借阅方法\n";

       end;

五、代码实现

#include<stdio.h>

int main()

{ int a,b,c,i=0;

printf("A,B,C三人所选书号分别为:\n");

for(a=1;a<=5;a++)

    for(b=1;b<=5;b++)

    for(c=1;c<=5;c++)

    if(a!=b&&a!=c&&c!=b)

{

    printf("A:%2d B:%2d c:%2d  ",a,b,c);

    i++;

    if(i%4==0)

    printf ("\n");

        printf("共有%d种有效借阅方法\n",i);

}

 

}

 

 

posted @ 2023-04-13 20:28  恋恋恋白  阅读(23)  评论(0)    收藏  举报