P5733 【深基6.例1】自动修正
#include<stdlib.h>
#include<iostream>
#include<cstring>
using namespace std;
char str[10000];
int main() {
cin >> str;
for (int i = 0; i < strlen(str); i++) {
if (str[i] >= 'a' && str[i] <= 'z')
str[i] -= 32;
cout << str[i];
}
return 0;
}
#include<stdlib.h>
#include<iostream>
#include<cstring>
using namespace std;
string str;
int main() {
cin >> str;
for (int i = 0; i < str.size(); i++) {
if (str[i] >= 'a' && str[i] <= 'z')
str[i] = toupper(str[i]);
cout << str[i];
}
return 0;
}
P1914 小书童——凯撒密码
#include<stdlib.h>
#include<iostream>
#include<cstring>
using namespace std;
string str;
int n;
int main() {
cin >> n>> str;
for (int i = 0; i < str.size(); i++) {
if (str[i] >= 97 && str[i] <= 122 - n)
str[i] += n;
else if (str[i] > 122 - n)
str[i] = 96 + (n - (122 - int(str[i])));
cout << str[i];
}
//a是97,z是122
return 0;
}
P1125 [NOIP2008 提高组] 笨小猴 题解
#include<stdlib.h>
#include<iostream>
#include<cstring>
using namespace std;
string str;
int ans[123], maxn = 0, minn = 1000;
int is_prime(int num) {
for (int i = 2; i < num; i++)
if (num % i == 0)
{
break;
return 0;
}
return 1;
}
int main() {
cin >> str;
for (int i = 0; i < str.size(); i++) {
ans[int(str[i])]++;
}
for (int i = 97; i < 123; i++) {
if (ans[i] > maxn)
maxn = ans[i];
else if (ans[i] < minn && ans[i] != 0)
minn = ans[i];
}
if (is_prime(maxn - minn) && (maxn - minn) != 1&& (maxn - minn) != 0)
cout << "Lucky Word\n" << maxn - minn;
else
cout << "No Answer\n" << "0";
return 0;
}
P1957 口算练习题
#include<stdlib.h>
#include<iostream>
#include<cstring>
using namespace std;
int n, num1, num2;
char type, line[1000];
int digit_length(int num) {
int cnt = 0;
if (num < 0) {
num = abs(num);
cnt++;
}
else if (num == 0) {
return 1;
}
for (int i=num; i > 0;cnt++) {
i = i / 10;
}
return cnt;
}
void process(char type, int num1, int num2) {
if (type == 'a') {
cout << num1 << "+" << num2 << "=" << num1 + num2 << endl;
cout << digit_length(num1) + digit_length(num2) + digit_length(num1 + num2) + 2 << endl;
}
else if (type == 'b') {
cout << num1 << "-" << num2 << "=" << num1 - num2 << endl;
cout << digit_length(num1) + digit_length(num2) + digit_length(num1 - num2) + 2 << endl;
}
else if (type == 'c') {
cout << num1 << "*" << num2 << "=" << num1 * num2 << endl;
cout << digit_length(num1) + digit_length(num2) + digit_length(num1 * num2) + 2 << endl;
}
}
int main() {
cin >> n;
for (int i = 0; i < n; i++) {
if (!(cin >> num1))//利用了cin的性质
{
cin.clear();
cin >> type >> num1;
}
cin >> num2;
process(type, num1, num2);
}
return 0;
}
P5015 [NOIP2018 普及组] 标题统计
#include<stdlib.h>
#include<iostream>
#include<string>
using namespace std;
string s;
int cnt = 0;
int main() {
getline(cin, s);//用getline函数读入一行
for (int i = 0; i < s.size(); i++) {
if (s[i] != ' ' && s[i] != '\n')
cnt++;
}
cout << cnt;
return 0;
}
P5734 【深基6.例6】文字处理软件
#include<stdlib.h>
#include<iostream>
#include<string>
using namespace std;
string s, str;
int n, a, b, q;
int main() {
cin >> q >> s;
for (int i = 0; i < q; i++) {
cin >> n;
if (n == 1) {
cin >> str;
s = s + str;
cout << s<<endl;
}
else if (n == 2) {
cin >> a >> b;
s = s.substr(a, b);
cout << s << endl;
}
else if (n == 3) {
cin >> a >> str;
s.insert(a, str);
cout << s << endl;
}
else if (n == 4) {
cin >> str;
if (s.find(str) < s.size())
cout << s.find(str) << endl;
else
cout << -1 << endl;
}
}
return 0;
}
P1308 [NOIP2011 普及组] 统计单词数
#include <iostream>
#include <string>
using namespace std;
string a, b;
int main() {
getline(cin, a);
getline(cin, b);
for (int i = 0; i < a.length(); ++i) {
a[i] = tolower(a[i]);
}
for (int i = 0; i < b.length(); ++i) {
b[i] = tolower(b[i]);
}
a = ' ' + a + ' ';
b = ' ' + b + ' ';
//先看看会不会找不到,用a.find()和string::npos
if (b.find(a) == string::npos) {
cout << -1 << endl;
}
//如果找得到
else {
int alpha = b.find(a);
int beta = b.find(a), s = 0;
while (beta != string::npos) {
++s;//计数器
beta = b.find(a, beta + 1);
}
cout << s << " " << alpha << endl;
}
return 0;
}
R128814774 记录详情
#include<iostream>
#include<stdlib.h>
#include<string>
using namespace std;
string s;
int num[26] = { 1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,4,1,2,3,1,2,3,4 };
int ans = 0;
int main() {
getline(cin, s);
for (int i = 0; i < s.size(); i++) {
if (s[i] >= 97 && s[i] <= 122)
ans = ans + num[s[i] - 97];
if (s[i] == ' ')
ans++;
}
cout<<ans;
}
P3741 honoka的键盘
#include<iostream>
#include<string>
using namespace std;
int num = 0, ans = 0;
string s;
int main()
{
cin >> num >> s;
for (int i = 0; i < s.size(); i++)
{
if (s[i] == 'V' && s[i + 1] == 'K')
{
ans++;
s[i] = 'X';
s[i + 1] = 'X';
}
}
for (int i = 0; i < s.size(); i++)
{
if (s[i] != 'X' && s[i] == s[i + 1])
{
ans++;
break;
}
}
printf("%d", ans);
return 0;
}
P1321 单词覆盖还原
#include<iostream>
#include<stdlib.h>
#include<string>
using namespace std;
int boy=0, girl=0, len;
string st;
int main()
{
getline(cin, st);
len = st.size();
for (int i = 0; i < len - 2; i++)
if (st[i] == 'b' || st[i + 1] == 'o' || st[i + 2] == 'y')boy++;
for (int i = 0; i < len - 3; i++)
if (st[i] == 'g' || st[i + 1] == 'i' || st[i + 2] == 'r' || st[i + 3] == 'l')girl++;
cout << boy << endl << girl;
return 0;
}
P1553 数字反转(升级版)
P1603 斯诺登的密码
#include<stdlib.h>
#include<iostream>
#include<algorithm>
using namespace std;
char dic[30][20] = { "zero","one","two","three","four","five","six","seven","eight","nine","ten","eleven","twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen", "twenty","a","both","another","first","second","third" };//对应
int di[30] = { 0,1,4,9,16,25,36,49,64,81,00,21,44,69,96,25,56,89,24,61,0,1,4,1,1,4,9 };
unsigned long long int a[10], top, flag;
int i, j;
char s[100];
int main()
{
for (i = 1; i <= 6; i++)
{
scanf("%s", &s);//%s读入遇到空格就停止
for (j = 1; j <= 26; j++)
{
if (!strcmp(s, dic[j]))//strcmp(s1,s2);如果他们相同,返回0
{
a[++top] = di[j];//用数组存储
break;//立即停止寻找
}
}
}
sort(a + 1, a + top + 1);//贪心,使越小的数越靠前输出
for (i = 1; i <= top; i++)
{
if (flag)//如果不是第一位
{
printf("%.2d", a[i]);//限制格式输出
}
else
{
if (a[i])
{
printf("%d", a[i]);
flag = 1;
}
}
}
if (!flag)
printf("0");//特判
return 0;
}
P1200 [USACO1.1] 你的飞碟在这儿 Your Ride Is Here
#include<iostream>
#include<stdlib.h>
#include<string>
using namespace std;
string fir, sec;
int pro1 = 1, pro2 = 1;
int main() {
getline(cin, fir);
getline(cin, sec);
for (int i = 0; i < fir.size(); i++) {
pro1 = pro1 * int(fir[i] - 64);
}
for (int i = 0; i < sec.size(); i++) {
pro2 = pro2 * int(sec[i] - 64);
}
if (pro1 % 47 == pro2 % 47)
cout << "GO";
else
cout << "STAY";
}
P1597 语句解析
#include <iostream>
#include <string>
using namespace std;
int a, b, c;
string s;
int main()
{
cin >> s;
for (int i = 0; i < s.size(); i += 5)
{
int vf;
char cvf = s[i + 3], cvt = s[i];
if (cvf == 'a') vf = a; //所赋值为a
else if (cvf == 'b') vf = b;
else if (cvf == 'c') vf = c;
else vf = cvf - '0';
if (cvt == 'a') a = vf;
if (cvt == 'b') b = vf;
if (cvt == 'c') c = vf;
}
cout << a << " " << b << " " << c; //输出
return 0;
}
P1598 垂直柱状图
#include<stdlib.h>
#include<iostream>
#include<string>
using namespace std;
string s;
int bucket[100],maxn=0;
int main() {
for (int i = 0; i < 4; i++) {
getline(cin, s);
for (int j = 0; j < s.size(); j++) {
if (s[j] >= 'A' && s[j] <= 'Z') {
bucket[s[j]]++;
}
}
}
for (int i = 'A'; i <= 'Z'; i++) {
maxn = max(maxn, bucket[i]);
}
for (int i = maxn; i > 0; i--) {
for (int j = 'A'; j <= 'Z'; j++) {
if (bucket[j] >= i)
printf("* ");
else
printf(" ");
}
cout << endl;
}
for (int i = 'A'; i <='Z'; i++)
printf("%c ", i);//输出a~z
}