首届程序设计大赛题目及答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
首届程序设计大赛题目及答案
程序设计大赛题目
1. 硬币兑换:用一元人民币兑换一分、二分和五分的硬币,编程求出所有兑换方法,并打印每种情况下各面值硬币需几枚?(10分)
2. 旅馆里有一百个房间,从1到100编了号。第一个服务员把所有的房间门都打开了,第二个服务员把所有编号是2的倍数的房间“相反处理”,第三个服务员把所有编号是3的倍数的房间作“相反处理”,……,以后每个服务员都是如此。问第100个服务员来过后,哪几扇门是打开的。(所谓“相反处理”是:原来开着的门关上,原来关上的门打开。) (15分)
3. 整型数组,长度为10,输入数组各元后,求数组各元的平均值,并找出最接近平均值的那个元素。打印输出上述两个结果,用逗号隔开,不要有其它字符。(20分)
4. 编程求两个很长的整数之和,比如两个20位十进制整数。(很长的整数指无法用long型存储的数)(25分)
例如:
12345678900987654321+12345678900987654321=24691357801975308642
5.编写布雷程序。(30分)
在一个10*10的方格中,随机分布10个地雷,并在其它没有地雷的格中显示该方格周围相邻的方格中共有几枚地雷。
样例输出:(图中-1的位置表示地雷,其它值表示该位置相邻的八个格子中的地雷数)
答案:
第一题:
#include
using namespace std;
int main()
{
int i,j,k;
for(i=1;i<=20;i++)
for(j=1;j<=50;j++)
{
k=100-5*i-2*j;
if(k>0)
cout<<"五分硬币"<
}
system("pause");
return 0;
}
第二题:
#include
using namespace std;
int main()
{
int i,j; //i为服务员编号,j为房间编号
int a[101];
for(int t=1;t<101;t++)
a[t]=1;
for(i=2;i<101;i++)
for(j=i;j<101;j++)
if(j%i==0) a[j]*=-1;
cout<<"打开的房间为:";
for(i=1;i<101;i++)
if(a==1)
cout<
system("pause");
return 0;
}
第三题:
#include
#include
using namespace std;
int main()
{
int a[10],i,sum=0,n=0;
float ave,ca;
for(i=0;i<10;i++)
{
cin>>a;
sum+=a;
}
ave=sum/10.0;
cout<<"数组平均值为:"< ca=fabs(a[0]-ave); for(i=1;i<10;i++) { if( fabs(a-ave) { ca=fabs(a-ave); n=i; } } cout<<"最接近平均值的元素为第"< return 0; } 第四题: //长整数相加 #include #include #include #define LENGTH 10 using namespace std; class ClargeInt { static const int SIZE = LENGTH; //整数最长100位 int element[SIZE]; int _len; // 0 < _len < SIZE 整数的实际位数 int _OverFlow; //溢出标记,0 无溢出, 1 溢出 public: int* GetPosition() const { return (int*)element; } ClargeInt(void):_OverFlow (0) { int i; for (i = 0; i { element = 0; _len = SIZE; } } ClargeInt(int *data, int len):_OverFlow(0) { int i; for (i = 0; i < len; i++) { element = *(data+i); } _len = len; } ClargeInt(const ClargeInt& a) { int i; for (i = 0; i < a._len ; i++) { element = a.element; } _len = a._len; } void print(void) { int i; for (i = _len - 1 ; i >= 0 ; i--) printf("%1d",element); printf("\n"); } int GetLen()const { return _len; } int SetOverFlow(int OverFlow) { _OverFlow = OverFlow; }