C++蓝桥杯等级考试真题--第7级
答案:D
解析:步骤如下:
- 首先,--a 操作会使 a 的值减1,因此 a 变为 3。
- 判断 a > b 即 3 > 3,此时表达式为假,因为 --a 后 a 并不大于 b。
- 因此,程序进入 else 分支,
a * b = 3 * 4 = 12
,故答案为D。
答案:B
解析:A. for(int i=1;i<= 6;++i)
:从1开始,每次增加1,直到6为止,包括6,因此循环次数为6(即1, 2, 3, 4, 5, 6)。
B. for(int i=6;i<0;--i)
:从6开始,每次减少1,直到小于0为止。由于初始值已经是6,即使减到0也不满足条件(因为是i<0
),所以这个循环实际上不会执行,循环次数为0。
C. for(int i=6 ;>0;i-=1)
:这里似乎有一个语法错误,应该是for(int i=6;i>0;i-=1)
。假设修正后,它从6开始,每次减少1,直到大于0的条件不再满足,也就是在i变为0时停止,因此循环次数为6(即6, 5, 4, 3, 2, 1)。
D. for(int i=0 ;i<=10; i+=2)
:从0开始,每次增加2,直到10为止,包括10,因此循环次数为6(即0, 2, 4, 6, 8, 10)。
其中,选项B的循环次数与其他选项不同,它是唯一一个不执行任何循环体的语句,故答案为B。
答案:B
解析:初始化n为1,sum为0,然后当n小于10时进入循环。
在循环内,如果n是奇数(即n%2 != 0),则将n累加到sum上,接着n自增。循环直到n不小于10时结束。最后,输出累积的sum值。
因此:sum = 1 + 3 + 5 + 7 + 9 = 25,故答案为B
【参考程序】
#include <iostream>
int main() {
int n;
std::cin >> n;
for(int i = 1; i <= n; ++i) {
std::cout << 2 * i << (i < n ? " " : "");
}
std::cout << std::endl;
return 0;
}
解析:首先读取一个正整数n
,然后使用for
循环从1遍历到n
,每次循环计算等差数列的当前项(首项2乘以当前索引i
),并输出。如果当前项不是最后一个项,则输出后跟一个空格。这样就按照要求输出了首项为2、公差为2的等差数列的前n项。
【参考程序】
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n;
cin >> n; // 输入工作周数
vector<int> wages(n); // 创建一个动态数组来存储每周工资
for(int i = 0; i < n; ++i) {
cin >> wages[i]; // 输入每周的工资
}
int total = 0;
for(int wage : wages) {
total += wage; // 计算总工资
}
int average = total / n; // 计算平均工资,结果自动向下取整
cout << average << endl; // 输出平均工资
return 0;
}
解析:首先读取佩琪工作的周数n
,然后使用一个动态数组wages
来存储接下来输入的n个周的工资数值。通过遍历这个数组并累加所有的工资值到变量total
中,之后将总工资除以周数n
得到平均工资,由于是整数除法,结果会自动向下取整。最后,程序输出这个平均工资值。