3、改错题,函数fun实现的功能是:统计一个无符号整数中各位数字值为0的个数,通过形参传回主函数,并把该整数的中各位上最大值作为函数值返回。例如输入无符号整数30800,则数字值为0的位的个数为3,各位上数字值最大的是8,以myf133.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); }
时间: 2023-07-01 22:11:15 浏览: 53
下面是已经改正的函数fun的代码:
```c
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;
}
```
需要注意的是:
1. 在判断语句中应使用 `==` 而不是 `=`,因为 `=` 是赋值操作符,而 `==` 才是比较操作符。
2. 形参 `zero` 是一个指向 `int` 类型变量的指针,所以在给它赋值时应该使用 `*zero`。
3. 在 `main` 函数中,应该使用 `%u` 而不是 `%d` 来读取无符号整数。
相关问题
C语言给定程序中函数fun的功能是:用递归算法求形参a的平方根。
好的,让我看一下给定的 C 语言程序:
```
#include <stdio.h>
float fun(float a)
{
float x, y;
x = a;
y = (x + a / x) / 2.0; /* 迭代公式 */
if (x == y) {
return x;
} else {
return fun(y);
}
}
int main()
{
float a;
printf("请输入一个数:");
scanf("%f", &a);
printf("%f 的平方根为 %f\n", a, fun(a));
return 0;
}
```
这个程序中的函数 `fun` 使用了递归算法来求形参 a 的平方根。具体做法是使用牛顿迭代法,不断逼近平方根的值,直到误差足够小为止。迭代公式为:
y = (x + a / x) / 2.0
其中 x 的初始值为 a,y 是迭代后的值。如果迭代后的值与上一次的值 x 相等,说明已经逼近到平方根的精度范围内,返回 x 即可。如果不相等,则继续递归调用 `fun` 函数,直到满足条件为止。
用C语言实现,编写带有函数的程序,输入一个整数X,函数fun功能是求出 能整除x且不是偶数的各个整数,顺序存放在 数组pp中,这些除数的个数通过形参返回
以下是用C语言实现的程序:
```c
#include <stdio.h>
void fun(int x, int* pp, int* count) {
*count = 0;
for (int i = 1; i <= x; i++) {
if (x % i == 0 && i % 2 != 0) {
pp[*count] = i;
(*count)++;
}
}
}
int main() {
int x, count;
int pp[100];
printf("请输入一个整数:\n");
scanf("%d", &x);
fun(x, pp, &count);
printf("能整除%d且不是偶数的整数为:", x);
for (int i = 0; i < count; i++) {
printf("%d ", pp[i]);
}
printf("\n共有%d个除数", count);
return 0;
}
```
在主函数中,我们先输入一个整数x,然后调用函数fun,将x、pp数组和count的地址作为参数传递给函数。在函数中,我们首先将count初始化为0,然后遍历从1到x的所有整数,如果一个整数能整除x且不是偶数,我们就将它存放在pp数组中,并将count加1。最后,我们返回主函数时,count的值就是除数的个数,pp数组中存放的就是所有能整除x且不是偶数的整数。