C语言三个数字比大小详细写法合集比细狗还细(12种方法还不够你用吗)


大家好我是内向的代码。
使用软件devc++
以下都是小编我个人总结的一些常见以及不常见的 找最大值以及最小值希望各位读者不要吝啬自己的赞点击关注是小编坚持更新的动力!在此谢谢大家了。

简单版:

三个数找最大值简单版

#include<stdio.h>
int max(int a,int b)
{
	return a>b?a:b;//约等于if(a>b)  a=b;a就是b的值 
}
int main(){
	int a,b,c;
	int max;
	while(scanf("%d%d%d",&a,&b,&c)==3)//死循环三次;
	{
		printf("%d",max(max(a,b),c));//先跟a以及b比较再跟c比较最后得出最大值
		//max对应上面函数的max儿括号里面的max也是对应上面的max才能进行比较最后与c比较。 
	 } 
	 return 0;
} 

三个数找最大值

先假定i是最大数。
(笨方法以此类推假定两个是最大值最后比较)

#include<stdio.h>//从三个人里面选出最大的那个 
int main(){
	int i,j,t,max=0;
	scanf("%d%d%d",&i,&j,&t);
	max=i;
	if(max<j){
	max=j;
}
    if(max<t)
    {
    	max=t;
	}
	printf("max=%d",max);
}

三个数字找最大值以及最小值。

#include<stdio.h>//从三个人里面选出最大的那个 
int main(){
	int i,j,t,max,min;
	scanf("%d%d%d",&i,&j,&t);
	if(i>j){
	max=i;
}
	else{
	max=j;	
}
	if(max<t) 
	{
	max=t;
}

	if(i<j)
	{
	min=i;
}
    else{
    min=j;
}
  if(min>t)
  {
  min=t;
}
	printf("max=%d min=%d",max,min);
}

大家是否觉得这样子太过于繁琐毕竟如果只是几个人还好如果是几百个人呢那么这里就需要我们的数组了也就不必要一个一个去定义这样也极大的节省了时间。

我相信读者们肯定可以看懂所以我们来拓展一下思路。

进阶版:

从三个数字找最大值与数组的搭配。

#include <stdio.h>
int main()
{
	int cd;
	int arr[20];
	int i, j;
	int max = arr[20];
	printf("请输入数组长度:n");
	scanf("%d" , &cd);	
	printf("请输入数字记得空格:");  
	for (i = 0; i <cd;i++)//循环i<你所输入的数字。	

	{
	printf("请输入%d个数字",i+1);//或者++a都可以实现输入的加一。
    scanf("%d",&arr[i] );//开始输入几个数字 
	}
	for ( j = 0;j < cd;j++) //开始循环把上面的值带入然后进行比较。 
	{  
	if (max < arr[j])  //循环套条件。 
	{    
	max = arr[j];
	} 
	} 
	printf("最大值max=%dn", max);
	return 0;
}

这样子就可以实现在多个的人中找到最大值了,当然如果你想要找一个最小值你只需要把小于变成大于就行了。

数组找最大值以及最小值。

#include<stdio.h>//写一个只要最大值的数组。 
int main(){
	int min=10000000,max=0,j;//min写这么大是因为不写的话条件不知道成不成立。
	int n;
	printf("您想输入几个数字:"); 
 	scanf("%d",&n);//给数组赋值你要从几个数字找最大值。	
    int a[n];//进去了		
	for(j=0;j<n;j++)//开始循环输入的值 
	{  
	printf("请输入第%d个数字",j+1);//给%d依次加一直到小于n的值才停下来。 
	scanf("%d",&a[j]);//输入值。 
if(max<a[j])//条件成立最大值就是max 
max=a[j];
if(min>a[j])//条件也成立因为赋值是0肯定也成立。 
min=a[j];
}//括号退出生命结束
//保存了输出的值再往下输出
//不能放进循环否则只能输出一次。且得不到正确答案。
printf("min=%dmax= %d",min,max);
return 0;
}

等等你不会以为数组就这样子结束了吧!
数组小知识。
数组一般是从0开始的也即是起始地址并且我们再调用数组的时候也就是相当于调用指针也就是解引用操作举一个例子你就知道了。
*p == *p 而**p ==p。
接下来再进阶

从三个数字找最大值指针版本(数组)。

#include<stdio.h>
#define n 3 
int main(){
	int i,max,min=100; 
	int a[n];
	printf("请输入三个数字");
	for(i=0;i<n;i++) 
	{
	scanf("%d",&a[i]);
	int *p=&a[i];//将数组的地址值放在指针p里面
	//利用指针进行条件判断。
	if(max<*p)
	max=*p;
	if(min>*p)
	min=*p;    
}
printf("max=%dmin=%d",max,min);
return 0;
}

指针三个数找最大值笨办法

#include<stdio.h>//最笨的方法。
int main(){
	int i,j,z,max,*pi,*pj,*pz,*pmax;
	pi=&i;
	pj=&j;
	pz=&z;
	pmax=&max;
	printf("请输入三个整数:");
	scanf("%d%d%d",&i,&j,&z);
	if(*pi>*pj){
	*pmax=*pi;
}
	else {
	*pmax=*pj;
}
    if(*pmax<*pz)
    {
    	*pmax=*pz;
	}
	printf("max=%d",*pmax);
} 

三目运算符号(简单版):

思路是:直接以a为最大值最后输出a就好了原理与下方代码一样。

#include<stdio.h>
int main(){
	int a,b,c;
	scanf("%d%d%d",&a,&b,&c);
	a=(a>b)?a:b;
	a=(a>c)?a:c;
	printf("%d",a);
	return 0;
}

直接以max为最大值(有三个数一个是最大值那么其他两个比较就行了)。

#include<stdio.h>
int main(){
	 int i=3,j=2,z=4,max=0;
	 max=(i>j) ? i:j;
	 max=(max>z)?max:z;
	 printf("%d",max);
	 return 0;
} 

因为我们知道找最大值肯定并不是只找两三个那么我们的三目运算符号也可以用来使用数组
详细请看下方代码。
三目运算符号(数组版本)

*#include<stdio.h>
#define n 3//这是常量无法被改变的量,放进了n里面也就是三个。
int main(){
    int i,j,z,max;
    int a[n];
    printf("请输入三个数字:");
    for(i=0;i<n;i++)
    {
    	scanf("%d,",&a[i]);
	}
	for(j=0;j<n;j++)
	{
		max=(max[j])?max:a[j];
	}
	
	printf("%d",max);
}

关于上方的代码我有一点要说如果你要自己输入几个数字去判定最大值那么就不要使用define
直接使用循环
。下方的代码就是你自己去输入你要从几个数字找最大值。

#include<stdio.h> 
int main(){
	int min=10000000,max=0,j;
	int n;
	printf("您想输入几个数字:"); 
 	scanf("%d",&n);	
    int a[n];		
	for(j=0;j<n;j++) 
	{  
	printf("请输入第%d个数字",j+1);
	scanf("%d",&a[j]);
max=(max>a[j])?max:a[j];
min=(min<a[j])?min:a[j];
}
printf("min=%dmax= %d",min,max);
return 0;
}

补充说明

我们在进行数组的比较时候我们计算机不是直接看的元素而是下标。 而下标又往往是从0开始的也就是首地址。 记住数组其实也是一个指针。
我们在传递数据的时候往往是从下标的第一个数据开始传输。 第二眼计算机才看得到你的元素。 所以我们在写数组的时候往往要写一些循环。

有疑问的小伙伴们可以直接在评论区留言哟我会看的?????
咱们下期再见。