2024年信息素养大赛 C++小学组初赛 算法创意实践挑战赛 真题详细解析

2024年信息素养大赛初赛C++真题解析

选择题(共15题,每题5分,共75分)

1、运行下列程序段,输出的结果是( )

int n=572765;
cout <<n/10%10;

A、5

B、6

C、4

D、1

答案:B

考点分析:考察模运算和除法运算,输出的表达式先进行除法运算,除以10得到的n=57276,然后在取余10,得到最后一位6,答案B

2、假设有两个城市:城市A和城市8,每个城市的温度都在-50到50摄氏度之间。当且仅当只有一个城市的温度低于0时,输出1,也就是说,如果城市A的温度低于0而城市B大于等于0;或者如果城市A的温度大于等于0而B小于0,则输出1,否则输出0。补全①和②处的代码

#include<iostream>  
using namespace std; 
int main() 
{ 
    int a,b; 
    cin>>a>>b; 
    if(___1__) 
    { 
        if(___2___) 
        { 
            cout<<1; 
            return 0; 
        } 
    } 
    if(a>=0) 
    { 
        if(b<0) 
        { 
            cout<<1; 
            return 0; 
        } 
    } 
    cout<<0; 
    return 0; 
} 

A、a<0 b>=0

B、a>0 b<=0

C、a>=0 b>=0

D、a<0 b<0

答案:A

考点分析:考察阅读程序能力,从给定的题目以及程序的后半部分可以得知,1和2处应该要填的是a的温度小于0,b的温度大于等于0;答案A

3、执行以下代码段,变量x和y的值分别是

int x=7;
int y=x/2*3;

A、 x=7, y=10.5

B、x=7,y=10

C、x=7,y=12

D、x=7, y=9

答案:D

考点分析:考察表达式计算能力,第一行x=7,第二行y=x/2*3,等价于y=7/2*3=3*3=9;除法运算如果左右两边都是整数返回整数,答案D

4、在C++中,输出指令是

A、cin

B、cout

C、clog

D、int

答案:B

考点分析:考察输入输出指令,输入是cin,输出是cout;答案B

5、小A有一个神奇口袋,里面可以装各个平方数,口袋的负载量就是口袋里所有数字之和。当负载量超过L的时候不能再装平方数,现在给定n个数,从左往右筛选其中的平方数,并依次将平方数放入口袋,编成程序,输出口袋里能装下几个平方数。平方数就是一个愁数乘以自己的结果(例如:1、4、9、16、…)。补全①、②和③处的代码。
例如:
输入L为100,n为5,接下来的5个数分别是49、19、36、25、73,则口袋里只装了49和36两个平方数,所以输出2。

#include<iostream>
using namespace std; 
int main()
{
	int L,n,cnt = 0,sum = 0;
	cin >> L >> n;
	for(int i=1;i<=n;i++)
	{
		int x;
		bool flag = false;
		cin >> x;
		for(int j=1;j<x;j++)
		{
			if(__①__)
			{
				flag = true;
				break;
			}
		}
		if(flag == true)
		{
			if(__②__)
			{
				sum += x;
				cnt++;
			}
			else
			{
				__③__
			}
		}
	}
	cout << cnt;
	return 0; 
} 

A、.j*j==x  Sum +x<=L  continue;

B、 j*j == x  Sum +x<=L  break;

C、x/j==i   Sum <=L  continue;

D、x/j==i  sum <= L  break;

答案:A

考点分析:考察阅读程序能力,题目明确要求的是要输出平方数,第一层for循环i只是输入数字个数,第二层for循环j是从1到x遍历,这里条件是平方数,所以应该是j*j=x,排除CD选项;序号2应该是前面数字之和要小于等于L;序号3是不满足就找下一个数,答案A

本文作者:小兔子编程 作者首页:https://blog.csdn.net/frank2102

6、在C++中,表示布尔数据类型的关键字是()

A、int

B、bool

C、double

D、string

答案:B

考点分析:考察数据类型相关知识,四个选项对应的分别是:整型、布尔类型、浮点型、字符串;答案B

7、下列关于C++语言中变量的叙述,不正确的是()

A、变量定义时可以不初始化

B、变量被赋值之后的笑型不变

C、变量没有定义也能够使用

D、变量名必须是台法的标识符

答案:C

考点分析:考察变量相关知识,变量必须先定义后使用,答案C

8、在C++中,以下正确的变是命名是()

A、2things

B、_myVariable

C、my-variable

D、None of the above

答案:B

考点分析:考察变量命名规则,变量命名规则需要遵循四点:1、只能由数字、字母和下划线组成,2、数字不能是首字母,3、不可一世关键字,4、严格区分大小写;答案B

9、执行以下程序段,输出的结果是

for(int j=1;j<=6;j++)
{
	if(j%3 == 0)
	{
		break;
	}
	cout << j << ' ';
}

A、12

B、123

C、123456

D、12456

答案:A

考点分析:考察阅读程序能力,程序中当j的值是3的倍数也就是3的时候就终止循环,breka语句是退出当前循环;答案A

10、如果我们想在终端输出变量x的值,正确的代码是()

A、cin >> x

B、cout << x

C、cout >> x

D、cin << x

答案:B

考点分析:考察输入输出指令,输出用的是cout,输出流控制符是两个大于号,答案B

11、运行以下程序,输出的结果是()

#include<iostream>
using namespace std; 
int man()
{
	cout << "Hello" << " ";
	cout << "World";
	return 0;
} 

A、Hello,World!

B、Hello world

C、语法错误

D、无任何输出

答案:B

考点分析:考察输出指令,cout输出后面如果是字符串用双引号包括起来会原样输出,默认cout是不换行,答案B

12、输出1到10之间的所有偶数,请补全以下代码

