M096

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

所属年份:2012.3

下列给定的程序中,函数fun的功能是:计算并输出k以内最大的10个能被13或17整除的自然数之和。k的值由主函数传入,若k的值为500,则函数的值为4622。

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

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
int fun(int k)
{
    int m=0,mc=0, j;
    while((k>=2)&&(mc<10))
    {
        /*************found**************/
        if((k%13=0)||(k%17=0))
        {
            m=m+k;
            mc++;
        }
        k--;
        /*************found**************/

        return m;
    }
    void main()
    {
        system("CLS");
        printf("%d\n ",fun(500));
    }

【参考答案】

(1)if((k%13==0)||(k%17==0))
(2)}

【解题思路】
(1)C语言中,x能被y整除的表示方法是x%y==0,而不是题目中所表示的x%y=0。所以,if((k%13=0)||(k%17=0))修改后的结果应该是答案所示信息。

(2)程序中缺少程序完整所需的”}”,此类信息在做题时一定要注意,可以在做题前先运行一下程序,这样明显的错误一般都会有错误信息显示出来。比如丢失”}”的错误信息是”Compound statement missing } in function fun”。

【解题宝典】
小提示:做题之前先运行一下程序,如果有书写错误,系统会提示,这样可以简化题目。