第一部分 C++语言
第五章 数组
第三节 字符类型和字符数组
1129 统计数字字符个数
#include <iostream>
using namespace std;
int main() {
char ch;
int cnt = 0;
while (cin >> ch) {
if (ch >= '0' && ch <= '9') cnt ++;
}
cout << cnt << endl;
return 0;
}
1130 找第一个只出现一次的字符
#include <iostream>
using namespace std;
int main() {
string s;
int a[26] = {};
cin >> s;
for (int i = 0; i < s.size(); i ++ ) {
a[s[i]-'a'] ++;
}
for (int i = 0; i < s.size(); i ++ ) {
if (a[s[i]-'a'] == 1) {
cout << s[i] << endl;
return 0;
}
}
cout << "no" << endl;
return 0;
}
1131 基因相关性
#include <iostream>
using namespace std;
int main() {
double x;
string a, b;
int cnt = 0;
cin >> x >> a >> b;
for (int i = 0; i < a.size(); i ++ ) {
if (a[i] == b[i]) cnt ++;
}
if (1.0*cnt/a.size() >= x) cout << "yes" << endl;
else cout << "no" << endl;
return 0;
}
1132 石头剪刀布
#include <iostream>
using namespace std;
int main() {
int n;
string p1,p2;
cin >> n;
while (n--) {
cin >> p1 >> p2;
if (p1 == p2) cout << "Tie" << endl;
if (p1 == "Rock" && p2 == "Scissors") cout << "Player1" << endl;
if (p1 == "Rock" && p2 == "Paper") cout << "Player2" << endl;
if (p1 == "Scissors" && p2 == "Rock") cout << "Player2" << endl;
if (p1 == "Scissors" && p2 == "Paper") cout << "Player1" << endl;
if (p1 == "Paper" && p2 == "Scissors") cout << "Player2" << endl;
if (p1 == "Paper" && p2 == "Rock") cout << "Player1" << endl;
}
return 0;
}
1133 输出亲朋字符串
#include <iostream>
using namespace std;
int main() {
string s;
getline(cin, s);
for (int i = 0; i < s.size(); i ++ ) {
cout << char(s[i] + s[(i+1)%s.size()]);
}
return 0;
}
1134 合法C标识符
#include <iostream>
using namespace std;
int main() {
string s;
cin >> s;
if (s[0] >= '0' && s[0] <= '9') {
cout << "no" << endl;
return 0;
}
for (int i = 0; i < s.size(); i ++ ) {
bool judge = (s[i] >= '0' && s[i] <= '9') || (s[i] >= 'a' && s[i] <= 'z') || (s[i] >= 'A' && s[i] <= 'Z') || s[i] == '_';
if (!judge) {
cout << "no" << endl;
return 0;
}
}
cout << "yes" << endl;
return 0;
}
1135 配对碱基链
#include <iostream>
using namespace std;
int main() {
string s;
cin >> s;
for (int i = 0; i <= s.size(); i ++ ) {
if (s[i] == 'A') cout << 'T';
if (s[i] == 'T') cout << 'A';
if (s[i] == 'G') cout << 'C';
if (s[i] == 'C') cout << 'G';
}
return 0;
}
1136 密码翻译
#include <iostream>
using namespace std;
int main() {
string s;
getline(cin, s);
for (int i = 0; i < s.size(); i ++ ) {
if (s[i] >= 'a' && s[i] <= 'z') {
s[i] = (s[i]-'a'+1) % 26 + 'a';
}
else if (s[i] >= 'A' && s[i] <= 'Z') {
s[i] = (s[i]-'A'+1) % 26 + 'A';
}
}
cout << s;
return 0;
}
1137 加密的病历单
#include <iostream>
using namespace std;
int main(){
string s;
char c;
cin >>s;
for (int i = s.size()-1; i >= 0; i -- ) {
c = s[i];
if (c < 'a'){
cout << char((c-'A'+3) % 26 + 'A' + 32);
}
else {
cout << char((c-'a'+3) % 26 + 'a' - 32);
}
}
return 0;
}
1138 将字符串中的小写字母转化成大写字母
#include <iostream>
using namespace std;
int main(){
string s;
getline(cin, s);
for (int i =0; i < s.size(); i ++ ){
if (s[i] >= 'a' && s[i] <= 'z') {
cout << char(s[i] - 32);
}
else {
cout << s[i];
}
}
return 0;
}
1139 整理药名
#include <iostream>
using namespace std;
int main(){
int n;
string s;
cin >> n;
while (n--) {
cin >> s;
if (s[0] >= 'a' && s[0] <= 'z') s[0] = s[0] - 32;
for (int i = 1; i < s.size(); i ++ ) {
if (s[i] >= 'A' && s[i] <= 'Z') s[i] = s[i] + 32;
}
cout << s << endl;
}
return 0;
}
1140 验证子串
#include <iostream>
using namespace std;
int main() {
string s1, s2;
cin >> s1 >> s2;
if (s2.find(s1) != -1) {
cout << s1 << " is substring of " << s2;
}
else if (s1.find(s2) != -1) {
cout << s2 << " is substring of " << s1;
}
else {
cout << "No substring";
}
return 0;
}
1141 删除单词后缀
#include <iostream>
using namespace std;
int main() {
string s;
cin >> s;
int len = s.size();
if (len <= 2) {
cout << s << endl;
}
else if (s.substr(len-2) == "er" || s.substr(len-2) == "ly") {
cout << s.substr(0, len-2) << endl;
}
else if (s.substr(len-3) == "ing") {
cout << s.substr(0, len-3) << endl;
}
else {
cout << s << endl;
}
return 0;
}
1142 单词的长度
#include <iostream>
using namespace std;
int main() {
string s;
bool flag = true;
while (cin >> s) {
if (flag) {
cout << s.size();
flag = false;
}
else {
cout << ',' << s.size();
}
}
return 0;
}
1143 最长最短单词
#include <iostream>
using namespace std;
int main() {
string s, a, b;
int cnt = 0, max = 0, min = 101;
getline(cin, s);
for (int i = 0; i < s.size(); i ++ ) {
int j = i;
while (j < s.size() && s[j] != ' ' && s[j] != ',') {
j ++;
}
if (j-i > max) {
max = j - i;
a = s.substr(i, j-i);
}
if (j-i < min && j-i != 0) {
min = j - i;
b = s.substr(i, j-i);
}
i = j;
}
cout << a << endl;
cout << b << endl;
return 0;
}
1144 单词反转
#include <iostream>
using namespace std;
int main() {
string s;
getline(cin, s);
for (int i = 0; i < s.size(); i ++ ) {
int j = i;
while (j < s.size() && s[j] != ' ') j ++ ;
for (int k = j - 1; k >= i; k -- ) cout << s[k];
cout << ' ';
i = j;
}
return 0;
}
1145 字符串p型编码
#include <iostream>
using namespace std;
int main() {
string s;
cin >> s;
for (int i = 0; i < s.size(); i ++ ) {
int j = i + 1;
while (j < s.size() && s[j] == s[j-1]) {
j ++ ;
}
cout << j-i << s[i];
i = j - 1;
}
return 0;
}
1146 判断字符串是否为回文
#include <iostream>
using namespace std;
int main() {
string s;
cin >> s;
for (int i = 0, j = s.size()-1; i < j; i ++, j -- ) {
if (s[i] != s[j]) {
cout << "no" << endl;
return 0;
}
}
cout << "yes" << endl;
return 0;
}
1147 最高分数的学生姓名
#include <iostream>
using namespace std;
int main() {
int n, score, max = 0;
string name, ans;
cin >> n;
for (int i = 0; i < n; i ++ ) {
cin >> score >> name;
if (score > max) {
max = score;
ans = name;
}
}
cout << ans << endl;
return 0;
}
1148 连续出现的字符
#include <iostream>
#include <cstdio>
using namespace std;
int main() {
int k;
string s;
scanf("%d\n", &k);
getline(cin, s);
for (int i = 0; i < s.size(); i ++ ) {
int j = i + 1;
while (j < s.size() && s[j] == s[j-1]) j ++ ;
if (j-i >= k) {
cout << s[i] << endl;
return 0;
}
i = j - 1;
}
cout << "No" << endl;
return 0;
}
1149 最长单词2
#include <iostream>
#include <cstdio>
using namespace std;
int main() {
string s, ans;
while (cin >> s) {
if (s[s.size()-1]=='.') s = s.substr(0, s.size()-1);
if (s.size() > ans.size()) ans = s;
}
cout << ans << endl;
return 0;
}
如果您的孩子四年级及以上,对计算机编程感兴趣,且文化课学有余力,欢迎联系客服(微信号:xiaolan7321),参加信息学的学习。我们是专业的信息学竞赛教练,采用线上小班授课的方式,目标是帮助热爱编程的中小学生,在国内外信息学竞赛中取得优秀成绩。
教学特点:
-
线上小班授课,打好代码基础。避免大班课堂上学生要么“跟不上”,要么“吃不饱”的问题。
-
教学经验丰富,熟悉学生的知识结构与学习能力,合理安排进度。
-
以赛代练,通过考级与比赛,不断提高学生能力。