第一题:字符串逆序数(100分)
问题描述:
计算并返回字符串a的逆序。逆序的概念:在一个字符串中,如果存在i<j,且a[i]>a[j],则称a[i]和a[j]构成一个逆序。例如"DAABEC"的逆序是5,其中D与A、A、B、C构成4个逆序,E与C构成1个逆序。
输入描述
输入一个字符串,长度不超过100。输出描述
输出一个整数,为输入字符串的逆序数目。
输入样例
DAABEC
输出样例
5
#include<iostream>
using namespace std;
int main() {
int num = 0;
char ch[101];
cin >> ch;
for (int i = 0; ch[i] != 0; i++) {
for (int j = i; ch[j] != 0; j++) {
if (ch[i] > ch[j]) num++;
}
}
cout << num;
return 0;
}
第二题:字符串中整数之和(100分)
问题描述:
输入一条字符串,将字符串中的数字之和计算。例如:输入字符串“abc100de200ef300”,则字符串中的数字分别为100、200和300,它们之和为600。
输入描述
输入一条字符串(长度不超过100)
输出描述
输出一个整数,为字符串中数字之和,后面不要输出空格。
输入样例
abc100de200ef300
输出样例
600
#include<iostream>
using namespace std;
void printChar(char ch[], int i, int k) {
while (i <= k) {
cout << ch[i];
i++;
}
cout << endl;
}
int num;
void charToInt(char ch[], int j, int k) {
int num1 = 0;
while (j <= k) {
num1 *= 10;
num1 += ch[j] - '0';
j++;
}
num += num1;
}
int main() {
char ch[101];
cin >> ch;
for (int i = 0; ch[i] != 0; i++) {
if (ch[i] > '0' && ch[i] <= '9') {
int k = i;
while (ch[k] >= '0' && ch[k] <= '9') k++;
k--;
//printChar()函数可以打印出字符串中的字符。
//printChar(ch, i, k);
charToInt(ch, i, k);
i = k;
}
}
cout << num;
return 0;
}
第三题:(感谢大佬提供清奇的思路~大佬NB ~)
字符集合(100分) 问题描述
一个集合set中的各个元素相互之间不相等。编写程序从字符串中取出相互不等的字符,就构成一个字符集合。
输入描述
输入一条字符串(长度不超过100)
输出描述
依次输出字符集合中的字符,后面不要输出空格。字符按字符串中第一次出现的位置排序。
输入样例
rthfgnhgkufgd
输出样例
rthfgnkud
#include<iostream>
using namespace std;
int main() {
char ch[100];
cin >> ch;
cout << ch[0];
for (int i = 1; ch[i] != 0; i++) {
bool FLAG = true;
for (int j = 0; j < i; j++) {
if (ch[i] == ch[j]) FLAG = false;
}
if (FLAG) cout << ch[i];
}
return 0;
}
本文介绍三道编程题目,涉及字符串逆序数计算、字符串内整数求和及字符集合提取。通过实际代码示例,帮助读者掌握相关算法实现。
5222

被折叠的 条评论
为什么被折叠?



