2018第十六届绍兴市少儿信息学竞赛初赛试题(c ) 联系客服

发布时间 : 星期日 文章2018第十六届绍兴市少儿信息学竞赛初赛试题(c )更新完毕开始阅读d128f11ab8d528ea81c758f5f61fb7360a4c2b50

int s(int n, int t) {

if(n==0) return(1);

else if (t==0) return s(n-l, t+1);

else return s(n-l, t+l)+s(n, t-1); }

int main(){ cin>>n;

cout<

输出:

四、完善程序(根据问題要求和已有程序,在程序空格处填入适当的语句或符号,使程序完整。本题每3分,共30分) 1. 完全数 【问题描述】

在泽泽参加的“奇思妙想学数学”的思维拓展兴趣课中,老师抛出了一些有趣好玩的数 字游戏,取名为“完全数”,所谓完全数是真约数之和等于它本身的数。例如28的约数是 1, 2, 4,7, 14,并且1+2+4+7+14=28,所以28是完全数。这个游戏对数字特别感兴趣的泽泽来说是“小意思”,因为他认为“完全数”是最美的数字。泽泽不屑于判断单个数是否是完全数,他想找出一段连续数据里面的所有完全数,如求x?y (2<=x<=y<=10000)中的完全数。但是他又感觉每个完全数进行正向输出又没有反向输出好看,所以他想把找到的完 全数反向输出。当然如果这段数据里面没有完全数就应该输出no。 【输入格式】

一行:包括两个数,x y代表求x?y之间的完全数。 【输出格式】

输出可能有多行,每行一个反向输出的完全数。注:如果没有完全数,则还应该输出 no。 【输入样例1】 2 29

【输出样例1】 6 82

实现上述功能程序如下,请在划线处填入合适代码。 【程序清单】

#include using namespace std; int main(){

int x, y,i,t,w,xx,s,j, sum,p;

cin>>x>>y;

for(i= ① ;i<=y;i++) { s=1;

for(j=2;j<=sqrt(i);j++) //求出约数的之和 if( ② ) {

if(j*j!=i) ③ else s=s+j; }

if(s==i) //如果找到话就输出 {

w=w+l; while(s>0) {

④ ; s=s / 10; }

cout<

if( w==0) ⑤ ;

return 0; }

2.罗马数字 【问题描述】

聪明的泽泽经过独立的思考成功地找到了 x?y中所有的完全数,他在教室里兴奋得“一蹦三尺高”,还不停地攥紧拳头,髙呼“耶。。。。”。这时老师为了让他能够乘胜追击,锦上添 花,再次抛出了另一个数学游戏,叫做“罗马数字游戏”。老师先给大家描述这个游戏,游戏中的数字 1,2,3,4,5,6,7,8,9 分别写为’I’, ’II’, ’III’, ’IV’, ’V’, ’VI’, ’VII’, ’VIII’, ’IX’;将数字 10,20,30,40,50,60,70,80,90 分别写为’X’, ’XX’, ’XXX’, ’XU’, ’L’, ’LX’, ’LXX’, ’LXXX’, ’XC’。

那么其余的数字怎么用罗马数字表示呢?另外老师给了大家一点小提示:任何小于100 的数字都可以通过分别转换几十和几个后,结果可以用罗马数字组合在一起。例如,数字 48转换为40加8,因为40可用XL表示,8可用VIII表示,所以48可以组合成XLVIII。

本次游戏将会给你一个用罗马数字表示的数。请同学们重新排列这个字符,目的是找到用罗马数字表示的尽可能小的数字。 【输入格式】

输入一个整数B (1≤B<100),用罗马数字表示的整数。 【输出格式】

请根据输入的这个罗马数字,重新排列,以便找到最小的用罗马数字表示的整数。 【输入祥例1】 VII

【输出样例1】 VII

【输入样例2】

VI

【输出祥例2】 IV

为实现上述功能请在划线处填上合适代码。 【程序清单】

#include using namespace std; int i, j, k; char t; string a[l00]; string x, y;

void sw( ⑥ ){ int i, j;

for(i= ⑦ ) for(j=i+l;j

if(x[i]>x[j]) {

t=x[i] ;x[i] =x[j] ;x[j] =t; } }

int main(){

a[l]= 'I'; a[2]= 'II'; a[3]= 'III'; a[4]= 'IV'; a[5]= 'V'; a[6]= 'VI'; a[7]= 'VII'; a[8]= 'VIII'; a[9]= 'IX'; a[10]= 'X'; a[20]= 'XX'; a[30]= 'XXX'; a[40]= 'XL'; a[50]= 'L'; a[60]= 'LX'; a[70]= 'LXX'; a[80]= 'LXXX'; a[90]= 'XC';

for(k=l;k<=99;k++) {

y=a[K];

if (i !=0)

⑧ ; cin>>x; sw(x);

for(k=l;k<=99;k++) {

y=a[k]; if(x==y) {

⑩ ; return 0; } }

return 0; } 幸福,不能用手去捉摸,只能用心去琢磨,只能静静去体味。细细地品味了,你就享受到了它温馨的暖,或浓或淡的甜!