求三个数的最大数,多种思路对比


第一种方法:if else 判断

提示:最普通的比大小的方法,简单直接

#include <stdio.h>
 
int main()
{
    double n1, n2, n3;
 
    printf("请输入三个数,以空格分隔: ");
    scanf("%lf %lf %lf", &n1, &n2, &n3);
 
    if( n1>=n2 && n1>=n3 )
        printf("%.2f 是最大数。", n1);
 
    if( n2>=n1 && n2>=n3 )
        printf("%.2f 是最大数。", n2);
 
    if( n3>=n1 && n3>=n2 )
        printf("%.2f 是最大数。", n3);
 
    return 0;
}

第二种方法:三目运算符;?

提示:三目运算木本质上是if else 判断语句的变种

#include <stdio.h>

int main()
{
  int n1, n2, n3, max;
  printf("请输入三个数,用空格分割: ");
  scanf("%d %d %d", &n1, &n2, &n3);
  max =  n1 > n2 ? ( n1 > n3 ? n1 : n3) : ( n2> n3? n2: n3);
  printf("最大值是:%d", max);
  return 0;
}

”:? “可以看作带有返回参数的函数,组合规律是,n1n2 n1n3 n2n3

第三种方法::?的宏定义

#include <stdio.h>
#define MAX(n1,n2,n3) (n1 > n2 ? ( n1 > n3 ? n1 : n3) : ( n2> n3? n2: n3))
int main()
{
  int n1, n2, n3, max;
  printf("请输入三个数,用空格分割: ");
  scanf("%d %d %d", &n1, &n2, &n3);
  max =  MAX(n1,n2,n3);
  printf("最大值是:%d", max);
  return 0;
}

宏定义仅仅是预编译阶段进行代码块的替换,不做语法检查,常用于固定常量的定义


第四种种方法:排序

代码(1)

#include <stdio.h>
#include <stdlib.h>
void bubble_sort(int arr[], int len) {
        int i, j, temp;
        for (i = 0; i < len - 1; i++)
                for (j = 0; j < len - 1 - i; j++)
                        if (arr[j] > arr[j + 1]) {
                                temp = arr[j];
                                arr[j] = arr[j + 1];
                                arr[j + 1] = temp;
                        }
}
int main() 
{
        int *arr =NULL,len,i,*p=NULL;
        printf("请问准备输入几个数字:\n");
        scanf("%d",&len);
        arr=(int *)calloc(len,sizeof(int));
        printf("请输入数字:中间已空格做区分\n");
        p=arr;
        for(i=0;i<len;i++)
            scanf("%d",arr++);
        bubble_sort(p, len);
        printf("%d ", *(p+len-1));
        return 0;
}

代码(2)

同上面排序方法仅仅是申请内存的方式不同

#include <stdio.h>
#include <stdlib.h>
void bubble_sort(int arr[], int len) {
        int i, j, temp;
        for (i = 0; i < len - 1; i++)
                for (j = 0; j < len - 1 - i; j++)
                        if (arr[j] > arr[j + 1]) {
                                temp = arr[j];
                                arr[j] = arr[j + 1];
                                arr[j + 1] = temp;
                        }
}
int main() 
{
        int len,i,*p=NULL;
        printf("请问准备输入几个数字:\n");
        scanf("%d",&len);
        int arr[len];
        printf("请输入数字:中间已空格做区分\n");
    
        for(i=0;i<len;i++)
            scanf("%d",arr[i]);
        bubble_sort(arr, len);
        printf("%d ", *(arr+len-1));
        return 0;
}

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值