信息素养大赛 C++ 算法创意实践挑战赛初中组初赛(2024 年)

​欢迎大家订阅我的专栏:算法题解:C++与Python实现
本专栏旨在帮助大家从基础到进阶 ,逐步提升编程能力,助力信息学竞赛备战!

专栏特色
1.经典算法练习:根据信息学竞赛大纲,精心挑选经典算法题目,提供清晰的代码实现与详细指导,帮助您夯实算法基础。
2.系统化学习路径:按照算法类别和难度分级,从基础到进阶,循序渐进,帮助您全面提升编程能力与算法思维。

适合人群:

  • 准备参加蓝桥杯、GESP、CSP-J、CSP-S等信息学竞赛的学生
  • 希望系统学习C++/Python编程的初学者
  • 想要提升算法与编程能力的编程爱好者

选择题

第 1 题

编写程序,计算区间 100~n 之间的所有整数(100<n<=999),数字 x(0<x<9) 共出现的次数,补全①、②和③处的代码。例如:100 到 109 中,即 100、101、102、103、104、105、106、107、108、109 中,数字 1 出现了 11 次。

int main() {
	int n, x.cnt = 0;
	cin >> n >> s;
	for(int i=100; i<+n; i++) {
		__1__
		int g, s, b;
		g = a % 10;
		__2__
		__3__
		if (g == x) {   cnt++;   }
		if (s == x) {   cnt++;   }
		if (b == x) {   cnt++;   }
	}
	cout << cnt << endl;
}

A. int a=i; s=a/10%10; b=a/100;

B. int g=i; s=g%10; b=g%100;

C. int cnt=i; s=cnt%10; b=cnt/100;

D. int a=n; s=a/10; b=a%100;

【答案】:A

【解析】

计算区间100~n之间所有整数中数字x出现的次数。代码中需要分解每个数的个位、十位和百位,然后与x比较。

①处需要将当前数字i赋值给a,以便后续分解位数。

②处计算十位数:s=a/10%10。

③处计算百位数:b=a/100。

第 2 题

完全数是指一个数恰好等于除它本身之外的所有因数之和。例如:6的因数有1、2、3、6,除去6之外的因数之和为1+2+3=6,所以6为完全数。编写程序,按从小到大的顺序寻找1到10000之间的完全数,输出第n个完全数,n的范围0<n<5。补全①、②和③处的代码。

int main() {
	int n, sum=0, num = 0;
	cin >> n;
	for (int i=1; i<100000; i++) {
		int a = i;
		sum = 0;
		for (int j=1; j<a; j++) {
			if (a%j == 0) {
				__1__
			}
		}
		if (__2__) {   num++;   }
		if (num==n) {
			cout << a;
			__2__;
		}
	}
	return 0;
}

A. sum+=i; sum==a; continue;

B. sum+=j; sum==a; break;

C. sum+=j; sum==a; continue;

D. sum+=i; sum==a; break;

【答案】:B

【解析】

寻找1到10000之间的完全数,并输出第n个完全数。完全数的定义是除自身外的因数之和等于自身。

①处需要累加因数j到sum: sum += j。

②处判断sum是否等于当前数a: sum == a。

③处找到第n个完全数后应退出循环: break。

第 3 题

下面哪个语句运行结果是9?

A. cout << “5+4” << endl;

B. cout << 5 << “+” << 4 < endl;

C. cout << 5+4 << endl;

D. cin >> 5+4 >> endl;

【答案】:C

【解析】

A选项输出字符串"5+4",不是计算结果。

B选项输出"5+4",未计算。

C选项计算5+4并输出结果9。

D选项语法错误。

第 4 题

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

int main() {
	int n;
	cin >> n;
	__1__
	for (int i=2; i<n; i++) {
		if (__2__) {
			isprime = false;
			break;
		}
	}
	cout << isprime << endl;
	return 0;
}

A. bool isprime=true; n%i==0

B. bool isprime=false; n%i!=0

C. bool isprime=true; n%i!=0

D. bool isprime=false; n%i==0

【答案】:A

【解析】

判断n是不是质数,初始化为true

第 5 题

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

A. int

B. bool

C. double

D. string

【答案】:B

第 6 题

声明一个整型变量age的正确方式是( )

A. int age;

B. float age;

C. string age;

D. char age;

【答案】:A

第 7 题

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

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

【解析】

题目要求当且仅当一个城市温度低于0时输出1。

第 8 题

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

int main() {
	int a = 5;
	int b = a + 3;
	int c = b - 2;
	cout << c;
	return 0;
}

A. 6

B. 8

C. 5

D. 10

【答案】:A

【解析】

b=8, c=6

第 9 题

C++中有很多数据类型,以下可以定义存储浮点型变量的关键字是( )

A. int

B. double

C. char

D. long long

【答案】:B

第 10 题

执行以下程序段,输入11,则输出的值是( )

int x;
cin >> x;
cout << x + 2;

A. 10

B. 11

C. x

D. 13

【答案】:D

第 11 题

在C++中,表示小于或等于的关系运算符是( )

A. <

B. ==

C. <=

D. >

【答案】:C

第 12 题

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

A. 2things

B. _myVariable

C. my-variable

D. None of the above

第 13 题

要在C++中打印"Hello,World!",以下语句正确的是( )

A. cout << “Hello,World!”;

B. cout “Hello,World!”;

C. cout << Hello,World!;

D. cout >> “Hello,World!”;

【答案】:A

第 14 题

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

例如:

输入L为100,n为5,接下来的5个数分别是49、19、36、25、73,则口袋里只装了49和36两个平方数,所以输出2。

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 (__1__) {
				flag = true;
				break;
			}
		}
		if (flag == true) {
			if (__2__) {
				sum += x;
				cnt++;
			} else {
				__3__
			}
		}
	}
	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;

【答案】:B

【解析】

题目要求筛选平方数并装入口袋,直直到负载量超过L。

①处检查x是否为平方数:j*j==X。

②处检查加入x后sum是否不超过L: sum+X<=L。

③处负载量超过L时退出循环:break。

第 15 题

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

int main() {
	cout << "Hello" << " ";
	cout << "World";
	return 0;
}

A. Hello,World

B. Hello World

C. 语法错误

D. 无任何输出

【答案】:B

判断题

第 16 题

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

A.正确

B.错误

【答案】:B

【解析】

说反了

第 17 题

在C++中,break语句可以用来立即退出当前的循环。

A.正确

B.错误

【答案】:A

第 18 题

在C++中,整型int可以用来存储小数。

A.正确

B.错误

【答案】:B

【解析】

int 存储整数

第 19 题

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

A.正确

B.错误

【答案】:A

第 20 题

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

A.正确

B.错误

【答案】:B

【解析】

变量不初始化,值不确定

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值