2024年6月五六年级程序设计班队员选拔测试1

*
您的姓名:
*
班别:(填写数字,如:401)
1.
看程序写结果:
#include<iostream>
using namespace std;
int main(){
int i,s;
s=0;i=1;
do{s=s+i;i+=2;}while(i<=10);
cout<<s;
return 0;
}
输出:

2.
看程序写结果:
#include<iostream>
using namespace std;
int main(){
int i,j=0,s=0;
for(i=1;i<=5;i++){
j++;
if(i==3)continue;
s=s+j;
}
cout<<s;
return 0;
}
3.
看程序写结果:
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,i,j,k,a[1001],f;
cin>>n;
for(i=1;i<=n;i++)cin>>a[i];
for(i=1;i<=n-1;i++){
f=1;
for (j=1;j<=n-i;j++)
if(a[j]<a[j+1]){
k=a[j];
a[j]=a[j+1];
a[j+1]=k;
f=0;
}
if (f==1)break;
}
for(i=1;i<=n;i++)cout<<a[i]<<" ";
return 0;
}
输入:
5
6 3 2 4 9
输出:
________
4.
已知数列:2 5 8 11 14 17 20 ......请输出前n项的值,每一项以空格隔开.
样例:
输入:5
输出:2 5 8 11 14
#include<iostream>
using namespace std;
int n;
int f(int x,int y){
cout<<y<<" ";
if(x>=n)return 0;
f(x+1,【1】);
}
int main(){
cin>>n;
f(1,【2】);
return 0;
}
【1】:【2】:
5.
已知一个已经从小到大排序的数组,这个数组的一个平台(Plateau)就是连续的一串值相同的元素,并且这一串元素不能再延伸。例如,在 1,2,2,3,3,3,4,5,5,6中1,2-2,3-3-3,4,5-5,6都是平台。
试编写一个程序,接收一个数组,把这个数组最长的平台找出 来。在上面的例子中3-3-3就是最长的平台。
【输入】
输出最长平台的长度。
【输出】
按顺序输出每个数的出现次数,一行一个数。如果没有出现过,则输出0
对于例子中的数组,最大的数是3,因此我们只统计{0,1,2,3}的出现频数。
【输入样例】
10
1 2 2 3 3 3 4 5 5 6
【输出样例】
3
参考程序:
#include<iostream>
using namespace std;
int main()
{
int n,a[100001];
int max=-9999,len=1;
int i;
cin>>n;//输入数组大小n
a[0]=-3456497;//保证a[0]与a[1]不相同
for(i=1;i<=n;i++)
{
cin>>a[i];//输入元素
if(a[i]==【1】
len++;//平台长度+1
else
【2】;
if(len>max)//记录最大平台值
max=len;
}
cout<<max<<endl;
return 0;
}
 
【1】:【2】:
6.
科学家在热带森林中发现了一种特殊的昆虫,这种昆虫的繁殖能力很强。每对成虫过x个月产y对卵,每对卵要过两个月长成成虫。假设每个成虫不死,第一个月只有一对成虫,且卵长成成虫后的第一个月不产卵(过X个月产卵),问过Z个月以后,共有成虫多少对?0≤X≤20,1≤Y≤20,X≤Z≤50。
【输入】
x,y,z的数值。
【输出】
过Z个月以后,共有成虫对数。
【输入样例】
1 2 8
【输出样例】
37
参考程序:
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
long long a[60],b[60];
int main()
{
int x,y,z;
int i;
cin>>x>>y>>z;
for(i=1;i<=x;i++)
{
a[i]=1;//a[i]第i个月的成虫
b[i]=0;//b[i]第i个月的卵
}
for(i=x+1;i<=z+1;i++)
{
b[i]=【1】;//第i-x月的成虫在x个月后产下y个卵
a[i]=a[i-1]+【2】;//第i个月的成虫等于第i-1个月的成虫数加上第i-2个月的卵
}
cout<<【3】<<endl;
return 0;
}
【1】:【2】:【3】:
7.
求两个大的正整数相减的差。
【输入】
共2行,第1行是被减数a,第2行是减数b(a > b)。每个大整数不超过200位,不会有多余的前导零。
【输出】
一行,即所求的差。
【输入样例】
9999999999999999999999999999999999999
9999999999999
【输出样例】
9999999999999999999999990000000000000
参考程序:
#include<bits/stdc++.h>
using namespace std;
int main()
{
char str1[256],str2[256],temp[256];
int a[256],b[256],c[256];
int lena,lenb,lenc;
int i;
memset(a,0,sizeof(a)); //a数组初始化为0
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
cin>>str1;//输入被减数
cin>>str2;//输入减数
lena=strlen(str1);
lenb=strlen(str2);
if( (lena<lenb) || (lena==lenb&&strcmp(str1,str2)) )//如果被减数小于减数,值为负,两者交换
{
strcpy(temp,str1);
strcpy(str1,str2);
strcpy(str2,temp);
cout<<"-";//输出-
}
lena=strlen(str1);
lenb=strlen(str2);
for(i=0;i<=lena-1;i++)//被减数str1存入数组a
a[lena-i]=str1[i]-'0';
for(i=0;i<=lenb-1;i++)//减数str2存入数组b
b[lenb-i]=【1】;
i=1;
while(i<=lena||i<=lenb)
{
if(a[i]<b[i])
{
a[i]+=10;//借位
【2】- -;//上一位减1
}
c[i]=a[i]-b[i];//对应位相减
i++;
}
lenc=i;
while((c[lenc]==0)&&(lenc>1))//删除前导0
【3】 - -;
for(i=lenc;i>=1;i--)cout<<c[i]; //倒序输出
cout<<endl;
return 0;
}
【1】:【2】:【3】:
问卷星提供技术支持
举报