Lecture (7)包含以下五道编程题,可以在上面的OJ提交。
040:统计数字字符个数
#include <iostream>
using namespace std;
#define N 255
char str[N+10];
int main(int argc, const char * argv[]) {
gets(str);
int count = 0;
for(int i=0;str[i];i++)
if(isdigit(str[i]))
count++;
cout<<count<<endl;
return 0;
}
041:找第一个只出现一次的字符
#include <iostream>
using namespace std;
#define N 100000
char str[N+10];
int a[26]; //统计每个字母出现的次数
int main(int argc, const char * argv[]) {
cin>>str;
for(int i=0;str[i];i++)
{
a[str[i]-'a']++;
}
int i;
for(i=0;str[i];i++)
if(a[str[i]-'a']==1)
break;
if(!str[i])
cout<<"no"<<endl;
else
cout<<str[i]<<endl;
return 0;
}
042:石头剪子布
#include <iostream>
#include <cstring>
using namespace std;
#define N 10
char s1[N+10];
char s2[N+10];
int main(int argc, const char * argv[]) {
int n;
cin>>n;
while(n--)
{
cin>>s1>>s2;
if(strcmp(s1,"Rock")==0)
{
if(strcmp(s2,"Rock")==0)
cout<<"Tie"<<endl;
else if(strcmp(s2,"Paper")==0)
cout<<"Player2"<<endl;
else
cout<<"Player1"<<endl;
}
else if(strcmp(s1,"Paper")==0)
{
if(strcmp(s2,"Rock")==0)
cout<<"Player1"<<endl;
else if(strcmp(s2,"Paper")==0)
cout<<"Tie"<<endl;
else
cout<<"Player2"<<endl;
}
else
{
if(strcmp(s2,"Rock")==0)
cout<<"Player2"<<endl;
else if(strcmp(s2,"Paper")==0)
cout<<"Player1"<<endl;
else
cout<<"Tie"<<endl;
}
}
return 0;
}
043:最长最短单词
#include <iostream>
#include <cstring>
#define N 30000
char s1[N+10];
using namespace std;
int main(int argc, const char * argv[]) {
gets(s1);
int minLen=1<<30, maxLen=-1;//最小初始化为最大 最大初始化为最小
int start;
bool flag = false;
int longStart,shortStart;
int len = strlen(s1);
for(int i=0;i<=len;i++) //注意是 i<=len 如果i<len 对于输入只有一个字母的情况,else不会被执行,longStart,shortStart不会计算。
{
if(isalpha(s1[i])) //字母字符
{
if(!flag)
{
start = i; //记录每个单词的开始字符的位置
flag = true;
}
}
else //非字母字符
{
if(flag) //第一个非字母字符 防止两个单词之间有多个非字母字符,此时单词长度不准确; 还有就是必须先碰到单词,才能计算wordlen,否则刚开始是非字母字符的话,start没有定义
{
int wordlen=i-start;
if(wordlen>maxLen)
{
maxLen=wordlen;
longStart = start; //最长单词开始字符的位置
}
if(wordlen<minLen)
{
minLen=wordlen;
shortStart = start; //最短单词开始字符的位置
}
flag = false;
}
}
}
for(int i=longStart;isalpha(s1[i]);i++)
cout<<s1[i];
cout<<endl;
for(int i=shortStart;isalpha(s1[i]);i++)
cout<<s1[i];
cout<<endl;
return 0;
}
044:密码翻译
#include <iostream>
using namespace std;
char s1[] = "abcdefghijklmnopqrstuvwxyz";
char s2[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
#define N 80
char s[N+10];
int main(int argc, const char * argv[]) {
gets(s);
for(int i=0;s[i];i++)
if(s[i]>='a'&&s[i]<='z')
cout<<s1[(s[i]-'a'+1)%26];
else if(s[i]>='A'&&s[i]<='Z')
cout<<s2[(s[i]-'A'+1)%26];
else
cout<<s[i];
cout<<endl;
return 0;
}