向大家请教C语言学校习题

输入两个浮点数,比较大小,并反馈排序。

1)定义比较大小函数,要求定义原型为

    int compare(float* a, float* b);

    输入参数列表:输入两个指针参数

    函数功能:比较大小

    输出:

并将大的通过第一个输入指针反馈,小的放在第二个输入指针反馈(排序);

函数返回值返回比较的结果:

1:原始输入的第一个参数>第二个参数

0:原始输入的第一个参数<=第二个参数
  1. 交付内容
实现两个浮点数输入 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。

解答如下

img

#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;
}