字符串 精简8小题

字符编码

请将一串长度最长为5的纯字母文本译成一个密码,密码规律如下:用原来的字母后面的第4个字母代替原来的字母。如C用G代替(如果该字母没后面没有第4个字母可代替,则需从26字母表中的首字母开始代替,比如:W用A代替,Z用D代替),最后得到的文本即为密码。

输入格式:

输入一串文本,长度固定为5。

输出格式:

输出对应的密码。格式为:
password is 密码


#include<stdio.h>
int main()
{
    char x;
    printf("password is ");
    for(int i=0;i<5;i++)
    {
        x=getchar();
        if(x>='a'&&x<'w')
        printf("%c",x+4);
        else if(x>='A'&&x<'W')
            printf("%c",x+4);
        else if(x>='w'||x>='W')
            printf("%c",x-22);
    }
    return 0;
}

保留字母

编一个程序,输入一个允许带空格的字符串,将组成字符串的所有非英文字母的字符删除后输出。

输入格式:

一个字符串,长度不超过80个字符。

输出格式:

删掉非英文字母后的字符串。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{ 
    int i, len, j, t;
    char a[81];
    char b[81];
    memset(a, 0, sizeof(a));
    memset(b, 0, sizeof(b));
    gets(a);
    len = strlen(a);
    for(i = 0, j = 0; i < len; i++)
    {
        t = a[i];
        if((t >= 'A' && t <= 'Z') || (t >= 'a' && t <= 'z'))
       
        {
            b[j] = t;
            j++;
        }
    }
    puts(b);
    return 0;
}


大小写转换

输入一字符串,请把一串字符中的小写字母变成大写字符,大写字母变成小写字母,其他的保持不变。

输入格式:

输入有多组。
每组输入一个字符串,长度不大于80,不包含空格。

输出格式:

输出转换后的字符串

#include<stdio.h>
int main()
{
    char x;
    for(int i=0;i<80;i++)
    {
        x=getchar();
        if(x>='a'&&x<='z')
            printf("%c",x-32);
        else if(x>='A'&&x<='Z')
            printf("%c",x+32);
        else if(x==EOF) 
            break;
        else printf("%c",x);
    }
    return 0;
}


字符串分割

输入一个字符串,要求把这个字符串按照某个分隔符来分割成若干个字符串输出。

输入格式:

输入数据有多组(数据组数不超过 100),到 EOF 结束。

每组数据输入一行,格式为 "s c",其中 s 为一个不含空格且长度不超过 1000 的字符串,表示待分割的字符串;c 为一个不是空格的字符,表示分隔符。

输入数据保证在待分割的字符串中,分隔符至少出现一次且不会出现在字符串开头或末尾,并且不会出现连续多个分隔符的情况。

输出格式:

对于每组数据,输出分割后的字符串,每个字符串占一行。

输入样例:

123,DE ,
0123.a,/45/6.8 /

输出样例:

123
DE
0123.a,
45
6.8
#include<stdio.h>
int main()
{
    int x;
    char arr[1000],c;
    while(scanf("%s %c",arr,&c)!=EOF)
    {
        x=strlen(arr);
        for(int i=0;i<x;i++)
        {
            if(arr[i]==c)
                printf("\n");
            else printf("%c",arr[i]);
        }printf("\n");
    }return 0;
}

删除指定字符

从键盘输入一个字符串给str和一个字符给c,删除str中的所有字符c并输出删除后的字符串str。

输入格式:

第一行是一个字符串,不超过100个字符;
第二行是一个字符。

输出格式:

删除指定字符后的字符串。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
    char str[1000],c;
    int x;
  gets(str);
    scanf("%c",&c);
        x=strlen(str);
        for(int i=0;i<x;i++)
        {
            if(str[i]!=c)
            {
                printf("%c",str[i]);
            }
        }
    return 0;
}

 全字母句

全字母句 (pangram) 指包含字母表中全部 26 种英文字母(不区分大小写)的句子,其常被用于展示英文字体的显示效果。

输入多个句子,判断哪些句子是全字母句。

输入格式:

输入数据有多组(数据组数不超过 100),到 EOF 结束。

每组数据包含一行长度不超过 100 的字符串。

输出格式:

对于每组数据,输出一行。

如果是全字母句则输出 "Yes",否则输出 "No"(不包括引号)。

输入样例:

The quick brown fox jumps over the lazy dog.
The 6th ACM Funny Programming For/While Contest

输出样例:

Yes
No

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
    char str[101];
    int x,i;
    while(gets(str)!=NULL)
    {
           x=strlen(str);
        int arr[26]={0};
        for(i=0;i<x;i++)
        {
            if(str[i]>'A'&&str[i]<'Z')
                str[i]+=32;
            arr[str[i]-'a']++;
        }
        int num=0;
    for(i=0;i<26;i++)
    {
        if(arr[i]!=0)
            num++;
    }if(num==26)
        printf("Yes\n");
    else printf("No\n");
    }
    return 0;
}

回文串的判断

输入一个字符串,判断该字符串是否为回文,只考虑数字和字母字符,字母的大小写没有区别。
回文就是字符串中心对称,从左向右读和从右向左读的内容是一样的。

输入格式:

输入一串字符(长度小于100)。

输出格式:

若该串字符是回文串输出“yes",否则输出“no”。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
   int main()
   {
       char a[101];
       int n,i;
       gets(a);
       n = strlen(a);
       for(i=0;i<n/2;i++)
       {
           if(a[i]!=a[n-i-1])     //前后对应相等,若不相等结束循环;
            break;
       }
       if(i<n/2) printf("no\n");
       else printf("yes\n");

       return 0;
   }

 A-B

本题要求你计算A−B。不过麻烦的是,A和B都是字符串 —— 即从字符串A中把字符串B所包含的字符全删掉,剩下的字符组成的就是字符串A−B。

输入格式:

输入在2行中先后给出字符串A和B。两字符串的长度都不超过104,并且保证每个字符串都是由可见的ASCII码和空白字符组成,最后以换行符结束。

输出格式:

在一行中打印出A−B的结果字符串。

输入样例:

I love GPLT!  It's a fun game!
aeiou

输出样例:

I lv GPLT!  It's  fn gm!

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
    char a[10005],b[10005];
    gets(a);
    gets(b);
    int x,y;
    x=strlen(a);
    y=strlen(b);
    for(int i=0;i<x;i++)
    {
        int j;
        for(j=0;j<y;j++)
        {
            if(a[i]==b[j]) break;
        }
        if(j==y) printf("%c",a[i]);
    }
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值