用c语言,输入三个浮点数,按从小到大的顺序输出(用指针实现交换)
/* Note:Your choice is C IDE */
#include "stdio.h"
void main()
{
float a;
float b;
float c;
float *p1,*p2,*p3;
float temp;
scanf("%f %f %f",&a,&b,&c);
p1 = &a;
p2 = &b;
p3 = &c;
if(*p1>*p2){
temp = *p2;
*p2 = *p1;
*p1 = temp;
}
if(*p1>*p3){
temp = *p3;
*p3 = *p1;
*p1 = temp;
}
if(*p2>*p3){
temp = *p3;
*p3 = *p2;
*p2 = temp;
}
printf("%f,%f,%f",*p1,*p2,*p3);
}
参考代码:
#include "stdio.h"
void swap(float *pt1, float *pt2)
{
float temp;
temp = *pt1;
*pt1 = *pt2;
*pt2 = temp;
}
int main()
{
float n, m, j;
float *p1, *p2, *p3;
scanf("%f %f %f", &n, &m, &j);
p1 = &n;
p2 = &m;
p3 = &j;
if (*p1 > *p2)
swap(p1, p2);
if (*p1 > *p3)
swap(p1, p3);
if (*p2 > *p3)
swap(p2, p3);
printf("%f %f %f\n", n, m, j);
return 0;
}
如有帮助,望采纳!谢谢! 点击我这个回答右上方的【采纳】按钮
代码如下:
#include <stdio.h>
void swap(float *a,float *b,float * c)
{
float max,min,mid;
//最大值
max = *a > (*b>*c?*b:*c)?*a:(*b>*c?*b:*c);
//最小值
min = *a < (*b<*c?*b:*c)?*a:(*b<*c?*b:*c);
//中间值
mid = *a + *b + *c - max -min;
*a = max;
*b = mid;
*c = min;
}
int main()
{
float a,b,c;
scanf("%f %f %f",&a,&b,&c);
swap(&a,&b,&c);
printf("%f %f %f",a,b,c);
return 0;
}