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

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;
}
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值