1、CCF NOIP2018 初赛 普及组 c+ 12018 年第二十三届全国青少年信息学奥林匹克联赛初赛( 普及组 c+ 语言 两小时完成 ) 全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效 选手注意: 试题纸共有 8 页,答题纸共有 2 页,满分 100 分。请在答题纸上作答,写在试题纸上的一律无效。 不得使用任何电子设备(如计算器、手机、电子词典等)或查阅任何书籍资料。一、单项选择题(共 20 题,每题 1.5 分,共计 30 分;每题有且仅有一个正确选项)1、c+ 中“a=b=c” (a,b ,c 均为变量或表达式)的作用是:( )A、判定 a,b,c 相等。B 、将 a 的值给 b
2、,c 。C、将 c 的值给 a,b。D 、将 b 的值给 a,c 。2、smalltalk 是一种:( )A、汇编语言。B 、面向对象的高级语言。C、面向过程的高级语言。D、算法。3、11 进制的所有基数是:( )A、0 , 1,2,3,4,5,6,7,8,9,AB、1,2 ,3,4,5,6,7,8,9,A,BC、1,2,3,4,5,6,7,8,9,10,11D、0,1,2,3,4,5,6,7,8,9,104、以下代码中能实现 s=a+b 的是:( )A、s=a;for (int i=1;iusing namespace std;int main()int n,m,s=0;scanf(“%d%
3、d“,bool visit200=0;for(int k=0;kn)s=1;if(visits)i-;printf(“%d “,s);visits=true;return 0;输入:10 3输出:_2、#include#include int n;char a10000;int main()scanf(“%d%s“,int l=strlen(a);CCF NOIP2018 初赛 普及组 c+ 4int i;if(a0=0) printf(“0“);for(i=0;i0 int main()const int MAXN = 20010;int fMAXN;int v40;memset(f,0,s
4、izeof(f);memset(v,0,sizeof(v);int n;int m;cinn;cinm;for(int i=1;ivi;for(int i=1;i=vi;j-)if(fjusing namespace std;int a101,n,i,m;int function(int x)int left=0;int right=n-1;while(left=amiddle)left=middle+1;elseright=middle-1;return -1;int main()cinn;for (i=1;iai;sort(a,a+n+1);CCF NOIP2018 初赛 普及组 c+ 6
5、for (i=n;i=1;i-) coutm;coutint n, f30;int main()scanf(“%d“, f0 = 1,f1 =(1); ( 2 分)for(int i=2; i2n!/n!/n!/n+1=(n+2int main()int n,i;long long ans=1;scanf(“%d“,CCF NOIP2018 初赛 普及组 c+ 7for((4) ;i+) (3 分)ans=ans*(5 ); (3 分)printf(“%lld“,ans/(n+1);return 0;2、归并排序:归并排序是一种稳定的 O(nlogn)算法,该算法的主要思想是将原数列分成 2 份,分别归并排序,再将两数列合并,是二分算法的基本体现。现要求完成以下归并排序的子程序段:void merge(int *data,int start,int end,int *result) /归并int left_length = (1) ; (3 分)int left_index = start;int right_index = start + left_length;int result_index = start;while( (2) & (3) ) (2 分,2 分)if(dataleft_index dataendmerge(data,start,end,result)