生成c语言使用指针设计一个函数fun的功能是:把主函数中输入的3个数,最大的放在a中,最小的放在c中。例如输入的数为55 12 34, 输出结果应当是:a=55.0, b=34.0, c=12.0。
时间: 2023-05-11 11:01:52 浏览: 118
以下是函数fun的代码实现:
```
void fun(float *a, float *b, float *c) {
float temp;
if (*a < *b) {
temp = *a;
*a = *b;
*b = temp;
}
if (*a < *c) {
temp = *a;
*a = *c;
*c = temp;
}
if (*b > *c) {
temp = *b;
*b = *c;
*c = temp;
}
}
```
在主函数中,你可以这样调用函数fun:
```
float a, b, c;
scanf("%f %f %f", &a, &b, &c);
fun(&a, &b, &c);
printf("a=%.1f, b=%.1f, c=%.1f\n", a, b, c);
```
这样就可以得到正确的输出结果了。
相关问题
用c语言编写函数fun的功能是:把主函数中输入的3个数,最大的放在 a中,最小的放在c中
在C语言中,编写这样的函数需要首先在函数内部比较这三个数的大小,然后将最大和最小的值分别赋给变量a和c,中间的值赋给变量b。以下是一个可能的实现方式:
```c
#include <stdio.h>
void fun(int x, int y, int z, int *a, int *c) {
int max, min, mid;
// 比较并确定最大值和最小值
max = (x > y) ? ((x > z) ? x : z) : ((y > z) ? y : z);
min = (x < y) ? ((x < z) ? x : z) : ((y < z) ? y : z);
// 确定中间值
mid = (x != max && x != min) ? x : ((y != max && y != min) ? y : z);
// 将值赋给指针指向的变量
*a = max;
*c = min;
// b的值可以通过函数返回或者通过其他方式传递,这里假设b通过其他方式确定
}
int main() {
int a, b, c;
// 输入三个整数
printf("请输入三个整数:");
scanf("%d %d %d", &a, &b, &c);
// 调用函数
fun(a, b, c, &a, &c);
// 输出结果
printf("最大的数是:%d,最小的数是:%d\n", a, c);
// 假设b是中间的数,可以根据实际情况输出或处理b
return 0;
}
```
在这个例子中,函数`fun`接受三个整数参数和两个指向整数的指针作为参数。指针`a`和`c`用于存放最大和最小值。函数内部通过嵌套的条件运算符(也称为三元运算符)来确定最大值和最小值,然后将这些值赋给对应的指针指向的变量。
注意,在`main`函数中,我们没有直接传递中间值`b`给`fun`函数,因为C语言中函数参数的传递默认是值传递,如果需要修改变量的值,就需要使用指针。在这个例子中,我们只是输出了`a`和`c`的值,而`b`的值可以根据实际需要以其他方式处理。
(用c语言使用指针设计一个函数fun的功能是:把主函数中输入的3个数,最大的放在a中,最小的放在c中。例如,输入的数为: 55 12 34,输出结果应当是: a=55.0, b=34.0, c=12.0
在C语言中,你可以使用指针来设计一个名为`fun`的函数,它接收三个整型指针作为参数,并将最大值赋给第一个指针指向的位置,最小值赋给第三个指针指向的位置。以下是函数的实现:
```c
#include <stdio.h>
void fun(int *a, int *b, int *c, int x, int y, int z) {
*a = x; // 初始化最大值指针指向的值
*b = y;
*c = z;
if (*a < y) { // 检查y是否比x大,如果大则交换
int temp = *a;
*a = y;
*b = temp;
}
if (*a < z) { // 检查z是否比x大,如果大且大于y,则再次交换
int temp = *a;
*a = z;
*c = temp;
}
if (*b < z) { // 检查z是否比y大,如果大则交换
int temp = *b;
*b = z;
*c = temp;
}
}
int main() {
int a, b, c;
float a_float, b_float, c_float; // 因为题目中提到a、b和c可能是浮点数,所以类型转换一下
// 输入三个整数
scanf("%d %d %d", &a, &b, &c);
// 转换为float类型并传入fun函数
a_float = (float)a;
b_float = (float)b;
c_float = (float)c;
fun(&a_float, &b_float, &c_float, a, b, c);
a_float = (int)a_float; // 回收内存,因为指针保存的是地址
b_float = (int)b_float;
c_float = (int)c_float;
printf("a=%d.0, b=%d.0, c=%d.0\n", a_float, b_float, c_float);
return 0;
}
```