好友
阅读权限10
听众
最后登录1970-1-1
|
本帖最后由 MichealGeng 于 2015-4-18 12:10 编辑
背景
小伙伴参加了企鹅厂的2015校招笔试,有五道大题,拿出三道算法类的题尝试着实现实现。这是第一道题:抽奖
第二题:整形长度计算算法可以看这里
题目
这是第一道题,题目大意是:一个商场进行一场抽奖活动,其中有两个奖项,第一个奖项A抽中的概率是1/6,第二个奖项B抽中的概率是5/6;用C语言编码实现这个抽奖程序。 题目通过一个XML文档给出。
分析
题目相对简单,考察对随机数的应用,大概思路应该是:
- 生成一个真随机数
- 随机数对6取余,得到的余数一定是0、1、2、3、4、5共六个数
- 将这六个数分成两份(A和B),其中一份只有0这一个项,其余一份有1、2、3、4、5五个项。对随机数取余后的数进行比较,看它那一份中,借此判断出本次抽奖的结果
源代码
[C] 纯文本查看 复制代码
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
bool draw(); // 抽奖函数,结果为A返回true,结果为B返回false
int main()
{
char ret;// 记录结果
if(draw()) // 进行抽奖
ret='A';// 返回true,抽奖结果为A
else // 否则结果为B
ret='B';
printf("抽奖结果为:%c\n",ret); // 输出抽奖结果
return 0;
}
bool draw() // 抽奖函数实现
{
int ran; // 记录随机数对六取余的值
srand( (unsigned)time( NULL ) ); // 置随机数种子
ran = rand()%6; // 随机数对6取余
if(0 == ran) // 若ran为0
return true; // 返回true
else // 若ran不为0 ,返回false
return false;
}
总结
这抽奖问题相对简单,主要考察队C语言部分函数的应用,以及对多种编程语言了解掌握能力的初步考察。
|
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|