测试时间60分钟
编程题1(30分)
设计3个线程,
线程1:每隔1秒对计数器count加2
线程2:每隔2秒对计数器count减1
线程3:监听count的数值,当count为5的整数倍的时候,输出该值,当count为100时,结束所有线程
编程题2(30分)
某应用中需要对一百万个整数元素进行排序,每个元素的取值在0~4之间。排序算法的基本思想是:对每一个元素x,确定小于等于x的元素个数(记为m),将x放在输出元素序列的第m个位置,对于元素值重复的情况,依次放入第m-1,m-2、···个位置。例如如果元素值小于等于3的元素个数有8个,其中元素值等于3的元素个数有2个,则3应该在输出元素序列的第8个位置,第7个位置上。
算法具体的步骤为:
1、统计每个元素值得个数
2、统计小于等于每个元素值的个数
3、将输入元素序列中的每个元素放入有序的输出元素序列
请根据算法要求完成排序算法
int [] sort(int [] array);//array为待排序的整数元素数组,返回是排序后的整数元素数组
编程题3(40分)
编程题1(30分)
设计3个线程,
线程1:每隔1秒对计数器count加2
线程2:每隔2秒对计数器count减1
线程3:监听count的数值,当count为5的整数倍的时候,输出该值,当count为100时,结束所有线程
编程题2(30分)
某应用中需要对一百万个整数元素进行排序,每个元素的取值在0~4之间。排序算法的基本思想是:对每一个元素x,确定小于等于x的元素个数(记为m),将x放在输出元素序列的第m个位置,对于元素值重复的情况,依次放入第m-1,m-2、···个位置。例如如果元素值小于等于3的元素个数有8个,其中元素值等于3的元素个数有2个,则3应该在输出元素序列的第8个位置,第7个位置上。
算法具体的步骤为:
1、统计每个元素值得个数
2、统计小于等于每个元素值的个数
3、将输入元素序列中的每个元素放入有序的输出元素序列
请根据算法要求完成排序算法
int [] sort(int [] array);//array为待排序的整数元素数组,返回是排序后的整数元素数组
编程题3(40分)
某咖啡店在卖咖啡的时候,可以根据顾客的要求在其中加入各种配料,咖啡店会根据加入的配料来计算费用。咖啡店所供应的咖啡及配料的种类如下表格所示。
咖啡 | 价格/杯(¥) | 配料 | 价格/份(¥) |
蒸馏咖啡Espresso | 25 | 摩卡Mocha | 10 |
深度烘焙咖啡DarkRoast | 20 | 奶泡Whip | 8 |
请使用装饰器(Decorator)模式画出类图,并完成类的实现以及一杯深度烘焙咖啡加摩卡和奶泡的费用计算功能。
//============================================================================
// Name : RandNumber.cpp
// Author : phoenix
// Version : 1.0
// Copyright : Your copyright notice
// Description : 参考程序编程题2, Ansi-style
//============================================================================
#include <iostream>
#include <stdlib.h>
#include <time.h>
#define ARRAYSIZE 1000
int* sort(int array[]);
using namespace std;
int main() {
int *p;
int *pstart;
p = (int*)malloc(sizeof(int) * ARRAYSIZE);
if(NULL==p)
{
cout << "Memory Apply ERR" <<endl;
return -1;
}
srand((int)time(0));
for(int i=0; i!=ARRAYSIZE; i++)
*p++ = rand()%5;
for(int j=1; j<=ARRAYSIZE; j++)
{
cout<< *p--<< " ";
if(j%10 == 0)
cout <<endl;
}
cout <<endl;
pstart = sort(p);
for(int j=1; j<=ARRAYSIZE; j++)
{
cout<< *pstart++<< " ";
if(j%10 == 0)
cout <<endl;
}
cout <<endl;
free(p);
return 0;
}
int* sort(int array[])
{
int *p;
int Number[5] = {0};
int Count[5] = {0};
p = array;
for(int i=0; i!=ARRAYSIZE; i++)
{
if(0==array[i])
{
Number[0] += 1;
Count[0] +=1;
Count[1] +=1;
Count[2] +=1;
Count[3] +=1;
Count[4] +=1;
}
if(1==array[i])
{
Number[1] += 1;
Count[1] +=1;
Count[2] +=1;
Count[3] +=1;
Count[4] +=1;
}
if(2==array[i])
{
Number[2] += 1;
Count[2] +=1;
Count[3] +=1;
Count[4] +=1;
}
if(3==array[i])
{
Number[3] += 1;
Count[3] +=1;
Count[4] +=1;
}
if(4==array[i])
{
Number[4] += 1;
Count[4] +=1;
}
}
for(int j=0; j!=5; j++)
{
for(int i=0; i!=Number[j]; i++)
{
array[Count[j]-i] = j;
}
}
return p;
}