01:统计数字字符个数
-
总时间限制:
- 1000ms 内存限制:
- 65536kB
-
描述
-
输入一行字符,统计出其中数字字符的个数。
输入
- 一行字符串,总长度不超过255。 输出
- 输出为1行,输出字符串里面数字字符的个数。 样例输入
-
Peking University is set up at 1898.
样例输出
-
4
来源
- 习题(7-1) 医学部 2010 期末试题 樊波
-
1 #include<cstdio> 2 #include<cstring> 3 char a[1000]; 4 int main() 5 { 6 7 unsigned int i,count=0; 8 gets(a); 9 for(i=0;i<=strlen(a)-1;i++) 10 if(a[i]>='0'&&a[i]<='9') 11 count++; 12 printf("%d",count); 13 return 0; 14 }
02:找第一个只出现一次的字符
-
总时间限制:
- 1000ms 内存限制:
- 65536kB
-
描述
-
给定一个只包含小写字母的字符串,请你找到第一个仅出现一次的字符。如果没有,输出no。
输入
- 一个字符串,长度小于100000。 输出
- 输出第一个仅出现一次的字符,若没有则输出no。 样例输入
-
abcabd
样例输出
-
c
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 using namespace std; 6 char s[103000]; 7 int zj=0,flag=0,t; 8 struct node 9 { 10 int x;//字符出现次数 11 int y;//标号 12 int c;//字符码 13 };node a[101],f[101]; 14 int cmp(const node &p,const node &q) 15 { 16 return p.y<q.y; 17 } 18 int main() 19 { 20 scanf("%s",s+1); 21 int len=strlen(s+1); 22 for(int i=1;i<=30;i++) 23 a[t].x=0,a[t].y=99; 24 for(int i=1;i<=len;i++) 25 { 26 t=s[i]-96;a[t].x++; 27 if(a[t].x==1) a[t].y=i; 28 } 29 for(int i=1;i<=30;i++) 30 if(a[i].x==1) f[++zj].x=a[i].x,f[zj].y=a[i].y,f[zj].c=i,flag=1; 31 if(flag==1) 32 { 33 sort(f+1,f+zj+1,cmp); 34 putchar(f[1].c+96); 35 } 36 else printf("no"); 37 return 0; 38 }
03:基因相关性
-
总时间限制:
- 1000ms 内存限制:
- 65536kB
-
描述
-
为了获知基因序列在功能和结构上的相似性,经常需要将几条不同序列的DNA进行比对,以判断该比对的DNA是否具有相关性。
现比对两条长度相同的DNA序列。首先定义两条DNA序列相同位置的碱基为一个碱基对,如果一个碱基对中的两个碱基相同的话,则称为相同碱基对。接着计算相同碱基对占总碱基对数量的比例,如果该比例大于等于给定阈值时则判定该两条DNA序列是相关的,否则不相关。
输入
- 有三行,第一行是用来判定出两条DNA序列是否相关的阈值,随后2行是两条DNA序列(长度不大于500)。 输出
- 若两条DNA序列相关,则输出“yes”,否则输出“no”。 样例输入
-
0.85 ATCGCCGTAAGTAACGGTTTTAAATAGGCC ATCGCCGGAAGTAACGGTCTTAAATAGGCC
样例输出
-
yes
1 #include<cstdio> 2 #include<cstring> 3 #include<iostream> 4 using namespace std; 5 char a[501],b[501]; 6 double p,ans=0; 7 int main(){ 8 cin>>p; 9 scanf("%s%s",a,b); 10 int len=strlen(a),i=0; 11 while(i<len){ 12 if(a[i]==b[i]) ans++; 13 i++; 14 } 15 double l=len; 16 printf("%s\n",ans/l>p?"yes":"no"); 17 return 0; 18 }
04:石头剪子布
-
总时间限制:
- 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
提示
- Rock是石头,Scissors是剪刀,Paper是布。
-
1 #include<cstdio> 2 #include<cstring> 3 using namespace std; 4 int a[10]; 5 char s1[100],s2[100]; 6 int main() 7 { 8 int n,i; 9 scanf("%d",&n); 10 for(i=1;i<=n;++i) 11 { 12 scanf("%s",s1); 13 scanf("%s",s2); 14 if (s1[0]=='R') 15 { 16 if(s2[0]=='R') a[i]=0; 17 if(s2[0]=='S') a[i]=1; 18 if(s2[0]=='P') a[i]=2; 19 } 20 if (s1[0]=='P') 21 { 22 if(s2[0]=='R') a[i]=1; 23 if(s2[0]=='S') a[i]=2; 24 if(s2[0]=='P') a[i]=0; 25 } 26 if (s1[0]=='S') 27 { 28 if(s2[0]=='R') a[i]=2; 29 if(s2[0]=='S') a[i]=0; 30 if(s2[0]=='P') a[i]=1; 31 } 32 if(a[i]==1) printf("Player1\n"); 33 if(a[i]==2) printf("Player2\n"); 34 if(a[i]==0) printf("Tie\n"); 35 } 36 37 return 0; 38 }
05:输出亲朋字符串
-
总时间限制:
- 1000ms 内存限制:
- 65536kB
-
描述
-
编写程序,求给定字符串s的亲朋字符串s1。
亲朋字符串s1定义如下:给定字符串s的第一个字符的ASCII值加第二个字符的ASCII值,得到第一个亲朋字符; 给定字符串s的第二个字符的ASCII值加第三个字符的ASCII值,得到第二个亲朋字符;依此类推,直到给定字符串s的倒数第二个字符。亲朋字符串的最 后一个字符由给定字符串s的最后一个字符ASCII值加s的第一个字符的ASCII值。 输入
- 输入一行,一个长度大于等于2,小于等于100的字符串。字符串中每个字符的ASCII值不大于63。 输出
- 输出一行,为变换后的亲朋字符串。输入保证变换后的字符串只有一行。 样例输入
-
1234
样例输出
-
cege
1 #include<cstdio> 2 #include<iostream> 3 #include<cstring> 4 #include<algorithm> 5 using namespace std; 6 #define N 521 7 char a[N],c[N]; 8 int main(){ 9 //freopen("sh.txt","r",stdin); 10 gets(a); 11 int len=strlen(a); 12 for(int i=0;i<len-1;i++) 13 c[i]=a[i]+a[i+1]; 14 c[len-1]=a[0]+a[len-1]; 15 puts(c); 16 return 0; 17 }
06:合法 C 标识符
-
总时间限制:
- 1000ms 内存限制:
- 65536kB
-
描述
-
给定一个不包含空白符的字符串,请判断是否是C语言合法的标识符号(注:题目保证这些字符串一定不是C语言的保留字)。
C语言标识符要求:
1. 非保留字;
2. 只包含字母、数字及下划线(“_”)。
3. 不以数字开头。
输入
- 一行,包含一个字符串,字符串中不包含任何空白字符,且长度不大于20。 输出
- 一行,如果它是C语言的合法标识符,则输出yes,否则输出no。 样例输入
-
RKPEGX9R;TWyYcp
样例输出
-
no
1 #include<cstdio> 2 #include<cstring> 3 #include<iostream> 4 using namespace std; 5 char s[501]; 6 double p,ans=0; 7 int main(){ 8 scanf("%s",s); 9 int len=strlen(s); 10 if(s[0]>='0'&&s[0]<='9') {printf("%s\n","no");return 0;} 11 for(int i=0;i<len;i++) 12 if((s[i]>='0'&&s[i]<='9')||(s[i]>='a'&&s[i]<='z')||(s[i]>='A'&&s[i]<='Z')||s[i]=='_'); 13 else {printf("%s\n","no");return 0;} 14 printf("%s\n","yes"); 15 return 0; 16 }
07:配对碱基链
-
总时间限制:
- 1000ms 内存限制:
- 65536kB
-
描述
-
脱氧核糖核酸(DNA)由两条互补的碱基链以双螺旋的方式结合而成。而构成DNA的碱基共有4种,分别为腺瞟呤(A)、鸟嘌呤(G)、胸腺嘧啶(T)和胞嘧啶(C)。我们知道,在两条互补碱基链的对应位置上,腺瞟呤总是和胸腺嘧啶配对,鸟嘌呤总是和胞嘧啶配对。你的任务就是根据一条单链上的碱基序列,给出对应的互补链上的碱基序列。
输入
- 一个字符串,表示一条碱基链。这个字符串只含有大写字母A、T、G、C,分别表示腺瞟呤、胸腺嘧啶、鸟嘌呤和胞嘧啶。字符串长度不超过255。 输出
- 一个只含有大写字母A、T、G、C的字符串,为与输入的碱基链互补的碱基链。 样例输入
-
ATATGGATGGTGTTTGGCTCTG
样例输出
-
TATACCTACCACAAACCGAGAC
1 #include<cstdio> 2 #include<cstring> 3 #include<iostream> 4 using namespace std; 5 char s[501],c[501]; 6 int main(){ 7 scanf("%s",s); 8 int len=strlen(s); 9 for(int i=0;i<len;i++) 10 switch(s[i]){ 11 case 'T':c[i]='A';break; 12 case 'A':c[i]='T';break; 13 case 'G':c[i]='C';break; 14 case 'C':c[i]='G';break; 15 } 16 puts(c); 17 return 0; 18 }
08:字符替换
-
总时间限制:
- 1000ms 内存限制:
- 65536kB
-
描述
-
把一个字符串中特定的字符全部用给定的字符替换,得到一个新的字符串。
输入
-
只有一行,由一个字符串和两个字符组成,中间用单个空格隔开。字符串是待替换的字符串,字符串长度
小于等于30个字符,且不含空格等空白符;
接下来一个字符为需要被替换的特定字符;
接下来一个字符为用于替换的给定字符。 输出
- 一行,即替换后的字符串。 样例输入
-
hello-how-are-you o O
样例输出
-
hellO-hOw-are-yOu
1 #include<cstring> 2 #include<iostream> 3 using namespace std; 4 char c[30],a,b; 5 int main(){ 6 cin>>c>>a>>b; 7 int i; 8 for(i=0;i<strlen(c);i++){ 9 if(c[i]==a)c[i]=b; 10 } 11 for(i=0;i<strlen(c);i++)cout<<c[i]; 12 return 0; 13 }
09:密码翻译
-
总时间限制:
- 1000ms 内存限制:
- 65536kB
-
描述
-
在情报传递过程中,为了防止情报被截获,往往需要对情报用一定的方式加密,简单的加密算法虽然不足以完全避免情报被破译,但仍然能防止情报被轻易的识别。我们给出一种最简的的加密方法,对给定的一个字符串,把其中从a-y,A-Y的字母用其后继字母替代,把z和Z用a和A替代,其他非字母字符不变,则可得到一个简单的加密字符串。
输入
- 输入一行,包含一个字符串,长度小于80个字符。 输出
- 输出每行字符串的加密字符串。 样例输入
-
Hello! How are you!
样例输出
-
Ifmmp! Ipx bsf zpv!
来源
1 #include<cstdio> 2 #include<cstring> 3 #include<iostream> 4 using namespace std; 5 char s[501]; 6 int main(){ 7 gets(s); 8 int len=strlen(s); 9 for(int i=0;i<len;i++){ 10 if((s[i]>='a'&&s[i]<='y')||(s[i]>='A'&&s[i]<='Y')) {s[i]++;continue;} 11 if(s[i]=='z') {s[i]='a';continue;} 12 if(s[i]=='Z') {s[i]='A';continue;} 13 } 14 puts(s); 15 return 0; 16 }
10:简单密码
-
总时间限制:
- 1000ms 内存限制:
- 65536kB
-
描述
-
Julius Caesar曾经使用过一种很简单的密码。对于明文中的每个字符,将它用它字母表中后5位对应的字符来代替,这样就得到了密文。比如字符A用F来代替。如下是密文和明文中字符的对应关系。
密文
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
明文
V W X Y Z A B C D E F G H I J K L M N O P Q R S T U
你的任务是对给定的密文进行解密得到明文。
你需要注意的是,密文中出现的字母都是大写字母。密文中也包括非字母的字符,对这些字符不用进行解码。 输入
- 一行,给出密文,密文不为空,而且其中的字符数不超过200。 输出
- 输出一行,即密文对应的明文。 样例输入
-
NS BFW, JAJSYX TK NRUTWYFSHJ FWJ YMJ WJXZQY TK YWNANFQ HFZXJX
样例输出
-
IN WAR, EVENTS OF IMPORTANCE ARE THE RESULT OF TRIVIAL CAUSES