• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

初阶C语言整数比大小

武飞扬头像
小小娥子
帮助1

 各位大佬的光临已是上上签

C语言刷题过程中,一定遇到过很多比大小的题目,那么本节就专门介绍比大小的方法,若大佬们还有更优解,欢迎补充呀!

本节讲解的方法主要有三种:1.条件判断  2.三目操作符  3.函数调用    4.数组判断

从两个数到多个数比较大小,其中,当有多个数比较的时候,利用数组的性价比达到最高。

一、两个数比大小

     我们先来两个数比较大小,慢慢进入状态。

题目:用C语言代码完成两个数的比较大小

解法1:

          选择语句(if...esle

我们先看代码:

  1.  
    #include<stdio.h>
  2.  
    int main()
  3.  
    {
  4.  
    int a = 0;
  5.  
    int b = 0;
  6.  
    printf("请输入要比较大小的两个数\n");
  7.  
    scanf("%d%d",&a,&b);
  8.  
    int max = 0;//定义第三变量,用来存放较大的数
  9.  
    if (a > b)//选择语句,不是a就是b
  10.  
    max = a;
  11.  
    else
  12.  
    max = b;
  13.  
    printf("%d\n",max);//打印一下最大值
  14.  
    return 0;
  15.  
    }
学新通

运行结果:学新通

     第一种方法是比较简单,而且比较容易想到的。

解法2:

           三目运算符(exp1?exp2:exp3

我们先介绍一下三目操作符:exp1,2,3分别是三个表达式。如果表达式1为真,则执行表达式2;如果表达式1为假,则执行表达式3的内容。

图解: 

学新通

 介绍完成,我们看代码:

  1.  
    #include<stdio.h>
  2.  
     
  3.  
    int main()
  4.  
    {
  5.  
    int a = 0;
  6.  
    int b = 0;
  7.  
    printf("请输入要比较大小的两个数\n");
  8.  
    scanf("%d%d",&a,&b);
  9.  
    int max = 0;//以上的代码都是一样的
  10.  
    max = a > b ? a : b;//这里需要用max接收它们的运行结果
  11.  
    printf("%d\n",max);
  12.  
    return 0;
  13.  
    }

运行结果:学新通

 这种相比选择语句的判断来说,代码量更加的简洁。

解法3:

          函数调用法(利用函数返回值)

这种方法相比上面的来说略向多余,不过我们也要了解一下。

我们直接看代码:

  1.  
    #include<stdio.h>
  2.  
    int Max(int x,int y)//定义两个形参接收实参
  3.  
    {
  4.  
    if (x > y)
  5.  
    return x;//这里可以直接返回最大值
  6.  
    else
  7.  
    return y;//x的值相当于a,y相当于b
  8.  
    }
  9.  
    int main()
  10.  
    {
  11.  
    int a = 0;
  12.  
    int b = 0;
  13.  
    printf("请输入要比较大小的两个数\n");
  14.  
    scanf("%d%d", &a, &b);
  15.  
    int max = 0;
  16.  
    max=Max(a,b);//这里把需要比较的数作为实参传给函数
  17.  
    printf("%d\n",max);
  18.  
    return 0;
  19.  
    }
学新通

 运行结果:学新通

该函数体内部也可以这么写:

  1.  
    int Max(int x, int y)
  2.  
    {
  3.  
    return x > y ? x : y;
  4.  
    }

 整体的运行结果是一样的,不过第二种写法依然简洁。

二、三个数比大小

题目:用C语言代码比较出三个整数的最大值

解法1:

        选择语句(if...else

这里的写法与两个数比大小大体上相同,但是细微之处有差异

我们直接看代码:

  1.  
    #include<stdio.h>
  2.  
    int main()
  3.  
    {
  4.  
    int a = 0, b = 0, c = 0;
  5.  
    printf("请输入三个数\n");
  6.  
    scanf("%d%d%d",&a,&b,&c);
  7.  
    int max = 0;//定义最大值
  8.  
    if (a > b)
  9.  
    max = a;
  10.  
    else
  11.  
    max = b;//先找出两个数的最大值
  12.  
    if (c > max)//再用最大值跟c比较
  13.  
    max = c;//c大,再把c赋值为最大值;否则不需要改变
  14.  
    printf("max=%d\n",max);
  15.  
    return 0;
  16.  
    }
学新通

运行结果:学新通

 解法2:

           三目运算符(exp1?exp2:exp3

这里需要改变的思路跟上面的如出一辙,都是先比较出两个数中的最大值。

代码写法:

  1.  
    #include<stdio.h>
  2.  
    int main()
  3.  
    {
  4.  
    int a = 0, b = 0, c = 0;
  5.  
    printf("请输入三个数\n");
  6.  
    scanf("%d%d%d", &a, &b, &c);
  7.  
    int max = 0;//定义最大值
  8.  
    max = a > b ? a : b;//先比较两个数的最大值
  9.  
    max = c > max ? c : max;//再拿第三个数和最大值比较
  10.  
    printf("max=%d\n", max);
  11.  
    return 0;
  12.  
    }

运行结果学新通

 对比两种代码量:我们的三目运算符大哥依旧稳定发挥

解法3:

          函数调用

这种方法就是把解法1,2套到函数里面,思路如出一辙,这里我们就不细说了,想了解的话可以私信我呀!

三、四个数及以上

讲解到这里,也是到本节的重点内容了;我们直接往下看。

题目:输入4个整数,找出最大值

分析:与三个数比较大小的思想一样,需要先找出部分数的大小,再与剩下的数比较

解法1:

        选择语句(if...esle

直接看代码:

  1.  
    #include<stdio.h>
  2.  
    int main()
  3.  
    {
  4.  
    int a = 0, b = 0, c = 0, d = 0;
  5.  
    printf("请输入四个数\n");
  6.  
    scanf("%d%d%d%d", &a, &b, &c, &d);
  7.  
    int max1 = 0,max2=0;
  8.  
    int max = 0;
  9.  
    if (a > b)//找出ab中较大的数
  10.  
    max1 = a;
  11.  
    else
  12.  
    max1 = b;
  13.  
    if (c > d)//找出cd中较大的数
  14.  
    max2 = c;
  15.  
    else
  16.  
    max2 = d;
  17.  
    if (max1 > max2)//找出max1和max2中较大的数
  18.  
    max = max1;
  19.  
    else
  20.  
    max = max2;
  21.  
    printf("%d\n", max);
  22.  
     
  23.  
    return 0;
  24.  
    }
学新通

运行结果:学新通

 总的来说就是一个整体法,看成三组两个数比较大小。

解法2:

         三目操作符(exp1?exp2:exp3

我们直接看代码:

  1.  
    #include<stdio.h>
  2.  
    int main()
  3.  
    {
  4.  
    int a = 0, b = 0, c = 0, d = 0;
  5.  
    printf("请输入四个数\n");
  6.  
    scanf("%d%d%d%d", &a, &b, &c, &d);
  7.  
    int max1 = 0, max2 = 0;
  8.  
    int max = 0;
  9.  
    max1 = a > b ? a : b;//各自比较
  10.  
    max2 = c > d ? c : d;//
  11.  
    max = max1 > max2 ? max1 : max2;
  12.  
    printf("%d\n", max);
  13.  
    return 0;
  14.  
    }

运行结果:学新通

总结:以上两种解法都是两两比较大小,得出两个数再比较大小。 

 我们可以看到,三目运算法的代码量依旧很少;但是如果比较5个数?10个数呢?甚至更多呢?难道只能这样比较吗?答案当然不是的,这里有一种方法,数越多,效率越快,就是数组 循环的方法。

解法3:

        我们先介绍该方法的主要思想:假设,一个健身两年半的同学在班里面说,我们班需要有一个大哥,作为领头人,决出的方法就是一个一个地对打,最后面胜出的为大哥。这个时候,有5个同学同学自认为自己很屌,站了出来。这个时候,假设健身两年半的是擂主,每次上去跟他对打,赢的同学作为擂主,再跟下一个同学对打,直到最后一个人胜出(假设对打不消化能量)

图解:学新通

 C语言思想:先假定一个最大值,剩下的值一个一个地与最大值比较,大于最大值就交换,小于直接比较下一个。

代码:

  1.  
    #include<stdio.h>
  2.  
    int main()
  3.  
    {
  4.  
    int arr[6] = { 10,20,-20,63,12,3 };//把需要比较的数放进一个数组里
  5.  
    //需要比较多少个数可以自己决定
  6.  
    int max = arr[0];//直接把第一个数(10)假设为最大值
  7.  
    int i = 1;//只需要从第二个开始比较
  8.  
    for (i=1;i<6;i )
  9.  
    {
  10.  
    if (max < arr[i])
  11.  
    max = arr[i];//比max大就交换,反之不用
  12.  
    }
  13.  
    printf("max=%d\n",max);
  14.  
    return 0;
  15.  
    }
学新通

运行结果:学新通

 上述方法可以比较多个数的大小,10个,100个都没有问题,只需要适当修改数组大小和循环的次数即可。

注意:本章介绍的比较大小都是整数,小数不可以使用,需要把int改成double等一系列调整。另外,int存放的值不易太大,会越界。

四、总结

1.比较大小的通用方法是数组 循环

2.数字少时,三目运算符的代码较简便

3.两种思想:两两比较和先确定最大值


这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhfjgejk
系列文章
更多 icon
同类精品
更多 icon
继续加载