文章目录:
- 简单版:
- 三个数找最大值简单版
- 三个数找最大值
- 三个数字找最大值以及最小值。
- 进阶版:
- 从三个数字找最大值与数组的搭配。
- 数组找最大值以及最小值。
- 从三个数字找最大值指针版本(数组)。
- 指针三个数找最大值笨办法
- 三目运算符号(简单版):
- 三目运算符号(==数组版本==)
大家好我是内向的代码。
使用软件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;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
三个数找最大值
先假定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);
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
三个数字找最大值以及最小值。
#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);
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
大家是否觉得这样子太过于繁琐毕竟如果只是几个人还好如果是几百个人呢那么这里就需要我们的数组了也就不必要一个一个去定义这样也极大的节省了时间。
我相信读者们肯定可以看懂所以我们来拓展一下思路。
进阶版:
从三个数字找最大值与数组的搭配。
== 如果要写最小那么把重要函数换一下大于变小。==
#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=%d\n", max);
return 0;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
数组找最大值以及最小值。
#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;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
数组小知识下标一般是从0开始计算的。
接下来再进阶
从三个数字找最大值指针版本(数组)。
#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;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
指针三个数找最大值笨办法
#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);
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
三目运算符号(简单版):
思路是:直接以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;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
直接以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;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
因为我们知道找最大值肯定并不是只找两三个那么我们的三目运算符号也可以用来使用数组
详细请看下方代码。
三目运算符号(数组版本)
*#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);
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
关于上方的代码我有一点要说如果你要自己输入几个数字去判定最大值那么就不要使用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;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
判断数字的最大值或者最小值只需要一个循环去下标比一个比一个。
首先是最大值:第一个数是最大值就存入max那么就继续与下一个进行比较直到不能比较。
最小值:一个比一个谁小就存入min中
注意:是下标不是元素
😭😭😭😭😭😭😭😭😭😭😭
好累!!!!!
如果读者觉得扩展了您的思维麻烦点个关注订阅或者点亮一下红心。
这样子才会给小编更多的动力。
谢谢您了。
文章知识点与官方知识档案匹配,可进一步学习相关知识
算法技能树首页概览42563 人正在系统学习中