首页 > 编程语言 > 详细

C++两道笔试题

时间:2015-07-10 15:17:37      阅读:289      评论:0      收藏:0      [点我收藏+]
//现给定一个含有n个元素的数组,请随机获取其中的m个元素(不能重复获取)。

#include <iostream>
#include <stdlib.h>
using namespace std;
void Grial(int a[], int n,int x)
{
    int *b = new int[x];
    int k = 0;
    int i = n;
    while (x--)
    {
        int j = rand() % i;
        b[k++] = a[j];
        a[j] = a[i - 1];
        i--;
    }
    for (i=0; i < k; i++)
    {
        cout << b[i] << endl;
    }
}
int main()
{
    int a[] = {1,2,3,4,5,6,7,8,9,10};
    Grial(a,sizeof(a)/sizeof(int),4);
    return 0;
}

//题目描述
//现给定n个物品,其概率分别为P1, P2, P3...Pn,请设计一个接口,根据概率,随机获取一个物品。
#include <iostream>
#include <string.h>
#define _N 6
static flags = 0;
using namespace std;
const char *str[_N]={
                   "物品1", "物品2", "物品3", 
                   "物品4","物品5", "物品6",
                   };
const double a[] = {0.1,0.05,0.05,0.4,0.2,0.2};
int index(int x)
{
    int b[] = { 0,0.1 * 100, (0.1+0.05) * 100, (0.05*2+0.1) * 100, 
                (0.4+0.1+0.1) * 100, (0.2+0.4+0.2) * 100,100 };
    int i = 0;
    for (; i < _N; i++)
    {
        if (b[i] < x && b[i + 1] >= x)
            return i + 1;
    }
    flags = 1;
    return 0;
}
const char *Grial()
{
    return str[index(rand() % 100)];
}
int main()
{
    cout << Grial() << endl;
    return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

C++两道笔试题

原文:http://blog.csdn.net/liuhuiyan_2014/article/details/46829815

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!