char str[200] = {"109238475629020349ejlqjwlrqusfwkjrop345678<>jlsjf0293847348599357838237473728838383856"};
要求:iostream库,冒泡排序
供参考:
#include<iostream>
using namespace std;
int main()
{
int num[10] = {0,1,2,3,4,5,6,7,8,9}, cnt[10] = {0}, i, j, t;
char str[200] = {"109238475629020349ejlqjwlrqusfwkjrop345678<>"
"jlsjf0293847348599357838237473728838383856"};
for (i = 0;str[i]; i++){ // 统计
if (str[i] >= '0' && str[i] <= '9')
cnt[str[i] - '0']++;
}
for (i = 9; i > 0; i--){ // 排序
for (j = 0;j < i; j++){
if (cnt[j] < cnt[j + 1]) {
t = cnt[j], cnt[j] = cnt[j+1], cnt[j+1] = t;
t = num[j], num[j] = num[j+1], num[j+1] = t;
}
}
}
for (i = 0; i < 10; i++) // 输出 数字:出现次数
cout << num[i] << ":" << cnt[i] << endl;
return 0;
}
#include<iostream>
#include<string>
using namespace std;
int main()
{
string str;
getline(cin, str);
int nums[10] = {0};
for(int i = 0; i < str.size(); i++) {
if(isdigit(str[i])) { // 判断是否为数字
nums[str[i] - '0']++;
}
}
// 冒泡排序
for(int i=0;i<10;++i) {
for(int j=i+1;j<10;++j) {
if(nums[i]<nums[j]) {
swap(nums[i],nums[j]);
}
}
}
// 输出结果
for(int i = 0; i < 10; i++) {
if(nums[i]!=0) {
cout << i << ": " << nums[i] << "次" << endl;
}
}
return 0;
}