口袋中有红、黄、蓝、白、黑五种颜色的球若干,每次从口袋中取出3个球。问得到三种不同颜色的球可以选取的方法,打印出三种颜色的各种组合
(用C语言)编写
循环遍历即可。if (i != j && j !=k && k!=i) 。
三种不同颜色的条件#include <stdio.h>#include <stdlib.h>void main(){int i,j,k,n=0;char c[5][7]={"red","yellow","blue","white","black"};for (i=0;i<5;i++)for (j=i+1;j<5;j++)for (k=j+1;k<5;k++){ if (i != j && j !=k && k!=i) printf("%s %s %s\n",c[i],c[j],c[k]); n++;}。
printf("n=%d",n);}得:red yellow bluered yellow whitered yellow blackred blue whitered blue blackred white blackyellow blue whiteyellow blue blackyellow white blackblue white blackn=10
得到三种不同颜色的球可以选取的方法,打印出三种颜色的各种组合循环遍历即可。
5x4x3/1/2/3=10
共有10种取法。
可以用递归程序实现输出所有的取法。
我们需要给予程序如阶乘函数的定义以语义function factorial(n:Nat):Nat ≡ if (n==0)then 1 else n*factorial(n-1)。
这个阶乘程序的意义应当是在自然数上一个函数,但是由于它的递归定义,如何以复合方式理解它是不明白的。
给定偏函数 f 和 g,设"f≤g"意味着"在 f 定义的所有值之上 f 一致于 g"。 通常假定这个域的某个性质,比如链的极限的存在性(参见cpo)和一个底元素。
偏函数的偏序有一个底元素,完全未定义函数。它还有链的最小上界。各种额外性质经常是合理的和有用的: 在域理论条目中有更详尽细节。
本回答被网友采纳循环遍历即可。
if(i!=j&&j!=k&&k!=i)--三种不同颜色的条件
#include<stdio.h>
#include<stdlib.h>
voidmain()
{
inti,j,k,n=0;
charc[5][7]={"red","yellow","blue","white","black"};
for(i=0;i<5;i++)
for(j=i+1;j<5;j++)
for(k=j+1;k<5;k++)
{if(i!=j&&j!=k&&k!=i)printf("%s%s%s\n",c[i],c[j],c[k]);n++;};
printf("n=%d",n);
}
得:
redyellowblue
redyellowwhite
redyellowblack
redbluewhite
redblueblack
redwhiteblack
yellowbluewhite
yellowblueblack
yellowwhiteblack
bluewhiteblack
n=10