复制
收藏
提问
全网

改错题,函数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); }

5月前
全网
文档
学术
百科
知识库
时间不限
自动

理解问题改错题,函数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的个数,并通过形参传回主函数,同时返回该整数各位上的最大值。

  1. 第一个错误位于if(t=0)语句中。这里使用了赋值运算符=而不是比较运算符==。因此,该语句实际上将0赋值给变量t,而不是检查t是否等于0。这将导致count变量永远不会增加,因为t永远不会等于0。正确的语句应该是if(t==0)

  2. 第二个错误位于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

更专业一些
转笔记
专业
改错题,函数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); }
在线客服