改错题,函数fun实现的功能是:统计一个无符号整数中各位数字值为0的个数,通过形参传回主函数,并把该整数的中各位上最大值作为函数值返回。例如输入无符号整数30800,则数字值为0的位的个数为3,各位上数字值最大的是8,以myf123.c存盘。 请改正函数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\n zero=%d\n",max,zero); }
理解问题改错题,函数fun实现的功能是:统计一个无符号整数中各位数字值为0的个数,通过形参传回主函数,并把该整数的中各位上最大值作为函数值返回。例如输入无符号整数30800,则数字值为0的位的个数为3,各位上数字值最大的是8,以myf123.c存盘。 请改正函数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\n zero=%d\n",max,zero); }
已完成理解「改错题,函数fun实现的功能是:统计一个无符号整数中各位数字值为0的个数,通过形参传回主函数,并把该整数的中各位上最大值作为函数值返回。例如输入无符号整数30800,则数字值为0的位的个数为3,各位上数字值最大的是8,以myf123.c存盘。 请改正函数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\n zero=%d\n",max,zero); }」
展开阅读网页
在提供的代码中,存在两个错误需要修正以确保函数fun
能够正确统计无符号整数中各位数字值为0的个数,并通过形参传回主函数,同时返回该整数各位上的最大值。
-
第一个错误位于
if(t=0)
语句中。这里使用了赋值运算符=
而不是比较运算符==
。因此,该语句实际上将0赋值给变量t
,而不是检查t
是否等于0。这将导致count
变量永远不会增加,因为t
永远不会等于0。正确的语句应该是if(t==0)
。 -
第二个错误位于
zero=count;
语句中。这里应该使用指针来更新zero
变量的值,而不是直接赋值。由于zero
是一个指针,应该使用指针的间接引用来更新它指向的内存位置的值。正确的语句应该是*zero=count;
。
以下是修正后的代码:
#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; // 使用间接引用*zero来更新zero指向的值
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);
}
通过这些修正,函数fun
现在应该能够正确地统计无符号整数中各位数字值为0的个数,并通过指针zero
传回主函数,同时返回整数各位上的最大值。1578