题解 | #配置文件恢复#

配置文件恢复

https://www.nowcoder.com/practice/ca6ac6ef9538419abf6f883f7d6f6ee5

//先判断几个关键字,在判断首字母是r还是b,再分别利用strncmp判断
//这个题目的输入用例也许有疑问,利用while(gets(arr)!=EOF)进行输入会造成死循环
#include <stdio.h>
#include<string.h>
int Isres(char arr[20])
{
    int sz = strlen(arr);
    char p[5] = "reset";
    return !strncmp(arr, p, sz);
}
int Isresb(char arr[20], int k)
{
    int sz = strlen(arr);
    char p[5] = "reset", q[5] = "board";
    return !(strncmp(arr, p, k) || strncmp(arr + k + 1, q, sz - k - 1));
}
int Isrebb(char arr[20], int k)
{
    int sz = strlen(arr);
    char p[6] = "reboot", q[9] = "backplane";
    return !(strncmp(arr, p, k) || strncmp(arr + k + 1, q, sz - k - 1));
}
int Isboa(char arr[20], int k)
{
    int sz = strlen(arr);
    char p[5] = "board", q[3] = "add";
    return !((strncmp(arr, p, k) || strncmp(arr + k + 1, q, sz - k - 1)));
}
int Isbd(char arr[20], int k)
{
    int sz = strlen(arr);
    char p[5] = "board", q[6] = "delete";
    return !(strncmp(arr, p, k) || strncmp(arr + k + 1, q, sz - k - 1));
}
int Isbaa(char arr[20], int k)
{
    int sz = strlen(arr);
    char p[9] = "backplane", q[5] = "abort";
    return !(strncmp(arr, p, k) || strncmp(arr + k + 1, q, sz - k - 1));
}
int main()
{
    char arr[800][20];
    int j=0,i = 0, sz = 0, flag = 0, k = 0, r = 0, resb, rebb, bd, boa, baa;
    for(j=0;j<800;j++)
    {
        gets(arr[j]);
        sz = strlen(arr[j]);
        if(sz==0)
        {
            break;
        }
        flag = 0;
        for (i = 0; i < sz; i++)
        {
            if (arr[j][i] == ' ')
            {
                flag = 1;
                k = i;
                break;
            }
        }
        if (arr[j][0] == 'r')
        {
            if (!flag)
            {
                if (Isres(arr[j]))
                {
                    printf("reset what\n");
                    continue;
                }
                else
                {
                    printf("unknown command\n");
                    continue;
                }
            }
            else
            {
                if (Isresb(arr[j], k) && Isrebb(arr[j], k))
                {
                    printf("unknown command\n");
                    continue;
                }
                if (!(Isresb(arr[j], k) || Isrebb(arr[j], k)))
                {
                    printf("unknown command\n");
                    continue;
                }
                if (Isresb(arr[j], k))
                {
                    printf("board fault\n");
                    continue;
                }
                if (Isrebb(arr[j], k))
                {
                    printf("impossible\n");
                    continue;
                }
            }
        }
        else
        {
            if (Isbd(arr[j], k))
            {
                printf("no board at all\n");
                continue;
            }
            if (Isboa(arr[j], k) && Isbaa(arr[j], k))
            {
                printf("unknown command\n");
                continue;
            }
            if (!(Isboa(arr[j], k) || Isbaa(arr[j], k)))
            {
                printf("unknown command\n");
                continue;
            }
            if (Isboa(arr[j], k))
            {
                printf("where to add\n");
                continue;
            }
            if (Isbaa(arr[j], k))
            {
                printf("install first\n");
                continue;
            }
        }
    }
    return 0;
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务