2024年6月GESP认证C++编程二级真题试卷
剩余时间 --:--:--
单选题 共 15 题
1.
小杨父母带他到某培训机构给他报名参加CCF组织的GESP认证考试的第1级,那他可以选择的认证语言有几种?( )
2.

下面流程图在yr输入2024时,可以判定yr代表闰年,并输出 2月是29天 ,则图中菱形框中应该填入。

3.

在C++中,下列不可做变量的是。

4.
在C++中,与 for(int i=0; i<10; i++) 效果相同的是( )。
5.
在C++中, cout << (5 % 2 && 5 % 3) 的输出是( )。
6.

执行下面的C++代码时输入 1 ,则输出是( )。

1 int month;
2
3 cin >> month;
4
5 switch(month){
6  case 1:
7   cout << "Jan ";
8  case 3:
9   cout << "Mar ";
10   break;
11  default:
12   ;
13 }
7.

执行下面C++代码后,有关说法错误的是( )。

1 int a, b;
2 cin >> a >> b;
3 if (a && b)
4  cout << "1";
5 else if (!(a || b))
6  cout << "2";
7 else if (a || b)
8  cout << "3";
9 else
10  cout << "4";
8.

某货币由5元,2元和1元组成。输入金额(假设为正整数),计算出最少数量。为实现其功能,横线处应填入代码是( )。

1 int N;
2 cin >>N;
3
4 int M5,M2,M1;
5 M5 = N / 5;
6 M2 = ______________;
7 M1 = ______________;
8 printf("5*%d+2*%d+1*%d", M5, M2, M1);
9.

下面C++代码执行后的输出是( )。

1 int loopCount = 0;
2 for (int i=0; i < 10; i++)
3  for (int j=1; j < i; j++)
4   loopCount += 1;
5 cout << loopCount;
10.

下面C++代码执行后的输出是( )。

1 int loopCount = 0;
2 for (int i=0; i < 10; i++){
3  for (int j=0; j < i; j++)
4   if (i * j % 2)
5    break;
6  loopCount += 1;
7 }
8 cout << loopCount;
11.

假设下面C++代码执行过程中仅输入正负整数或0,有关说法错误的是( )。

1 int N,Sum = 0;
2 cin >> N;
3 while (N){
4  Sum += N;
5  cin >> N;
6 }
7 cout << Sum;
12.

执行下面的C++代码,有关说法正确的是( )【质数是指仅能被1和它本身整除的正整数】。

1 int N;
2 cin >> N;
3 bool Flag = true;
4 for ( int i = 2; i < N; i++){
5  if (i * i > N)
6   break;
7  if (N % i == 0){
8   Flag = false;
9   break;
10  }
11 }
12 if (Flag)
13  cout << N << "是质数" << endl;
14 else
15  cout << N << "不是质数" << endl;
13.

下面C++代码用于实现如下图所示的效果,其有关说法正确的是( )。

1 for (int i = 1; i < 6; i++){ // L1
2  for (int j = 1; j < i+1; j++) //L2
3   cout << i*j << " ";
4  cout << endl;
5 }
14.

下面C++代码执行后,输出是( )。

1 int cnt1 = 0, cnt2 = 0;
2 for (int i = 0; i < 10; i++){
3  if (i % 2 == 0)
4   continue;
5  if (i % 2)
6   cnt1 += 1;
7  else if (i % 3 == 0)
8   cnt2 += 1;
9 }
10 cout << cnt1 << " " << cnt2;
15.

在下面的C++代码中,N必须是小于10大于1的整数,M为正整数(大于0)。如果M被N整除则M为幸运数,如果M中含有N且能被N整除,则为超级幸运数,否则不是幸运数。程序用于判断M是否为幸运数或超级幸运数或非幸运数。阅读下面代码,有关说法正确的是( )。

1 int N, M;
2 cout << "请输入幸运数字:";
3 cin >> N;
4 cout << "请输入正整数:";
5 cin >> M;
6
7 bool Lucky;
8 if (M % N == 0)
9  Lucky = true;
10 else
11  Lucky = false;
12 while (M){
13  if (M % 10 == N && Lucky){
14   printf("%d是%d的超级幸运数!", M, N);
15   break;
16  }
17  M /= 10;
18 }
19 if (M == 0)
20  if (Lucky)
21   printf("%d是%d的幸运数!", M, N);
22  else
23   printf("%d非%d的幸运数!", M, N);
判断题 共 10 题
1.
执行C++代码 cout << '9'+'1'; 的输出为10。( )
2.
C++表达式 -12 % 10 的值为2。( )
3.
C++表达式 int(12.56) 的值为13。( )
4.
C++的整型变量N被赋值为10,则语句 cout << N / 3 << "-" << N % 3 执行后输出是3-1。 ( )
5.
在C++代码中,不可以将变量命名为scanf,因为scanf是C++语言的关键字。( )
6.

下面C++代码执行后将导致死循环。( )

1 for (int i = 0; i < 10; i++) 
2  continue;
7.

下面C++代码执行后将输出10。( )

1 int cnt = 0;
2 for (int i = 0; i < 10; i++)
3  for (int j = 0; j < i; j++){
4   cnt += 1;
5   break;
6  }
7 cout << cnt;
8.

下面C++代码执行后,将输出5。( )

1 int cnt = 0;
2 for (int i = 1; i < 5; i++)
3  for (int j = i; j < 5; j +=i)
4   if (i * j % 2 == 0)
5    cnt += 1;
6 cout << cnt;
9.

下面C++代码能实现正整数各位数字之和。( )

1 int N,Sum = 0;
2 cin >> N;
3 while (N){
4  Sum += N % 10;
5  N /= 10;
6 }
7 cout << Sum;
10.

GESP测试是对认证者的编程能力进行等级认证,同一级别的能力基本上与编程语言无关?

问答题 共 2 题
1.

3.1 编程题 1 

试题名称:平方之和 

时间限制:1.0 s 

内存限制:512.0 MB 

3.1.1 题面描述 

小杨有n个正整数aa,…,an,他想知道对于所有的i(1≤i≤n),是否存在两个正整数x和y满足x×x+y×y=ai。 

3.1.2 输入格式 

第一行包含一个正整数n,代表正整数数量。 

之后n行,每行包含一个正整数,代表ai。 

3.1.3 输出格式 

对于每个正整数ai,如果存在两个正整数x和y满足x×x+y×y=ai,输出 Yes,否则输出 No。

 3.1.4 样例1

 

3.1.5 样例解释 

对于第一个正整数,存在1×1+2×2=5,因此答案为 Yes。 

3.1.6 数据范围 

对于全部数据,保证有1≤n≤10,1≤ai≤106

2.

3.2 编程题 2 

试题名称:计数 

时间限制:1.0 s 

内存限制:512.0 MB 

3.2.1 题面描述 

小杨认为自己的幸运数是正整数k(注:1≤k≤9保证 )。小杨想知道,对于从1到n的所有正整数中,k出现了多少次。 

3.2.2 输入格式 

第一行包含一个正整数n。 

第二行包含一个正整数k。 

3.2.3 输出格式 

输出从1到n的所有正整数中,k出现的次数。 

3.2.4 样例1 

3.2.5 样例解释 

从1到25中,2出现的正整数有2,12,20,21,22,23,24,25,一共出现了,9次。 

3.2.6 数据范围 

对于全部数据,保证有1≤n≤1000,1≤k≤9。

C++ 编辑器
输入
输出