欢迎大家订阅我的专栏:算法题解: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
【解析】
变量不初始化,值不确定