字符串简单处理

本文介绍了四个使用C语言实现的字符串处理案例,包括统计数字字符个数、寻找首次出现的单一字符、比较DNA序列的相关性及判断石头剪子布游戏胜负。通过这些实例,读者可以了解如何利用C语言的基本输入输出函数进行字符串操作。
摘要由CSDN通过智能技术生成

1.读入

(1)scanf语句

格式: scanf("%s",字符串名称)

       字符串名称前不加&

        系统会在字符串后自动加上\0因此在输入时只需输入字符串的内容

       无法输入空格,遇到空格自动断开

(2)gets语句

 格式:gets(字符串名称)

      gets只能读入一个字符串,能读入空格

2.输出

(1)printf语句

格式:printf("%s",字符串名称) 

    输出字符串而非数组中的元素

    输出不包括\0

(2)puts语句

  格式:puts(字符串名称)

01:统计数字字符个数

总时间限制: 
1000ms
内存限制: 
65536kB
描述

输入一行字符,统计出其中数字字符的个数。

输入
一行字符串,总长度不超过255。
输出
输出为1行,输出字符串里面数字字符的个数。
样例输入
Peking University is set up at 1898.
样例输出
4
来源
习题(7-1) 医学部 2010 期末试题 樊波
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std;
char a[10000];
int main()
{
    int sum=0;
    gets(a);
    int l=strlen(a);
    for(int i=0;i<l;i++)
    {
        if(a[i]>='0'&&a[i]<='9')
        sum++;
    }    
    printf("%d",sum);
    return 0;
}

02:找第一个只出现一次的字符

总时间限制: 
1000ms
内存限制: 
65536kB
描述

给定一个只包含小写字母的字符串,请你找到第一个仅出现一次的字符。如果没有,输出no。

输入
一个字符串,长度小于100000。
输出
输出第一个仅出现一次的字符,若没有则输出no。
样例输入
abcabd
样例输出
c
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
char a[100001],b[300];
int c[25];
int main()
{
    gets(a);
    int l=strlen(a);
    for(int i=0;i<l;i++)
       b[a[i]]++;
    for(int i=0;i<l;i++)
           if(b[a[i]]==1)
         {
           printf("%c",a[i]);
           return 0;
         }
    printf("no");
    return 0;
}

03:基因相关性

总时间限制: 
1000ms
内存限制: 
65536kB
描述

为了获知基因序列在功能和结构上的相似性,经常需要将几条不同序列的DNA进行比对,以判断该比对的DNA是否具有相关性。

现比对两条长度相同的DNA序列。首先定义两条DNA序列相同位置的碱基为一个碱基对,如果一个碱基对中的两个碱基相同的话,则称为相同碱基对。接着计算相同碱基对占总碱基对数量的比例,如果该比例大于等于给定阈值时则判定该两条DNA序列是相关的,否则不相关。

输入
有三行,第一行是用来判定出两条DNA序列是否相关的阈值,随后2行是两条DNA序列(长度不大于500)。
输出
若两条DNA序列相关,则输出“yes”,否则输出“no”。
样例输入
0.85
ATCGCCGTAAGTAACGGTTTTAAATAGGCC
ATCGCCGGAAGTAACGGTCTTAAATAGGCC
样例输出
yes
#include<cstdio>
#include<string>
#include<iostream>
using namespace std;
int main() 
{
    double a;
    scanf("%lf",&a);
    int i,p=0,len;
    double m;
    string s1,s2;
    cin>>s1;
    cin>>s2;
    int l1=s1.length(),l2=s2.length();
    if(l1>12) len=l1;
    else len=l2;
    for(i=0; i<len; i++) 
    {
        if(s1[i]==s2[i]) 
        {
            p++;
        } 
    }
    m=1.0*p/len;
    if(m>=a) cout<<"yes"<<endl;
    else cout<<"no"<<endl;
    return 0;
}

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是布。混混谔谔
#include<cstdio>
#include<string>
#include<iostream>
using namespace std;
int main() 
{
    int n;
    cin>>n;
    char a[500],b[500]; 
    for(int i=0;i<n;i++)
     {           
         cin>>a>>b;
         if(a[0]=='R'&&b[0]=='S'||a[0]=='S'&&b[0]=='P'||a[0]=='P'&&b[0]=='R') cout<<"Player1"<<endl;
         else 
              if(a[0]==b[0]) cout<<"Tie"<<endl; 
              else cout<<"Player2"<<endl;
      }    
    return 0;
}

 

转载于:https://www.cnblogs.com/z360/p/6372714.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值