蓝桥杯 ALGO-50算法训练 数组查找及替换

问题描述
  给定某整数数组和某一整数b。要求删除数组中可以被b整除的所有元素,同时将该数组各元素按从小到大排序。如果数组元素数值在A到Z的ASCII之间,替换为对应字母。元素个数不超过100,b在1至100之间。
输入格式
  第一行为数组元素个数和整数b
  第二行为数组各个元素
输出格式
  按照要求输出
样例输入
7 2
77 11 66 22 44 33 55
样例输出
11 33 55 M
【分析】根据题意,首先需要先遍历数组元素,找出不能被b整除的数,由于新的数组元素的数目具有不确定性,因此适合用集合来存贮符合条件的数值,接下来对集合元素进行排序(用Collection.sort()),然后找出元素在A-Z之间的数值,转换成字母输出即可
【参考代码】
C++

#include<iostream>
#include<algorithm>
using namespace std;
int arr[100];
int main()
{
    int n,b;
    int i,j;
    cin>>n>>b;
    for(i=0;i<n;i++)
    {
        cin>>arr[i];
        if(arr[i]%b==0)
            arr[i]=0;
    }
    sort(arr,arr+n);
    for(i=0;i<n;i++)
    {
        if(arr[i])
        {
            if(arr[i]>=65 &&arr[i]<=90)
            {
                cout<<char(arr[i])<<" ";
            }
            else
                cout<<arr[i]<<" ";
        }
    }
    return 0;
}

C:

#include <stdio.h> 
#include <stdlib.h> 
void del(int a[],int *len,int m) 
{     int i,j; 
    for(i=0;i<*len;i++) 
        if(a[i]%m==0) 
        { 
            for(j=i;j<*len;j++) 
                a[j]=a[j+1]; 
            (*len)--; 
            i--; 
        } 
} 

int cmp(const void *a,const void *b) 

{ 

    return *(int *)a-*(int *)b; 

}  

int main() 

{ 

    int a[101]={},i,m,n; 

    scanf("%d%d",&n,&m); 

    for(i=0;i<n;i++) 

        scanf("%d",&a[i]); 

    del(a,&n,m); 

    qsort(a,n,sizeof(a[0]),cmp); 

    for(i=0;i<n;i++) 

    { 

        if(a[i]>=65&&a[i]<=90) 

            printf("%c ",a[i]); 

        else 

            printf("%d ",a[i]); 

    } 

   return 0; 

}

Java:

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        while (scanner.hasNext()) {
            int n = scanner.nextInt();
            int b = scanner.nextInt();

            List<Integer> nums = new ArrayList<>();
            for (int i = 0; i < n; i++) {
                int temp = scanner.nextInt();
                if (temp % b != 0) {
                    nums.add(temp);
                }
            }

            Collections.sort(nums);

            for (int i = 0; i < nums.size(); i++) {
                if (nums.get(i) >= 'A' && nums.get(i) <= 'Z') {
                    int temp = nums.get(i);
                    char ch = (char) temp;
                    System.out.print(ch);
                } else {
                    System.out.print(nums.get(i));
                }
                System.out.print(i == nums.size() - 1 ? "\r\n" : " ");
            }
        }
    }
}
    原文作者:查找算法
    原文地址: https://blog.csdn.net/linmengmeng_1314/article/details/79744305
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