问题描述
给定某整数数组和某一整数 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]<<" "; } }
|