删除最大值——一个初一学生的问题

删除最大值

时间限制:1.000s

 

内存限制:128MB

 

题目描述

在一个数组中,请将这个数组的最大值删除(可能有多个最大值哦),数组中的数不可能全部相等,问删除后第x个位置的元素的值。

输入格式

有三行 第一行有一个整数n ( 5 <= n <= 100 ) 第二行有n个整数! 第三行有一个整数x(1<=x<n)

输出格式

一个整数,即删除最大值后第x个位置的元素的值。

样例输入content_copy

5
1 5 2 4 3
2

样例输出content_copy

2

题目链接:删除最大值 - 青岛图灵编程教育OJ 

可以把输入的n个数存入数组,然后计算出数组最大值,接着把除数组最大值外的其他元素的值存入一个备份数组,最后根据x的值来取出备份数组相应位置的元素值即可。

代码如下:

#include <stdio.h>

int main(void){
    
    int n;
    int arr[100],temp[100];
    int x;
    int i;
    int max;
    
    scanf("%d",&n); // 获取n的值 
    // 获取n 个数存入数组arr 
    for(i=0;i<n;i++){
        scanf("%d",&arr[i]);
        
        // 计算数组的最大值 
        if(i==0){
            max=arr[i];
        }else{
            
            if(max<arr[i]){
                max=arr[i];
            }    
            
        }
    } 
    scanf("%d",&x);  // 获取x的值 
    
    int j=0;
    // 把去除最大值后的其他数组元素存储到备份数组 
    for(i=0;i<n;i++){
        
        if(arr[i]!=max){
            temp[j]=arr[i];
            j++;
        }
    } 
    
    // 打印结果 
    if(x>j||x<=0){
        printf("x的值超出了数组范围!\n");
        return 0;
    }else{
        printf("%d",temp[x-1]);
    }
    
    return 0;
    
} 

img