慕課-程式設計與演算法(大學先修課)-郭煒-第七週練習題
阿新 • • 發佈:2019-01-27
1.輸入一行字元,統計出其中數字字元的個數。
#include <iostream>
using namespace std;
int main() {
char ch;
int count = 0;
while( ch = getchar(), ch != '\n') //若讀入的字元不是回車
{
if(isdigit(ch)) //若是數字
count++;
}
printf("%d\n", count);
}
2.給定一個只包含小寫字母的字串,請你找到第一個僅出現一次的字元。如果沒有,輸出no。
#include <iostream>
using namespace std;
char a[26];
int s[26];
int main() {
int q=0,temp;
char ch;
while(ch=getchar(),ch!='\n')
{
int i=0;
bool judge=0;
temp=(int)ch;
s[temp-97]++;
for(i;i<26;++i)
{
if(a[i]==ch)
{
judge=1 ;
break;
}
}
if(judge==0)
{
a[q]=ch;
q++;
}
}
char w='0';
bool j=0;
for(int i=0;i<26;++i)
{
if(a[i]!=w&&s[(int)a[i]-97]==1)
{
cout<<a[i];
j=1 ;
break;
}
}
if(j==0)
cout<<"no";
}
3.石頭剪子布,是一種猜拳遊戲。起源於中國,然後傳到日本、朝鮮等地,隨著亞歐貿易的不斷髮展它傳到了歐洲,到了近現代逐漸風靡世界。簡單明瞭的規則,使得石頭剪子布沒有任何規則漏洞可鑽,單次玩法比拼運氣,多回合玩法比拼心理博弈,使得石頭剪子布這個古老的遊戲同時用於“意外”與“技術”兩種特性,深受世界人民喜愛。
遊戲規則:石頭打剪刀,布包石頭,剪刀剪布。
現在,需要你寫一個程式來判斷石頭剪子布遊戲的結果。
#include <iostream>
#include <string>
using namespace std;
int Num(string);
int main() {
int n;
int a,b;
cin>>n;
string player;
for(int i=0;i<n;++i)
{
cin>>player;
a=Num(player);
cin>>player;
b=Num(player);
a=a-b;
if((a==-1)|(a==2))
{
cout<<"Player1"<<endl;
}
else if((a==1)|(a==-2))
{
cout<<"Player2"<<endl;
}
else
{
cout<<"Tie"<<endl;
}
}
}
int Num(string s)
{
if(s=="Rock")
{
return 0;
}
else if(s=="Scissors")
{
return 1;
}
else if(s=="Paper")
{
return 2;
}
}
4.輸入1行句子(不多於200個單詞,每個單詞長度不超過100),只包含字母、空格和逗號。單詞由至少一個連續的字母構成,空格和逗號都是單詞間的間隔。
試輸出第1個最長的單詞和第1個最短單詞。
#include <iostream>
#include <string>
using namespace std;
string str[200];
int main() {
string maxs,mins,s="";
int i=0;
bool judge=0;
char ch;
while((ch = getchar())!='\n')
{
if(judge == 1 && (ch == ' ' || ch == ','))
continue;
if(ch != ' ' && ch != ',')
{
s += ch;
str[i]=s;
judge=0;
}
else
{
s="";
judge=1;
if(str[0]!=s)
i++;
}
}
maxs=str[0];
mins=str[0];
for(int i=0;i<200;i++)
{
if(str[i].size() > maxs.size()){
maxs = str[i];
}
if(!str[i].empty() && str[i].size() < mins.size()){
mins = str[i];
}
}
cout<<maxs<<endl<<mins;
}
5.在情報傳遞過程中,為了防止情報被截獲,往往需要對情報用一定的方式加密,簡單的加密演算法雖然不足以完全避免情報被破譯,但仍然能防止情報被輕易的識別。我們給出一種最簡的的加密方法,對給定的一個字串,把其中從a-y,A-Y的字母用其後繼字母替代,把z和Z用a和A替代,其他非字母字元不變,則可得到一個簡單的加密字串。
#include <iostream>
#include <string>
using namespace std;
int main() {
char s[90];
gets(s);
for(int i=0;s[i];i++)
{
if(isalpha(s[i]))
{
if(s[i]=='z')
{
s[i]='a';
}
else if(s[i]=='Z')
{
s[i]='A';
}
else
s[i]=(char)((int)s[i]+1);
}
}
cout<<s;
}