7-91 字符串转换成十进制整数 分数 15
输入一个以#结束的字符串,本题要求滤去所有的非十六进制字符(不分大小写),组成一个新的表示十六进制数字的字符串,然后将其转换为十进制数后输出。如果在第一个十六进制字符之前存在字符“-”,则代表该数是负数。
输入格式:
输入在一行中给出一个以#结束的非空字符串。
输出格式:
在一行中输出转换后的十进制数。题目保证输出在长整型范围内。
输入样例:
+-P-xf4+-1!#
输出样例:
-3905
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#include <iostream>
using namespace std;
int ans, tt = 1;
bool flag;
char op;
int get(char c)
{
if (isdigit(c)) return c - '0';
return tolower(c) - 'a' + 10;
}
int main()
{
while ((op = getchar()), op != '#')
{
if (op == '-' && !flag) tt = -1, flag = true;
else if (isdigit(op) ||
'a' <= tolower(op) && tolower(op) <= 'f')
ans = ans * 16 + get(op), flag = true;
}
cout << tt * ans << endl;
return 0;
}
7-92 输出大写英文字母 分数 15
本题要求编写程序,顺序输出给定字符串中所出现过的大写英文字母,每个字母只输出一遍;若无大写英文字母则输出“Not Found”。
输入格式:
输入为一个以回车结束的字符串(少于80个字符)。
输出格式:
按照输入的顺序在一行中输出所出现过的大写英文字母,每个字母只输出一遍。若无大写英文字母则输出“Not Found”。
输入样例1:
FONTNAME and FILENAME
输出样例1:
FONTAMEIL
输入样例2:
fontname and filrname
输出样例2:
Not Found
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#include <iostream>
#include <string>
#include <set>
using namespace std;
set<char> st;
string input;
bool flag = true;
int main()
{
getline(cin, input);
for(char c : input)
if(isupper(c) && !st.count(c)) putchar(c), st.insert(c), flag = false;
if(flag) puts("Not Found");
return 0;
}
7-93 删除重复字符 分数 20
本题要求编写程序,将给定字符串去掉重复的字符后,按照字符ASCII码顺序从小到大排序后输出。
输入格式:
输入是一个以回车结束的非空字符串(少于80个字符)。
输出格式:
输出去重排序后的结果字符串。
输入样例:
ad2f3adjfeainzzzv
输出样例:
23adefijnvz
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#include <iostream>
#include <set>
using namespace std;
string input;
set<char> st;
int main()
{
getline(cin, input);
for(char c : input) st.insert(c);
for(auto c : st) putchar(c);
return 0;
}
7-94 字符串替换 分数 15
本题要求编写程序,将给定字符串中的大写英文字母按以下对应规则替换:
原字母 | 对应字母 |
---|---|
A | Z |
B | Y |
C | X |
D | W |
… | … |
X | C |
Y | B |
Z | A |
输入格式:
输入在一行中给出一个不超过80个字符、并以回车结束的字符串。
输出格式:
输出在一行中给出替换完成后的字符串。
输入样例:
Only the 11 CAPItaL LeTtERS are replaced.
输出样例:
Lnly the 11 XZKRtaO OeGtVIH are replaced.
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#include <iostream>
#include <string>
using namespace std;
string input;
int main()
{
getline(cin, input);
for(char c : input)
putchar(isupper(c) ? 'Z' - (c - 'A') : c);
return 0;
}
7-95 字符转换 分数 15
本题要求提取一个字符串中的所有数字字符('0'……'9'),将其转换为一个整数输出。
输入格式:
输入在一行中给出一个不超过80个字符且以回车结束的字符串。
输出格式:
在一行中输出转换后的整数。题目保证输出不超过长整型范围。
输入样例:
free82jeep5
输出样例:
825
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#include <iostream>
#include <string>
using namespace std;
string input;
int ans;
int main()
{
getline(cin, input);
for(char c : input) if(isdigit(c)) ans = ans * 10 + c - '0';
cout << ans << endl;
return 0;
}
7-96 找最小的字符串 分数 15
本题要求编写程序,针对输入的N个字符串,输出其中最小的字符串。
输入格式:
输入第一行给出正整数N;随后N行,每行给出一个长度小于80的非空字符串,其中不会出现换行符,空格,制表符。
输出格式:
在一行中用以下格式输出最小的字符串:
Min is: 最小字符串
输入样例:
5
Li
Wang
Zha
Jin
Xian
输出样例:
Min is: Jin
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#include <iostream>
#include <set>
using namespace std;
set<string> st;
string input;
int n;
int main()
{
ios::sync_with_stdio(false), cin.tie(0);
cin >> n;
while(n --) cin >> input, st.insert(input);
cout << "Min is: " << *st.begin() << endl;
return 0;
}
7-97 字符串排序 分数 20
本题要求编写程序,读入5个字符串,按由小到大的顺序输出。
输入格式:
输入为由空格分隔的5个非空字符串,每个字符串不包括空格、制表符、换行符等空白字符,长度小于80。
输出格式:
按照以下格式输出排序后的结果:
After sorted:
每行一个字符串
输入样例:
red yellow blue black white
输出样例:
After sorted:
black
blue
red
white
yellow
鸣谢贵州民族大学张玉全老师修正数据!
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#include <iostream>
#include <set>
using namespace std;
set<string> st;
string input;
int main()
{
while(cin >> input) st.insert(input);
cout << "After sorted:" << endl;
for(auto c : st) cout << c << endl;
return 0;
}
7-98 找最长的字符串 分数 15
本题要求编写程序,针对输入的N个字符串,输出其中最长的字符串。
输入格式:
输入第一行给出正整数N;随后N行,每行给出一个长度小于80的非空字符串,其中不会出现换行符,空格,制表符。
输出格式:
在一行中用以下格式输出最长的字符串:
The longest is: 最长的字符串
如果字符串的长度相同,则输出先输入的字符串。
输入样例:
5
li
wang
zhang
jin
xiang
输出样例:
The longest is: zhang
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#include <iostream>
using namespace std;
string input, ans;
int n;
int main()
{
ios::sync_with_stdio(false), cin.tie(0);
cin >> n;
while(n --)
{
cin >> input;
ans = ans.size() >= input.size() ? ans : input;
}
cout << "The longest is: " << ans << endl;
return 0;
}
7-99 计算职工工资 分数 15
给定N个职员的信息,包括姓名、基本工资、浮动工资和支出,要求编写程序顺序输出每位职员的姓名和实发工资(实发工资=基本工资+浮动工资-支出)。
输入格式:
输入在一行中给出正整数N。随后N行,每行给出一位职员的信息,格式为“姓名 基本工资 浮动工资 支出”,中间以空格分隔。其中“姓名”为长度小于10的不包含空白字符的非空字符串,其他输入、输出保证在单精度范围内。
输出格式:
按照输入顺序,每行输出一位职员的姓名和实发工资,间隔一个空格,工资保留2位小数。
输入样例:
3
zhao 240 400 75
qian 360 120 50
zhou 560 150 80
输出样例:
zhao 565.00
qian 430.00
zhou 630.00
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#include <iostream>
#include <iomanip>
using namespace std;
int n;
string input;
double a, b, c;
int main()
{
ios::sync_with_stdio(false), cin.tie(0);
cin >> n;
while (n--)
{
cin >> input >> a >> b >> c;
cout << input << " " << fixed << setprecision(2) << a + b - c << endl;
}
return 0;
}
7-100 时间换算 分数 15
本题要求编写程序,以hh:mm:ss
的格式输出某给定时间再过n
秒后的时间值(超过23:59:59就从0点开始计时)。
输入格式:
输入在第一行中以hh:mm:ss
的格式给出起始时间,第二行给出整秒数n
(<60)。
输出格式:
输出在一行中给出hh:mm:ss
格式的结果时间。
输入样例:
11:59:40
30
输出样例:
12:00:10
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#include <iostream>
#include <string>
using namespace std;
string input;
int n;
int main()
{
cin >> input >> n;
int a = stoi(input.substr(0, 2));
int b = stoi(input.substr(3, 2));
int c = stoi(input.substr(6, 2));
int ed = c + n;
int na = a + ed / 3600, nb = b + ed / 60 % 60, nc = ed % 60;
na += nb / 60, nb %= 60, na %= 24;
printf("%02d:%02d:%02d\n", na, nb, nc);
return 0;
}