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最好,不过当时没有学

相关文章
【PTA】7-8 到底有多二 (15分)
【PTA】7-8 到底有多二 (15分)
2193 0
|
2月前
PTA-邮资计算
邮资计算
42 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的整数序号的一个重排列。数字间以空格分隔。 输出格式: 在一行中输出可以将输入的列车按序号递减的顺序调离所需要的最少的铁轨条数。
110 0
PTA 7-4 胖达与盆盆奶 (20 分)
俗称“胖达”,会排队吃盆盆奶。它们能和谐吃奶的前提,是它们认为盆盆奶的分配是“公平”的,即:更胖的胖达能吃到更多的奶,等胖的胖达得吃到一样多的奶。
133 0
|
测试技术
PTA 1039 到底买不买 (20 分)
小红想买些珠子做一串自己喜欢的珠串。卖珠子的摊主有很多串五颜六色的珠串,但是不肯把任何一串拆散了卖。
101 0
|
机器学习/深度学习 人工智能 JavaScript
|
缓存 双11 C语言
四道oj题作业
四道oj题作业
99 0
PTA 7-1 多二了一点 (15 分)
若一个正整数有 2n 个数位,后 n 个数位组成的数恰好比前 n 个数位组成的数多 2,则称这个数字“多二了一点”。
97 0
L1-057 PTA使我精神焕发 (5 分)
L1-057 PTA使我精神焕发 (5 分)
71 0
L1-057 PTA使我精神焕发 (5 分)