资源描述:
《2012程序设计c大赛及答案(修正)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、C一、填空题(本大题两种题型,程序填空或写结果,程序填空要求每空仅填一条语句,即不能出现分号)(共40分)1、求17922和5394的最小公倍数。(共5分)答案:答案:5555822、分解成质因数(如输出435234,251171732)(共5分)voidprim(intm,intn){if(m>n){while(m%n!=0)n++;;;printf("%d",n);}}voidmain(){intn=435234;printf("%d,",n);prim(n,2);}答案:m/=n;prim(m,n);3、从数字1开始向右顺
2、时针方向移动,可以得到如下的5×5的螺旋:(共10分)21222324252078910196121118543121716151413可以算出对角线上数字之和是101.1001×1001的螺旋中对角线上数字之和是?答案:6691710014、欧拉曾发表过一个著名的二次公式:n2+ n + 41。这个公式对于0到39的连续数字能够产生40个质数。但是当n=40时,402+40+41=40(40+1)+41能够被41整除。当n=41时,412+41+41显然也能被41整除。利用计算机,人们发现了一个惊人的公式:n2-79n+160
3、1,这个公式对于n=0到79能够产生80个质数。这个公式的系数,-79和1601的乘积是-126479。考虑如下形式的二次公式:n2+an+b, 其中
4、a
5、1000,
6、b
7、1000。找出对于能够为从0开始的连续的n产生最多数量的质数的二次公式,写出该公式的系数a和b的乘积。答案:答案:-59231(a=-61b=971n=70)1、有一个整形数组a,长度为n,数组里有正数也有负数。(每空5分,共10分)数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。例如:输入的数组为1,-2,3,10,
8、-4,7,2,-5,和最大的子数组为3,10,-4,7,2,因此输出为该子数组的和18。完成此函数:intmaxsum(int*a,intn){ints1=a[0];ints2=0;for(intj=0;j=0);else;if(s2>s1)s1=s2;}returns1;}答案:s2+=a[j];s2=a[j];测试答案:inta[9]={1,-2,2,2,-3,2,0,2,-2};最大和是5二、编程题(要求能编译通过,并严格按格式输出正确结果,任何字符包括空格与答案不一致将判为错误)(共60分)1
9、、(共10分)一百个灯泡排成一排,第一轮将所有灯泡打开;第二轮每隔一个灯泡关掉一个。即排在偶数的灯泡被关掉,第三轮每隔两个灯泡,将开着的灯泡关掉,关掉的灯泡打开。依次类推,第n轮结束的时候,还有几盏灯泡亮着。程序输入n(0voidmain(){intlight[101]={0};intlun=0;scanf("%d",&lun);for(inti=2
10、;i<=lun;++i){intj=1;intval=0;while(true){val=i*j;++j;if(val<=100){light[val]=~light[val];}else{break;}}}intcount=0;for(intn=1;n<101;++n){if(light[n]==0){++count;}}printf("%d",count);}2、(共20分)用天平称重时,我们希望用尽可能少的砝码组合称出尽可能多的重量。如果只有5个砝码,重量分别是1,3,9,27,81。则它们可以组合称出1到121之间任
11、意整数重量(砝码允许放在左右两个盘中)。本题目要求编程实现:对用户输入的重量(1~121),给出砝码组合方案(用加减式表示,减代表砝码放在物品盘)。例如:输入:5输出:9-3-1输入:19输出:27-9+1要求程序输出的组合总是大数在前小数在后。测试答案1:输入:41输出:81-27-9-3-13、(共30分)有一堆石子,A,B两人轮流从中取出石子,每次取出的石子数目只能为1,3,7或8,最后一枚石子谁取到就是输方。A,B两人都足够聪明,不会做出错误的判断。现给出一定数目的石子,A先取石子,计算A最终是输是赢,赢用1表示,输用0
12、表示.问题描述:第一行为一个整数n(0