程序设计与算法(一)C语言程序设计CAP 第七周
2018-01-08 23:26
344 查看
1:统计数字字符个数
查看提交
统计
提问
总时间限制: 1000ms 内存限制: 65536kB
描述
输入一行字符,统计出其中数字字符的个数。
输入一行字符串,总长度不超过255。
输出输出为1行,输出字符串里面数字字符的个数。
样例输入
Peking University is set up at 1898.
样例输出
4
#include <iostream> using namespace std; char line[400]; int main() { cout<<"Peking University is set up at:"; cin.getline(line ,300); int total=0; //用来计数 for( int i=0 ;line[i];++i) { if( line[i] >='0' && line[i] <= '9') ++total; } cout<<total<<endl; return 0; }
2:找第一个只出现一次的字符
查看提交
统计
提问
总时间限制: 1000ms 内存限制: 65536kB
描述
给定一个只包含小写字母的字符串,请你找到第一个仅出现一次的字符。如果没有,输出no。
输入一个字符串,长度小于100000。
输出输出第一个仅出现一次的字符,若没有则输出no。
样例输入
abcabd
样例输出
c
#include<iostream> #include<algorithm> #include<string.h> using namespace std; int main() { char c[300]; cin.getline( c,300); int bit_map[26]={0}; int i=0; for(;i<strlen(c);++i) bit_map[c[i]-'a']++; for(i=0;i<strlen(c);++i) { if(bit_map[c[i]-'a']==1) { printf(" %c ",c[i]); break; } } if(i>=strlen(c)) printf("No ele to the rule\n"); return 0; }
其他方法:
#include <stdio.h> #include<string.h> int main() { char a[100000];//首先定义一个字符数组存储字符 int b[27]= {0};//用一个一位数组存储每个小写字母出现的次数 int i,len,flag=0;//flag用作状态位 gets(a);//从键盘输入一个字符串 len=strlen(a);//用strlen函数求出字符串的长度 for(i=0; i<len ; i++) { b[a[i]-'a']++;//用ASCII码计算,得到每个小字母对应的整型数据,并把出现的次数存入一维数组 } for(i=0; i<len ; i++) { if(b[a[i]-'a']==1)//筛选出只出现一次的小写字母 { printf("%c\n",a[i]);//输出第一个 flag=1; break;//输出第一个出现一次的字母后,程序结束 } } if(flag==0) printf("no\n"); return 0; }
3:石头剪子布
查看提交
统计
提问
总时间限制:
1000ms
内存限制:
65536kB
描述
石头剪子布,是一种猜拳游戏。起源于中国,然后传到日本、朝鲜等地,随着亚欧贸易的不断发展它传到了欧洲,到了近现代逐渐风靡世界。简单明了的规则,使得石头剪子布没有任何规则漏洞可钻,单次玩法比拼运气,多回合玩法比拼心理博弈,使得石头剪子布这个古老的游戏同时用于“意外”与“技术”两种特性,深受世界人民喜爱。
游戏规则:石头打剪刀,布包石头,剪刀剪布。
现在,需要你写一个程序来判断石头剪子布游戏的结果。
输入输入包括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 <cstdio> #include <cstring> using namespace std; char s1[20],s2[20]; int main() { int n; cin >> n; for(int i = 0; i < n; ++i) { cin >> s1 >> s2; if( strcmp( s1,"Rock")==0){ if( s2[0]=='S') cout<< "Player1"<<endl; else if( s2[0]='P') cout<< "Player2"<<endl; else if( s2[0]='R') cout <<"tie"<< endl; } else if( strcmp(s1,"Paper") == 0) { if( s2[0] == 'S') cout << "Player2" << endl; else if( s2[0] == 'R') cout << "Player1" << endl; else cout << "Tie" << endl; } if( strcmp(s1,"Scissors") == 0) { if( s2[0] == 'S') cout << "Tie" << endl; else if( s2[0] == 'P') cout << "Player1" << endl; else cout << "Player2" << endl; } } return 0; }
4:最长最短单词
查看提交
统计
提问
总时间限制:
1000ms
内存限制:
65536kB
描述
输入1行句子(不多于200个单词,每个单词长度不超过100),只包含字母、空格和逗号。单词由至少一个连续的字母构成,空格和逗号都是单词间的间隔。
试输出第1个最长的单词和第1个最短单词。
输入一行句子。
输出两行输出:
第1行,第一个最长的单词。
第2行,第一个最短的单词。
样例输入
I am studying Programming language C in Peking University
样例输出
Programming I
#include <iostream> #include <cstdio> #include <cstring> using namespace std; char line[30000]; bool IsLetter(char c) { return c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z'; } int main() { cin.getline(line,29000); int longStart,shortStart; int maxLen = 0,minLen = 1<< 30; int lastWordStart; bool wordMeet = false; int len = strlen(line); for(int i = 0;i <= len; ++i) { if( IsLetter(line[i])) { if( !wordMeet) { wordMeet = true; lastWordStart = i; } } else { if( wordMeet ) { wordMeet = false; int wordLen = i - lastWordStart; if( wordLen > maxLen ) { maxLen = wordLen; longStart = lastWordStart; } if( wordLen < minLen ) { minLen = wordLen; shortStart = lastWordStart; } } } } for(int i = longStart; IsLetter(line[i]); ++ i) cout << line[i]; cout << endl; for(int i = shortStart; IsLetter(line[i]); ++ i) cout << line[i]; return 0; }
提示如果所有单词长度相同,那么第一个单词既是最长单词也是最短单词。
5:密码翻译
查看提交
统计
提问
总时间限制:
1000ms
内存限制:
65536kB
描述
在情报传递过程中,为了防止情报被截获,往往需要对情报用一定的方式加密,简单的加密算法虽然不足以完全避免情报被破译,但仍然能防止情报被轻易的识别。我们给出一种最简的的加密方法,对给定的一个字符串,把其中从a-y,A-Y的字母用其后继字母替代,把z和Z用a和A替代,其他非字母字符不变,则可得到一个简单的加密字符串。
输入输入一行,包含一个字符串,长度小于80个字符。
输出输出每行字符串的加密字符串。
样例输入
Hello! How are you!
样例输出
Ifmmp! Ipx bsf zpv!
#include <iostream> #include <cstdio> #include <cstring> using namespace std; char line[100]; int main() { cin.getline(line,90); for(int i = 0; line[i]; ++i) { if( line[i] >= 'a' && line[i] <= 'y' || line[i] >= 'A' && line[i] <= 'Y') ++line[i]; else if( line[i] == 'z') line[i] = 'a'; else if( line[i] == 'Z') line[i] = 'A'; } cout << line; return 0; }
相关文章推荐
- 程序设计与算法(一)C语言程序设计CAP 第十周
- 程序设计与算法(一)C语言程序设计CAP 第三周编程作业
- 程序设计与算法(一)C语言程序设计CAP 第一周
- 程序设计与算法(一)C语言程序设计CAP 第四周
- 程序设计与算法(一)C语言程序设计CAP 第五周
- C语言程序设计第七周
- 程序设计与算法(一)C语言程序设计CAP 第二周编程作业
- 程序设计与算法(一)C语言程序设计CAP 第六周
- configure: WARNING: No termcap nor curses library found
- 第七周上机阅读程序
- 第七周 项目一:静态成员应用
- 第七周任务三
- 第七周—1.静态成员应用
- 第七周 项目2 友元函数 成员函数 一般函数 的不同调用
- pcap_dump()所保存.cap文件格式
- OpenCV故障cap_ffmpeg_impl.hpp--001
- CAP原理与最终一致性 强一致性 透析
- CAP和最终一致性
- 第七周项目1-求圆柱表面积
- 第七周—作业3