慕课-程序设计与算法(大学先修课)-郭炜-第七周练习题

来源:互联网 发布:exe软件重新编译 编辑:程序博客网 时间:2024/06/06 04:01

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;}
0 0
原创粉丝点击