2006年华为研发类笔试编程题

题目:网球中心共有100个网球场,每个单位可以来申请1到100的场地,申请的场地编号必须是连续的,如果场地已经被其他单位占用,就不能再次使用,而且单位在使用完场地后必须归还。请设计一个完整的系统(c语言)。(限时5分钟)
Tennis.h
struct TennisGround
{
int num;
char *agentName;
};
typedef struct TennisGround TG;
void mallocTG(TG *total);
void freeTG(TG *total);
Tennis.c
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <string.h>
#include "Tennis.h"
void mallocTG(TG *total)
{
int size, start,count = 0;
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);
if((total+start)->agentName != " ")
{
printf("malloc failed!\n");
exit(-1);
}
else
{
while(count < size)
{
(total+start+count)->agentName = agentName;
count++;
}
}
}
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;
}



======================================================================
华为D卷最后四大题
1、A1,A2....An和B交换资源,求写出PV操作的序列
2、非递归实现废物不拉屎数列.
3、折半查找干啥用的?
实现之.
4、实现有序链表上的插入

个人资料
onemore
等级:8
文章:133篇
访问:11.8w
排名: 4
上一篇: 华为笔试题含答案 [软件工程题]
下一篇:百度笔试题基础
猜你感兴趣的圈子:
华为笔试面试圈
标签: agentname、total、tg、printf、tennis、面试题
隐藏