M067

02-程序修改题 软件154 范金瑞 1086浏览

所属年份:2010.9;2011.3

下列给定程序中,函数fun的功能是:从3个红球、5个白球、6个黑球中任意取出8个作为一组,进行输出。在每组中,可以没有黑球,但必须要有红球和白球。组合数作为函数值返回。正确的组合数应该是15。程序中i的值代表红球数,j的值代表白球数,k的值代表黑球数。

请改正程序中的错误,使它能得出正确的结果。
注意:部分源程序在文件MODI1.C中,不要改动main函数,不得增行或删行,也不得更改程序的结构!

#include  <stdio.h>
int fun()
{
    int i,j,k,sum=0;
    printf("\nThe result :\n\n ");
    /*************found**************/
    for(i=0; i<=3; i++)
    {
        for (j=1; j<=5; j++)
        {
            k=8-i-j;
            /*************found**************/
            if(k>=1&&k<=6)
            {
                sum=sum+1;
                printf("red:%4d white:%4dblack:%4d\n ",i,j,k);
            }
        }
    }
    return sum;
}
void main()
{
    int sum;
    sum=fun();
    printf("sum=%4d\n\n ",sum);
}

【参考答案】

  (1)for(i=1;i<=3;i++)
  (2)if(k>=0&&k<=6)

【考点分析】
本题考查:for循环语句,if语句中逻辑与(&&)、逻辑或(||)。

【解题思路】
(1)红球数i的总数为3,因为组合中必须有红球,所以i的值不能为0。
(2)该if语句用来限定组合中黑球的数量,黑球的总数为6,且组合中可以没有黑球,因此判断条件应为:k>=0&&k<=6。