PTA12.09作业

简介: PTA12.09作业

void delchar(char* str, char c)
{
    char* p = str;
int i = 0;
while (*p)
{
    if (*p != c)
    str[i++] = *p;
    p++;
}
str[i] = '\0';
}

用一个指针遍历,遇到不是该字符的,就把它赋给str数组,让后让指针向后移动

void f( char *p )
{
    int left = 0, i = 0;
    for(i = 0;;i++)
    {
        if(*(p+i)=='\0')
            break;
    }
    int right = i - 1;
    while(left<right)
    {
        char ch = 0;
        ch = *(p+left);
        *(p+left) = *(p+right);
        *(p+right) = ch;
        left++;
        right--;
    }
}

这个就是给定一个左右指针,当左指针小于右指针时,进入循环,将左右两指针所指向空间中的元素进行交换,最后就可以得到字符串的逆序,当然Python中有现成的内置函数会更简单一点

int main()
{
    char str[30];
    gets(str);
    char* p = str;
    int i = 0;
    while (*p != '#')
    {
        if (*p >= 'A' && *p <= 'Z')
        {
            *p += 32;
            str[i++] = *p;
            p++;
        }
        else if (*p >= 'a' && *p <= 'z')
        {
            *p -= 32;
            str[i++] = *p;
            p++;
        }
        else
        {
            str[i++] = *p;
            p++;
        }
    }
    str[i] = '\0';
    printf("%s", str);
    return 0;
}

int main()
{
    char str[80], c;
    gets(str);
    scanf("%c",&c);
    int count = 0;
    char* p=str;
    while(*p)
    {
        if(*p == c)
            count++;
        p++;
    }
    printf("%d",count);
}

int is_shu(char* p)
{
    for (int i = 0; i < 17; i++)
    {
        if (*(p + i) <= '0' && *(p + i) >= '9')
        {
            return 0;
        }
    }
}
int Mod(char* p)
{
    int sum = 0;
    sum = ((*p)-'0') * 7 + (*(p + 1)-'0') * 9 + (*(p + 2)-'0') * 10 + (*(p + 3)-'0') * 5 + (*(p + 4)-'0') * 8 + (*(p + 5)-'0') * 4 + (*(p + 6)-'0') * 2 + (*(p + 7)-'0') * 1 + (*(p + 8)-'0') * 6 + (*(p + 9)-'0') * 3 + (*(p + 10)-'0') * 7 + (*(p + 11)-'0') * 9 + (*(p + 12)-'0') * 10 + (*(p + 13)-'0') * 5 + (*(p + 14)-'0') * 8 + (*(p + 15)-'0') * 4 + (*(p + 16)-'0') * 2;
    return sum % 11;
}
int True(char* p)
{
    if(is_shu(p))
        return 0;
    int ret = Mod(p);
    if (ret == 0)
    {
        if (*(p + 17) == '1')
            return 1;
        return 0;
    }
    if (ret == 1)
    {
        if (*(p + 17) == '0')
            return 1;
        return 0;
    }
    if (ret == 2)
    {
        if (*(p + 17) == 'X')
            return 1;
        return 0;
    }
    if (ret == 3)
    {
        if (*(p + 17) == '9')
            return 1;
        return 0;
    }
    if (ret == 4)
    {
        if (*(p + 17) == '8')
            return 1;
        return 0;
    }
    if (ret == 5)
    {
        if (*(p + 17) == '7')
            return 1;
        return 0;
    }
    if (ret == 6)
    {
        if (*(p + 17) == '6')
            return 1;
        return 0;
    }
    if (ret == 7)
    {
        if (*(p + 17) == '5')
            return 1;
        return 0;
    }
    if (ret == 8)
    {
        if (*(p + 17) == '4')
            return 1;
        return 0;
    }
    if (ret == 9)
    {
        if (*(p + 17) == '3')
            return 1;
        return 0;
    }
    if (ret == 10)
    {
        if (*(p + 17) == '2')
            return 1;
        return 0;
    }
}
int main()
{
    int n, a = 0, count = 0;
    char arr[20];
    scanf("%d", &n);
    getchar();
    a = n;
    while (n > 0)
    {
        gets(arr);
        if (True(arr))
            count++;
        else
        {
            printf("%s\n", arr);
        }
        n--;
    }
    if (count == a)
        printf("All passed");
}

这道题并不难,将它按题意拆解成一个一个的小问题即可,

1.判断这17位上是否都位数字

2.求这17位上的数字之和并%11

3.对照这个value判断最后一位上的数字是否正确,这一步用哈希表键值对,或者C++中的map最好,不过当时没有学

相关文章
|
6月前
PTA-邮资计算
邮资计算
57 0
PTA 7-2 找奇葩 (20 分)
在一个长度为 n 的正整数序列中,所有的奇数都出现了偶数次,只有一个奇葩奇数出现了奇数次。你的任务就是找出这个奇葩。
108 0
|
测试技术
PTA1002 写出这个数
PTA1002 写出这个数
52 0
|
调度 C语言 C++
PTA L2-014 列车调度(25分)
两端分别是一条入口(Entrance)轨道和一条出口(Exit)轨道,它们之间有N条平行的轨道。每趟列车从入口可以选择任意一条轨道进入,最后从出口离开。在图中有9趟列车,在入口处按照{8,4,2,5,3,9,1,6,7}的顺序排队等待进入。如果要求它们必须按序号递减的顺序从出口离开,则至少需要多少条平行铁轨用于调度? 输入格式: 输入第一行给出一个整数N (2 ≤ N ≤105),下一行给出从1到N的整数序号的一个重排列。数字间以空格分隔。 输出格式: 在一行中输出可以将输入的列车按序号递减的顺序调离所需要的最少的铁轨条数。
137 0
|
存储
PTA L1-003 个位数统计(PTA拿下计划1)
PTA L1-003 个位数统计(PTA拿下计划1)
102 0
|
算法 C++
C++初阶作业 Vector作业详解
C++初阶作业 Vector作业详解
146 0
C++初阶作业 Vector作业详解
|
测试技术
PTA 1039 到底买不买 (20 分)
小红想买些珠子做一串自己喜欢的珠串。卖珠子的摊主有很多串五颜六色的珠串,但是不肯把任何一串拆散了卖。
118 0
|
机器学习/深度学习 人工智能 JavaScript
|
缓存 双11 C语言
四道oj题作业
四道oj题作业
107 0
PTA 1046 划拳 (15 分)
划拳是古老中国酒文化的一个有趣的组成部分。酒桌上两人划拳的方法为:每人口中喊出一个数字,同时用手比划出一个数字。
105 0