填空题 下列给定程序中,函数fun实现的功能是:统计一个无符号整数中各位数字值为0的个数,通过形参传回主函数,并把该整数中各位上最大的数字值作为函数值返回。例如,若输入无符号整数30800,则数字值为0的位的个数为3,各位上数字值最大的是8。
请改正函数fun中的错误,使它能得出正确的结果。
注意:不要改动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 zero=%d/n", max, zero);
}
【正确答案】
【答案解析】(1)if(t==0)
(2)*zero=count; [解析] (1)根据题意,此处应该是条件语句,而不是赋值语句,并且在条件表达式中不会出现“=”号。
(2)此处是指针赋值的一个简单错误,对指针指向的元素进行赋值应使用*号。