关闭

C++两道笔试题

标签: 笔试题
412人阅读 评论(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;
}
1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:184877次
    • 积分:4991
    • 等级:
    • 排名:第5634名
    • 原创:291篇
    • 转载:2篇
    • 译文:0篇
    • 评论:96条
    文章分类