输入两个浮点数,比较大小,并反馈排序。
1)定义比较大小函数,要求定义原型为
int compare(float* a, float* b);
输入参数列表:输入两个指针参数
函数功能:比较大小
输出:
并将大的通过第一个输入指针反馈,小的放在第二个输入指针反馈(排序);
函数返回值返回比较的结果:
1:原始输入的第一个参数>第二个参数
0:原始输入的第一个参数<=第二个参数
实现两个浮点数输入 float x, float y
实现比较函数
调用比较函数,第一个参数输入x,第二个参数输入y
打印比较结果,和返回的两个参数结果
printf("%d, %f, %f", ret, x, y);
请问谁可以帮忙做一下标准答案,这块学的不好,一点思路都没有,不知如何下手
如下:
#include <stdio.h>
int compare(float* a, float* b);
int compare(float* a, float* b)
{
float t;
if (*a <= *b)
{
t = *a;
*a = *b;
*b = t;
return 0;
}
else
return 1;
}
int main()
{
float x, y;
int ret;
scanf("%f %f", &x, &y);
ret = compare(&x, &y);
printf("%d, %f, %f", ret, x, y);
return 0;
}
首先根据需求分析,第一步需要先确定两个入参的大小,这里用“比较运算符”来比较,接下来这里有几种情况,一是原始入参一大于原始入参二,此种情况满足返回条件,函数直接返回1;二是原始入参一小于等于原始入参二,这时要根据需求“并将大的通过第一个输入指针反馈,小的放在第二个输入指针反馈”判断,这里需要进行数值交换,需要定义一个临时浮点型数据变量进行交换,比如a和b数值交换,需定义一个变量t,交换过程为将a的值赋值给t,将b值赋值给a,再将t值赋值给b,完成a和b值的交换。另需注意的是函数入参为指针,需要用到“取值符*”将指针中的值取出来。这种情况函数返回0。
解答如下
#include<stdio.h>
int compare(float* a, float* b)
{
int flag=*a>*b?1:0;
if(*b>*a)
{
int tem=*a;
*a=*b;
*b=tem;
}
return flag;
}
int main()
{
printf("输入两个float数:\n");
float x,y;
scanf("%f%f",&x,&y);
int ret=compare(&x,&y);
printf("%d, %f, %f", ret, x, y);
return 0;
}
int compare(float* a, float* b){
return a>b;
}