数组查找及替换

问题描述

  给定某整数数组和某一整数 b。要求删除数组中可以被 b 整除的所有元素,同时将该数组各元素按从小到大排序。如果数组元素数值在 A 到 Z 的 ASCII 之间,替换为对应字母。元素个数不超过 100,b 在 1 至 100 之间。

输入格式

  第一行为数组元素个数和整数 b
  第二行为数组各个元素

输出格式

  按照要求输出

样例输入

7 2
77 11 66 22 44 33 55

样例输出

11 33 55 M

问题分析

  1. 需要懂得排序

    这里我用冒泡排序,当然使用头文件 “#include” 中已有的排序函数 “Collection.sort ()” 也行。

  2. 需要懂得输出对应 ASCII 码值对应的字符

    使用 cout<<(char) A [i] 将数值转换为对应的字符。(A [i] 为你设定的数组)

参考代码

C++

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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include <iostream>
using namespace std;

int main()
{
//输入数据
int n,b;
cin>>n>>b;
int A[n];
for(int i=0; i<n; i++)
cin>>A[i];

//冒泡排序
int temp=0;
for(int i=0; i<n-1; i++)
{
for(int j=0; j<n-1-i; j++)
if(A[j]>A[j+1])
{
temp=A[j];
A[j]=A[j+1];
A[j+1]=temp;
}
}

//删除能被b整除的数
for(int i=0; i<n; i++)
{
if(A[i]%b==0)
{
for(int j=i; j<n; j++)
A[j]=A[j+1];
n-=1;//删除一个总数据 n 减一个
}
}

//输出数据
for(int i=0; i<n; i++)
{
if(A[i]>='A' && A[i]<='Z') //在‘A’到‘Z’对应的ASCII码值之间时转换成字母
cout<<char(A[i])<<" ";
else
cout<<A[i]<<" ";
}
}