从键盘输入3个整数a、b、c,求最大值和最小值

本文介绍了三种方法在Java中通过键盘输入获取三个整数a、b、c,并求出它们的最大值和最小值。方法包括使用三目运算符、逐一比较以及冒泡排序。对于少量数值的求解,推荐使用逐一比较的方法,简洁易懂。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    求最大最小值有很多种方法,在这里举例3种。

     首先是从键盘输入三个整数a、b、c

      Scanner input=new Scanner(System.in);
       int max,min;   
       int a=input.nextInt();
       int b=input.nextInt();
       int c=input.nextInt();

        第一种方法 :利用三目运算符:(表达式1)?(表达式2):(表达式3)来比较,原理当表达式1的结果为真时,整个

                            运算的结果为表达式2,反之则为表达式3
        max=((a>b)?a:b)>c?((a>b)?a:b):c;   //求最大值
        min=((a<b)?a:b)<c?((a<b)?a:b):c;   //求最小值
        System.out.println("min="+min+"\nmax="+max);


    第二种方法  设其中的一个数为最大最小值,再依次与其他值比较,

max=a;
if(max<b){
max=b;
}
if(max<c){
max=c;
}

min=a;
if(min>b){
min=b;
}
if(min>c){
min=c;
}
System.out.println("min="+min+"\nmax="+max);

     第三种方法 :利用排序的方法来解,将几个整数做为数组,再按照大到小或小到大来排序,取出首尾就是最大最                             小值。这里用的是冒泡排序
int[] arr={a,b,c};
for (int i = 0; i < arr.length-1; i++) {
for (int j = 0; j < arr.length-i-1; j++) {
if(arr[j]>arr[j+1]){
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
System.out.println("min="+arr[0]+"\nmax="+arr[arr.length-1]);

以上就是三种不同的方法,若是单纯的求最大最小值且只是几个数时,我个人认为第二种方法好,容易理解,又不容易错。

在C语言中,你可以通过以下几个步骤从键盘输入五个整数,然后计算并去掉最大值最小值后的平均数: 1. 首先,你需要定义一个数组来存储这五个整数,并初始化为0。例如,`int numbers[5] = {0};` 2. 然后使用`scanf()`函数获取用户输入的五个整数,记得给数组下标,如`numbers[i] = scanf("%d", &i);` 3. 接下来,遍历数组找到最大值最小值,可以分别用两个变量`max``min`记录,初始时设为数组的第一个元素。遍历时比较当前元素已知的最大值最小值。 4. 创建两个临时变量`temp_max``temp_min`用于存放暂时的最大值最小值,当发现新的最大值最小值时,更新这两个变量。 5. 当找到最大值最小值后,将数组的第一个元素(假设是最小值后一个元素(假设是最大值)置零,因为我们要删除它们。 6. 由于数组长度减少2,我们需要重新计算剩余元素的总数量。使用一个新的变量`sum`记录总,`count`记录剩下的有效元素。 7. 计算剩余元素的平均值,即`average = sum / (count - 2)`。 8. 后,打印出计算出的平均值。 以下是示例代码片段: ```c #include <stdio.h> int main() { int numbers[5], i, max, min, temp_max, temp_min, sum = 0, count = 5; // 初始化数组 for (i = 0; i < 5; i++) { numbers[i] = scanf("%d", &i); if (i == 0) { max = min = numbers[i]; } else { if (numbers[i] > max) { temp_max = max; max = numbers[i]; } else if (numbers[i] < min) { temp_min = min; min = numbers[i]; } } } // 更新最大值最小值的位置 numbers[0] = temp_min; numbers[count - 1] = temp_max; // 删除最大值最小值 count -= 2; // 计算新平均值 for (i = 1; i < count; i++) { sum += numbers[i]; } double average = (double) sum / count; printf("去掉最大值最小值后的平均数是 %.2f\n", average); return 0; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值