信奥之路-C++第10课作业
1. 统计不同类型字符出现次数
【问题描述】
输入一个字符串(假设长度不超过1000个字符),统计其中大写,小写,数字,其他字符出现的次数。
【样例输入】Hello,what are you doing 123?
【样例输出】1 19 3 6
#include<iostream>
#include<cstring>
using namespace std;
int main() {
char a[1001];
int dx = 0,xx = 0,sz = 0,qt = 0;
int l, i;
//输入字符串
cin.getline(a,1001);
l = strlen(a);
for(i = 0; i < l; i++) {
if(a[i] >='A' && a[i] <='Z') {
dx++;
} else if(a[i] >='a' && a[i] <='z') {
xx++;
} else if(a[i] >='0' && a[i] <='9') {
sz++;
} else {
qt++;
}
}
cout << dx <<" " << xx <<" "<< sz<<" " << qt;
return 0;
}
2. 删除数字字符,并统计删除的数字的个数
【问题描述】
从键盘输入一个由大、小写字母和数字组成的任意一个字符串(不需判断),其长度不小于 8,不大于 30。现要求将字符串
中的所有数字字符删除,其他字符依照原有顺序保持不变,并统计删除的数字的个数。
【输入文件]】
只有一行,包含只由大、小写字母和数字组成的一个字符串(其长度 8≤L≤30)。
【输出文件]】
有两行:
第一行:为删除数字字符后的字符串;
第二行:为统计删除的数字的个数。
【要求】每行的输出数据从第一列输出
【样例输入】
ABCD123efg678
【样例输出】
ABCDefg
6
#include<iostream>
#include<cstring>
using namespace std;
int main() {
char a[31];
int i,l,sum = 0;
cin >> a;
l=strlen(a);
for(i=0; i<l; i++) {
if(a[i]>='0' && a[i]<='9') {
sum++;
} else {
cout << a[i];
}
}
cout << endl;
cout << sum;
return 0;
}
1. 判断字符串是否为回文
【问题描述】
输入一个字符串,输出该字符串是否回文。回文是指顺读和倒读都一样的字符串。
输入为一行字符串(字符串中没有空白字符,字符串长度不超过100)。
如果字符串是回文,输出yes;否则,输出no。
【样例输入】
abcdedcba
【样例输出】
Yes
#include<iostream>
#include<cstring>
using namespace std;
int main() {
char str1[101],str2[101];
int i;
long len;
cin >> str1;
len = strlen(str1);
for(i=0; i<len; i++) {
str2[i]=str1[len-1-i];
}
str2[i]='\0';
if(strcmp(str1,str2)==0) {
cout << "yes";
} else {
cout << "no";
}
return 0;
}
2. 石头剪子布
【问题描述】
石头剪子布,是一种猜拳游戏。起源于中国,然后传到日本、朝鲜等地,随着亚欧贸易的不断发展它传到了欧洲,到了近现代逐渐风靡世界。简单明了的规则,使得石头剪子布没有任何规则漏洞可钻,单次玩法比拼运气,多回合玩法比拼心理博弈,使得石头剪子布这个古老的游戏同时用于“意外”与“技术”两种特性,深受世界人民喜爱。
游戏规则:石头打剪刀,布包石头,剪刀剪布。
现在,需要你写一个程序来判断石头剪子布游戏的结果。
输入:输入包括N+1行:
第一行是一个整数N,表示一共进行了N次游戏。1 <= N <= 100。
接下来N行的每一行包括两个字符串,表示游戏参与者Player1,Player2的选择(石头、剪子或者是布):S1 S2
字符串之间以空格隔开S1,S2只可能取值在{"Rock", "Scissors", "Paper"}(大小写敏感)中。
输出:输出包括N行,每一行对应一个胜利者(Player1或者Player2),或者游戏出现平局,则输出Tie。
【样例输入】
3
Rock Scissors
Paper Paper
Rock Paper
【样例输出】
Player1
Tie
Player2
#include <iostream>
#include <string>
#include <cstring>
using namespace std;
int main() {
int N;
string a, b;
cin >> N;
for (int i=0; i<N; i++) {
cin >> a;
cin >> b;
if (a.compare("Rock") == 0) {
if (b.compare("Rock") == 0) {
cout << "Tie" << endl;
} else if (b.compare("Scissors") == 0) {
cout << "Player1" << endl;
} else {
cout << "Player2" << endl;
}
} else if (a.compare("Scissors") == 0) {
if (b.compare("Rock") == 0) {
cout << "Player2" << endl;
} else if (b.compare("Scissors") == 0) {
cout << "Tie" << endl;
} else {
cout << "Player1" << endl;
}
} else {
if (b.compare("Rock") == 0) {
cout << "Player1" << endl;
} else if (b.compare("Scissors") == 0) {
cout << "Player2" << endl;
} else {
cout << "Tie" << endl;
}
}
}
return 0;
}
3. 找第一个只出现一次的字符
【问题描述】
给定一个只包含小写字母的字符串,请你找到第一个仅出现一次的字符。如果没有,输出no。
输入:一个字符串,长度小于100000。
输出:输出第一个仅出现一次的字符,若没有则输出no。
【样例输入】
abcabd
【样例输出】
c
#include<iostream>
#include<cstring>
using namespace std;
int main() {
//定义字符数组
char str[100001];
//定义一个长度 定义存储每一个字符出现的次数的数组
int len,a[26]= {0};
//输入字符串
cin >> str;
//求字符串长度
len = strlen(str);
//abacad a存每个字符的个数 a0++ 2 a++ 1
for(int i=0; i<len; i++) {
a[str[i]-97]++;
}
for(int i=0; i<len; i++) {
if(a[str[i]-97]==1) {
cout << str[i];
return 0;
}
}
cout << "no";
return 0;
}
作者: 王春天 出处: http://www.cnblogs.com/spring_wang/ Email: spring_best@yeah.net QQ交流:903639067
QQ群:322581894 关于作者: 大连天翼信息科技有限公司 技术总监。 SNF快速开发平台 创始人。应用平台架构师、IT规划咨询专家、业务流程设计专家。 专注于快速开发平台的开发、代码生成器。同时专注于微软平台项目架构、管理和企业解决方案,多年项目开发与管理经验,精通DotNet系列技术Vue、.NetCore、MVC、Webapi、C#、WinForm等,DB(SqlServer、Oracle等)技术,移动端开发。熟悉Java、VB及PB开发语言。在面向对象、面向服务以及数据库领域有一定的造诣。现从事项目实施、开发、架构等工作。并从事用友软件产品U8、U9、PLM 客开工作。 如有问题或建议,请多多赐教! 本文版权归作者和CNBLOGS博客共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,如有问题,可以通过邮箱或QQ 联系我,非常感谢。


浙公网安备 33010602011771号