C语言上机题:

题目:从3红5白6黑中任取8个作为一组,要求必须有红球和白球,组合数作为函数值返回?

#include <stdio.h>
int fun()
{ int i,j,k,sum=0;
printf("\nThe result :\n\n");
/**************found**************/
for(i=1; i<=3; i++)
{ for(j=1; j<=5; j++)
{ k=8-i-j;
/**************found**************/
if(k>=0 && k<=6) 【我认为这里的k<=6是多余的,为啥改了算错的】
{ sum=sum+1;
printf("red:%4d white:%4d black:%4d\n",i,j,k);
}
}
}
return sum;
}
main()
{ int sum;
sum=fun();
printf("sum =%4d\n\n",sum);

【我认为这里的k<=6是多余的,为啥改了算错的】——是多余的,算你错,可能是标准答案没有考虑到这个问题(k不可能超过6)。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-08-21
临界值,由于必须有红球和白球,所以黑球最多为6;当全部为红球和白球的时候,黑球最少为0。追问

k=8-i-j;i和j都是从1开始的,所以这两个条件一定会限制k不大于6吧

追答

那就不知道了

第2个回答  2014-08-21
怎么错了?我也觉得if(k>=0 && k<=6) 没什么用