M072

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

所属年份:2011.3

下列给定程序中,函数fun实现的功能是:统计一个无符号整数中各位数字值为0的个数,通过形参传回主函数,并把该整数中各位上最大的数字值作为函数值返回。例如,若输入无符号整数30800,则数字值为0的位的个数为3,各位上数字值最大的是8。

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

#include <stdio.h>
int fun(unsigned n,int *zero)
{
    int count=0,max=0,t;
    do
    {
        t=n%10;
        /*************found**************/
        if(t=0)
            count++;
        if(max<t)
            max=t;
        n=n/10;
    }
    while(n);
    /*************found**************/
    zero=count;
    return max;
}

main()
{
    unsigned n;
    int zero,max;
    printf("\nInput n(unsigned): ");
    scanf("%d",&n);
    max=fun(n,&zero);
    printf("\nThe result: max=%d\n zero=%d\n",max,zero);
}

【参考答案】

(1)if(t==0)
(2)*zero=count;

【解题思路】
(1)根据题意,此处应该是条件语句,而不是赋值语句,并且在条件表达式中不会出现”=”号。
(2)此处是指针赋值的一个简单错误,对指针指向的元素进行赋值应使用*号。