用c语言写:若一个口袋里有12个球,其中3红,3白,6黑,从中取8个球,问有多少种不同的颜色搭配?

这是我的代码,帮忙改改!
#include "stdio.h"
void main()
{
int i,j,k,sum=0;
for(i=0;i<=6;i++)
{ for(j=0;j<=3;j++)
{for(k=0;k<=3;k++)
{if(i+j+k==5)
{sum++;
printf("红色球:%d 白色球:%d 黑色球:%d\n",j,k,i);
}
}
}
}
printf("共有%d种情况\n",sum);
}

#include<stdio.h>

int main()

{

int m, n, number=0;

printf(" 红球 白球 黑球\n");

printf("......................\n");

for( m=0; m<=3; m++ )

for( n=0; n<=3; n++ )

if(8-m-n<=6)

printf(" %2d: %d %d %d\n", ++number, m, n, 8-m-n);

return 0;

}

扩展资料:  

用C语言简单实现组合

代码:

#include <stdio.h>

#define MAXIN 10

int a[MAXIN]={0};

int counts=0;

void comb(int n, int m)

{

    if (m<=0)

    {

        for (int j=1;j<=counts;j++)

                printf("%d ",a[j]);

            printf("\n");

        return;

    }

    for (int i=n;i>=m;i--)

    {

        a[m]=i;

        comb(i-1,m-1);

    }

}

int main()

{

    int n, m;

    scanf("%d%d", &n, &m);

    counts=m;

    comb(n, m);

    return 0;

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-03-28

#include "stdio.h"

void main()

{

    int i,j,k,sum=0;

       for(i=0;i<=6;i++)

       { 

     for(j=0;j<=3;j++)

          {

      for(k=0;k<=3;k++)

            {

      if(i+j+k==8)

              {sum++;

                   printf("红色球=%d, 白色球=%d, 黑色球=%d\n",j,k,i);

                   

                       }

                  }

             }

          }

     

     printf("共有%d种情况\n",sum);

}

追问

这个不是和我的运行结果一样嘛?正确结果是80

追答

你用数学的方法算,你是把球编号了,但是你在写C的时候比如说你取在6个黑球中取五个用数学算就是6,但是在C语言是你的取法只有一种.不懂的话,只能说明你的数学有问题

本回答被提问者采纳
第2个回答  2011-03-28
我觉得大家的数学思维都有问题。既不能给球编号,也不能重复。
既然讲的是不同的颜色搭配,那就只和颜色的不同有关,和各种颜色的彩球的个数无关。
我觉得就只有三种。
第一种:有红球 白球 黑球
第二种:有红球 黑球
第三种:有白球 黑球
您可以先考虑我的这个思维。如果你觉得我的这个思维还可以,我也可以马上给你把程序编出来。
相似回答