鹅厂2015实习生笔试题

时间:2022-12-27 14:37:04

1、一个商场进行抽奖活动,有两个奖项,A奖项抽中的概率是1/6,B奖项抽中的概率是5/6,用C语言编码实现这个抽奖程序。

#include <stdio.h>
#include <time.h>
#include <stdlib.h>

//抽奖函数:1/6的概率返回true,5/6的概率返回false
bool draw(){
	int ran;
	srand( (unsigned)time(NULL) );
	ran = rand() % 6;
	if(0 == ran)
		return true;
	else
		return false;
}

int main(){
	char ret;
	if(draw())
		ret = 'A';
	else
		ret = 'B';
	printf("抽奖结果为: %c\n", ret);
	return 0;
}

2、在不使用sizeof()函数的情况下,取出本机的整形所占位数,如32位、64位等

#include <stdio.h>

int numOfInt(){
	int num1;
	int num2 = 0;
	char *p1 = (char *)&num1;
	char *p2 = (char *)&num2;
	for(int num = 0; num < 8; ++num){
		p1[num] = p2[num];
		if(num1 == num2)
			return ++num;
	}
	return -1;
}

int main(){
	printf("本台计算机整形所占位数为: %d\n", numOfInt() * 8);
	return 0;
}

3、在某个C/S模型中,服务器最大的处理量是每秒10000次,设计一个算法,保证服务器可以正常运行。

#include <time.h>

double Clock_Start = 0;
double Clock_End = 0;
int count = 0;
bool client = false;

void ProtectServer(){
	while(1){   //是服务端一直运行
		if(Clock_End >= 1000){
			/*处理当前等待队列的所有请求*/
			Clock_Start = clock(); //记录当前时间
			count = 0;
		}
		if(client){
			if(count < 10000){
				count++;
			}
			else{
				/*给服务器抛出满载异常*/
			}
		}
		client = false;
		Clock_End = clock() = Clock_Start;
	}
}