PAT|中国大学MOOC-翁恺-C语言程序设计习题集33-36

10-1. 在字符串中查找指定字符(15)

输入一个字符串S,再输入一个字符c,要求在字符串S中查找字符c。如果找不到则输出“Not found”;若找到则输出字符串S中从c开始的所有字符。

输入格式:

输入在第1行中给出一个不超过80个字符长度的、以回车结束的非空字符串;在第2行中给出一个字符。

输出格式:

在一行中按照题目要求输出结果。

输入样例1:
It is a black box
b
输出样例1:
black box
输入样例2:
It is a black box
B
输出样例2:
Not found

#include 
#include 
int main()
{
    char a;
    char str[90];
    int len, i, p, flag;
    gets(str);
    a = getchar();
    len = strlen(str);
    flag = 0;
    for (i = 0; i <= len - 1; i++)
    {
        if (str[i] == a)
        {
            p = i;
            flag = 1;
            break;
        }
    }
    if (flag == 0)
    {
        printf("Not found");
    }
    else
    {
        for (i = p; i <= len - 1; i++)
        {
            printf("%c", str[i]);
        }
    }
    return 0;
}

10-2. 删除字符串中的子串(20)

输入2个字符串S1和S2,要求删除字符串S1中出现的所有子串S2,即结果字符串中不能包含S2。

输入格式:

输入在2行中分别给出不超过80个字符长度的、以回车结束的2个非空字符串,对应S1和S2。

输出格式:

在一行中输出删除字符串S1中出现的所有子串S2后的结果字符串。

输入样例:
Tomcat is a male ccatat
cat
输出样例:
Tom is a male.

#include 
#include 
int main()
{
    char str1[100];
    char str2[100];
    int len1, len2, i, j, k,flag,n,count;
    count = 0;
    gets(str1);
    gets(str2);
    len1 = strlen(str1);
    len2 = strlen(str2);
    for (i = 0; i <= len1 - 1; i++)//计算出现下面首字母的次数,也是进行分隔字符筛选的循环次数
    {
        if (str1[i] == str2[0])
        {
            count++;
        }
    }
    for (n = 1; n <= count - 1; n++)
    {
        for (i = 0; i <= len1 - 1; i++)//从第一位开始遍历字符串2的首字母
        {
            if (str1[i] == str2[0])
            {
                flag = 0;
                for (j = i; j <= i + len2 - 1; j++)//从字符串一截取字符串二长度的字符
                {
                    if (str1[j] != str2[j - i])//判断两组字符是否相对
                    {
                        flag = 1;
                        break;
                    }
                }
                if (flag == 0)//长得相同就将右边的字符向左移字符串2的长度,并且将字符串1减去该长度
                {
                    for (k = i; k <= len1 - 1; k++)
                    {
                        str1[k] = str1[k + len2];
                    }
                    len1 = len1 - len2;
                }
            }
        }
    }
    for (i = 0; i <= len1 - 1; i++)//输出处理后字符串
    {
        printf("%c", str1[i]);
    }
    return 0;
}

10-3. 字符串逆序(15)

输入一个字符串,对该字符串进行逆序,输出逆序后的字符串。

输入格式:

输入在一行中给出一个不超过80个字符长度的、以回车结束的非空字符串。

输出格式:

在一行中输出逆序后的字符串。

输入样例:
Hello World!
输出样例:
!dlroW olleH

#include 
#include 
int main()
{
    char str[10000];
    int len, i;
    gets(str);
    len = strlen(str);
    for (i = len - 1; i >= 0; i--)
    {
        printf("%c", str[i]);
    }
    return 0;
}

10-4. 字符串循环左移(20)

输入一个字符串和一个非负整数N,要求将字符串循环左移N次。

输入格式:

输入在第1行中给出一个不超过100个字符长度的、以回车结束的非空字符串;第2行给出非负整数N。

输出格式:

在一行中输出循环左移N次后的字符串。

输入样例:
Hello World!
2
输出样例:
llo World!He

#include 
#include 
int main()
{
    char str[250];
    int num, len, i;
    gets(str);
    scanf("%d", &num);
    len = strlen(str);
    for (i = len; i <= 2 * len - 1; i++)
    {
        str[i] = str[i - len];
    }
    num = num%len;
    for (i = num; i <= num+len-1; i++)
    {
        printf("%c", str[i]);
    }
    return 0;
}

你可能感兴趣的:(PAT,PAT)