#include<iostream>
using namespace std; 
int man()
{
	for(int i=1;i<=10;i++)
	{
		if(__①__)
		{
			cout<<i<<endl;
		}
	}
	return 0;
} 

A、i%2==0

B、i%2!=0

C、i%2=1

D、i%2

答案:A

考点分析:考察阅读程序能力,缺省的条件是判断偶数,偶数是能被2整除,没有余数,答案A

13、以下可以作为变量名的是

A、cnt_1

B、1_cnt

C、cnt1_#

D、@cnt

答案:A

考点分析:考察变量命名规则,变量命名规则需要遵循四点:1、只能由数字、字母和下划线组成,2、数字不能是首字母,3、不可一世关键字,4、严格区分大小写;答案A

14、运行以下程序,输出的结果是()

#include<iostream>
using namespace std; 
int man()
{
	int a = 5;
	int b = a + 3;
	int c = b - 2;
	cout << c;
	return 0;
} 

A、6

B、8

C、5

D、10

答案:A

考点分析:考察阅读程序能力,程序对应的表达式为:5+3-2=6;答案A

15、下面代码实现的是判断n是否是质数的功能,补全①和②处的代码

#include<iostream>
using namespace std; 
int man()
{
	int n;
	cin >> n;
	_①_
	for(int i=2;i<n;i++)
	{
		if(_②_)
		{
			isprime = false;
			break;
		}
	}
	cout << isprime << endl;
	return 0;
}

A、bool ispime = true; n%i == 0

B、bool ispime = false; n%i != 0

C、bool ispime = true; n%i != 0

D、bool ispime = false; n%i == 0

答案:A

考点分析:考察阅读程序能力,程序是判断质数,质数是除了1和本身之外没有别的因数;从后续的程序可以得出1处应该是声明布尔变量,同时初值应该是true;2处对应的是条件也就是判断是否是因数,n能被i整除就是因数;答案A

本文作者:小兔子编程 作者首页:https://blog.csdn.net/frank2102

二、判断题(共5题,每题5分,共25分)

16、在C++中,&&和||分别代表逻辑与和逻辑或运算

答案:正确

考点分析:考察逻辑运算符,&&是逻辑与运算,||是逻辑或运算;答案正确

17、在C++中,for 循环至少执行一次

答案:错误

考点分析:考察for循环中分为三部分,第一部分是自变量初始化,第二部分是条件判断,第三部分是自变量更新;如果要保证至少执行一次,条件判断必须返回真才行;答案错误

18、在C++中,cout 用于输入,而 cin 用于输出

答案:错误

考点分析:考察输入输出指令,刚好说反了,输入是cin,输出是cout;答案错误

19、在C++中,变是声明后,如果不初始化,其值是确定的

答案:错误

考点分析:考察变量相关知识,c++中变量声明如果不初始化是任意的一个值,我们在写c++程序的时候应该避免这种情况发生,变量使用前先赋值;答案错误

20、在C++中,所有变是都必须在使用前声明其数据类型

答案:正确

考点分析:考察变量相关知识,变量在使用前需要先声明,声明就是确定变量的数据类型;答案正确

推荐资料

1、C++资料 

    2、Scratch资料

    3、Python资料

    ### 信息素养大赛 C++ 初赛真题解析 #### 题目一:整数运算 运行以下程序段,输出的结果是什么? ```cpp int n = 572765; cout << n / 10 % 10; ``` 此题目考察的是整数除法与取模操作的理解。`n / 10` 表示将 `n` 的最后一位去掉,得到 `57276`;接着 `% 10` 取该结果的个位数,即 `6`[^1]。 因此,正确答案为 **B.6**。 --- #### 题目二:条件判断逻辑 以下是部分代码片段: ```cpp #include <iostream> using namespace std; int main() { int a, b; cin >> a >> b; if(___1__) { if(___2___) { cout << 1; return 0; } } if(a >= 0) { if(b < 0) { cout << 1; return 0; } } cout << 0; return 0; } ``` 根据题目描述,只有当其中一个城市的温度低于零而另一个城市温度不低于零时才输出 `1`。可以推导出: - 条件 `_1__` 应填写 `(a < 0)`。 - 条件 `_2__` 应填写 `(b >= 0)`。 最终完整的代码如下所示: ```cpp if(a < 0) { if(b >= 0) { cout << 1; return 0; } } if(a >= 0) { if(b < 0) { cout << 1; return 0; } } cout << 0; return 0; ``` 上述实现满足题目中的逻辑需求[^2]。 --- #### 题目三:任务分配优化问题 假设存在 `m` 项任务和 `n` 名员工,目标是在每人恰好完成一项任务的前提下,使总工资最小化。这是一个典型的组合优化问题,通常可以通过动态规划或贪心算法解决。 具体解法依赖于输入数据的形式以及约束条件。一般情况下,可采用以下方法之一: 1. **排序匹配法**:先按每名员工的任务成本从小到大排序,再依次分配最低成本的任务给每位员工。 2. **匈牙利算法**:适用于更复杂的情况(如矩阵形式的成本表),能够找到全局最优解。 此类问题是竞赛中常见的经典模型,需熟练掌握其核心思想及其变种应用[^3]。 --- ### 总结 以上展示了信息素养大赛 C++ 初赛可能涉及的部分典型题目类型及解答思路。参赛者应注重基础语法、逻辑推理能力以及常见算法的应用训练。
    评论 1
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包

    打赏作者

    小兔子编程

    您的鼓励是我创作优质案例的动力

    ¥1 ¥2 ¥4 ¥6 ¥10 ¥20
    扫码支付:¥1
    获取中
    扫码支付

    您的余额不足,请更换扫码支付或充值

    打赏作者

    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值