华为笔试题_场地申请问题

  网球中心共有100个网球场,每个单位可以来申请1100的场地,申请的场地编号必须是连续的,如果场地已经被其他单位占用,就不能再次使用,而且单位在使用完场地后必须归还。请设计一个完整的系统。

#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <string.h>

struct TennisGround {
    
    
    int num;
    char *agentName;
};

typedef struct TennisGround TG;

void mallocTG ( TG *total ) {
    
    
    int size, start, count = 0;
    TG *check = NULL;
    char *agentName = ( char * ) malloc ( sizeof ( char ) * 10 );
    printf ( "Please input your agentName:" );
    scanf ( "%s", agentName );
    printf ( "Please input the size of the TennisGround:" );
    scanf ( "%d", &size );
    printf ( "Please input the TennisGround number you want to start:" );
    scanf ( "%d", &start );

    for ( check = total + start; check <= total + start + size; check++ ) {
    
    
        if ( check->agentName != " " ) {
    
    
            printf ( "malloc failed!\n" );
            exit ( -1 );
        }
    }

    while ( count < size ) {
    
    
        ( total + start + count )->agentName = agentName;
        count++;
    }

    free ( agentName );
}

void freeTG ( TG *total ) {
    
    
    char *an = ( char * ) malloc ( sizeof ( char ) * 10 );
    printf ( "please input agentName you want to free:" );
    scanf ( "%s", an );
    int count = 0;

    while ( count < 100 ) {
    
    
        if ( strcmp ( ( total + count )->agentName, an ) == 0 ) {
    
    
            ( total + count )->agentName = " ";
        }

        count++;
    }
}

int main() {
    
    
    int i;
    int sw;
    TG *total = ( TG * ) malloc ( sizeof ( TG ) * 100 );

    for ( i = 0; i < 100; i++ ) {
    
    
        ( total + i )->num = i;
        ( total + i )->agentName = " ";
    }

    while ( 1 ) {
    
    
        printf ( "*******Tennis Ground Mallocation******************\n" );

        for ( i = 0; i < 100; i++ ) {
    
    
            printf ( "%d(%s) ", ( total + i )->num, ( total + i )->agentName );

            if ( i % 5 == 0 ) {
    
    
                printf ( "\n" );
            }
        }

        printf ( "\n" );
        printf ( "**************************************************\n" );
        printf ( "Please input your choosen:(1-malloc,2-free):" );
        scanf ( "%d", &sw );

        if ( sw == 1 ) {
    
    
            mallocTG ( total );
        } else {
    
    
            freeTG ( total );
        }
    }

    return 0;
}

Guess you like

Origin blog.csdn.net/fukangwei_lite/article/details/121715577