内容正文:
国时真机
GESP
CCF编程能力等级认证
Grade Examination of Software Programming
C++一级
2025年12月
1单选题(每题2分,共30分)
题号123456789101112131415
答案BAACBA C AD B C A D C C
第1题近日,空中客车公司表示,约6000架空客A320系列飞机需要紧急更换一种易受太阳辐射影响的飞行控制软
件。空客表示,在对一起飞行事故分析后的结果显示,强烈的太阳辐射可能会损坏飞行控制系统所需的关键数据,
导致判断失误,进而引发飞行异常。那这里的飞行控制系统执行判断的部件最可能是下面的()。
☐A.辐射传感器
☐B.处理器
□C.内存单元
☐D.输出设备
第2题下面的C+代码在某集成开发环境中编译运行时,提示有Invalid Character”(“无效字符”)错误。可能的原
因是():
1 int a,b;
2
a=3,b=4;/1L1
3
cout <a;//L2
4 cout <b;//L3
☐AL1行代码中的逗号很可能是中文逗号,应该改为英文逗号。
□B.L1行应该分为两行,分别是a=3和b=4。
☐C.代码运行前没有保存到文件。
口D.L2和L3不能分为两行,应合并为一行。
第3题下面有关C+变量的说法,正确的是()。
□A.不可以用for作为变量名,因为for是C+的关键字(保留字)。
口B._tnt不可以是变量名,因为变量名的第一个字符必须是英文字母。
☐C.tt_不可以是变量名,因为最后一个字符容易与减号混淆。
□D.可以用printf作为变量名,因为printf是关键字,但这不是好习惯,因为printf有约定的功能与含
义。
第4题X是C+的整型变量,则coUt<(X=3,X+,+X);执行后的输出是()。
☐A3
☐B.4
第1页/共9页
☐c.5
□D.不确定
第5题C+表达式2+3*4%5的值为()。
☐A.0
☐B.4
☐C.14
☐D.50
第6题下面的C+代码执行后,其输出是()。
1a=3;
2b=a=4
3
printf("%d %d",a,b);
☐A.44
☐B.33
☐C.34
☐D.43
第7题下面的C+代码执行时如果先输入10回车后输入20并回车,其输出是(
)。
1 int N,M;
2
printf("第-个数:");
3
scanf("%d",&N);
printf("第二个数:");
scanf("%d",&M);
6
printf("%%(N+M)=%d",N+M,int (N+M));
☐A.30=30
☐B.10+20=30
☐C.%(N+M)=30
□D.错误提示
第8题某个整数很长很长,形如:1232123212321.,其规律是从1开始逐一升高到3然后逐一降低到1,然后又逐
一升高到3,一直到很长很长。假设最高位编号为1,要求判断从左边最高位开始的第位数是几?在横线处应该填入
的代码是()。
1 int N,M;
2
coUt<"诗输入编号:";
3
cin >N;
4M=
6
if (M !=0)
cout <M;
8
else
cout <2;
☐A.N%4
☐B.N/4
☐C.N%3
第2页/共9页
□D.N/3
第9题下面C+代码执行后的输出是()。
1 int i,tnt 0;
2
for(i=0;i<100;i+)
3
tnt +=1;
4cout<tnt<'·<i;
☐A.9999
☐B.10099
☐C.99100
☐D.100100
第10题有关下面C+代码的说法,错误的是(
)。
1
int tnt 0;
2
for(int=1;i<10;i+=2)/L1
3
tnt +=i;//L2
4
cout <tnt;
☐A.L1的i<10改为i<11结果相同。
口B.L1的1=1改为1=0结果相同。
□C.tnt+=i与tnt=tnt+i效果相同。
□D.tnt+=i与tnt=i+tnt效果相同。
第11题下面C+代码执行后输出是()。
1 int i;
2
f0r(i=10;1<100;i+=10){
3
if(i%10==0)
4
continve;
5
printf("%d#"i);
6
7
1f(i>=100)
printf("%d END"i);
☐A.10#20#30#40#50#60#70#80#90#100END
☐B.100#100END
☐C.100END
☐D.没有输出
第12题两个正整数,只要不相等,就一直进行如下操作:最大数减去最小数得到一个值,该值和两个数的最小数
构成新的两个正整数,重复操作,直到两个数相等,此时输出该数。下面的C+代码用于实现该操作,横线处应该
填写的代码是()。
第3页/共9贡
1 int N,M;
2
cin >N >M;
4
while (N !M){
if (N M)
6
else
8
9
3
10
11
cout <N;
☐A.
1N=N-M
2M=M-N
☐B.
1M=M-N
2N=N-M
□c.
1
M=N-M
2
N=M-N
□D
1
N,M=M N
2
M,N=N,M
第13题如果一个正整数能被3整除,或者某一位能被3整除,则称之为“漂亮数”。下面的C+代码用于判断正整数N
是否为漂亮数,L1行的横线处应该填入的代码是()。
1 int N,Flag;
2
cin >N;
3
4
FLag=0;/"非漂亮数"
1f(N%3==0)
6
F1ag=1;//"漂亮数"
else
8
while (N !0){
9
if
-){//L1
10
FLag 1;
11
break;
12
13
N/=10;
14
15
cout<<(FLag?"漂亮数":非漂亮数");
☐A.N%10=0
☐B.N%3%10=0
☐C.N%10%3
☐D.N%10%3=0
第14题如果正整数N的所有奇因数(即能将N整除的正奇数)的和是27的倍数,则称N是27的神秘数。下面的
C+代码用于判断输入的N是否为27的神秘数。如输入53,它有两个奇因数1和53,则将输出Y。()。
第4页/共9页
1 int i,N,cnt =0;
cin >N;
for (i=1;i<=N;i++){
4
if
cnt +i;
}
7
if(cnt%27==0)
8
cout <<'Y';
☐A.(N%1)&(i%2〕
☐B.(N%i=0)&(i%2=0)
☐C.(N%i=0)6&(i%2〕
☐D.(N%i)&(i%2=0)
第15题执行下面C+代码可以找出千位与个位的和恰好等于中间两位的四位数,横线处应该填入()
1int count =0;
2 int a,bc,d,tmp;
3
for(inti=1000;i<=9999;i++){
a=(tmp=i)/1o00;
5
6
bc tmp 10;
d tmp bc 10;
8
if a+d =bc){
9
count++;
10
11
12
cout <count;
☐A.tmp=i/1o;
☐B.tmp=i%100;
☐C.tmp-=a*1000;
☐D.tmp=i-i%1000;
2判断题(每题2分,共20分)
题号12345678910
答案×X××××××××
第1题鸿蒙是华为公司开发的一款操作系统,那么它能够将正确的源程序翻译成目标程序,并运行。()
第2题C+表达式10*4%6和10*2%3的结果相同。()
第3题下面C+代码执行后将输出0。()
1 int i;
2
for(i=0;1<10;1++)
3
if(i%3==0)
continue;
else
6
break;
7
cout <i;
第4题下面C+代码中的i>-10;i-改为i<10;i+执行结果相同。()
第5页/共9页
1 int tnt 0;
for (int i=0;i>-10;i--){
if (i<0)
4
i =-i
tnt +i;
6
7
cout <tnt;
第5题下面C++代码执行后将输出99,因为1<100不包括100,而是到99。()
int cnt 0;
2
for (int i=0;i 100;i++)
3
cnt +1;
4 cout <cnt;
第6题下面的C++代码能用于判断输入的正整数是否为对称数。所谓对称数是指从左到右和从右到左读该数,其值
相同,121或414等是对称数,而123不是对称数。()
1
int n,new_number;
coUt<<"请输入正整数:";
3
cin >n;
5
new_number =0;
6
while(n!=0){
new_number new_number 10 n 10;
8
n/=10:
9
10
11
if (n =new_number)
12
coUt<<"对称数";
13
else
14
coUt<<"对称数";
第7题下面的C+代码执行后将输出0。()
1
int tnt 0;
2
for(inti=-100:i<100:i++)
tnt +i;
4
cout <tnt;
第8题某同学执行C++代码时printf("%g
",(3+3.1415926535));输出6.14159而不是6.1415926535
表明该同学的计算机存在故障需要重新安装C+软件。()
第9题如果×是C+代码中的doub1e型变量,则对cout<〔x?1227:12.27);编译时将报错,因为
1227和12.12分别是int和doub1e类型,导致识别混乱。()
第10题在C++代码中,不可以将变量命名为keyword,因为它是C+语言的关键字。()
3编程题(每题25分,共50分)
3.1编程题1
。试题名称:小杨的爱心快递
·时间限制:1.0s
。内存限制:512.0MB
第6页/共9页
3.1.1题目描述
小杨是“爱心社区'的小志愿者,每周他都会帮助邻居们寄送捐赠给山区小学的文具和书籍。快递公司为了支持公益
行动,制定了特殊的运费规则,鼓励大家合理包装:
假设快递的体积为V,重量为G。
。按体积计算:运费按体积计算,公式是0.5×V元。
。按重量计算:为了鼓励减轻包裹重量,规则是:当重量小于300克,即G<300时,运费为M元;当重量达到
或超过300克,即G≥300时,运费为N元。
快递公司的叔叔说:“我们应该选择最公平合理的计费方式。”
所以,最终的运费会取按体积计算和按重量计算这两种方式中价格较低的那一个,这样对寄件人最公道。
3.1.2输入格式
四行,每行一个一位小数的浮点数,分别代表,快递的体积V,快递的重量G,第一档重量运费M,第二档重量运
费N。
3.1.3输出格式
一行一个一位小数,代表实际快递运费。
3.1.4样例
3.1.4.1输入样例1
1
100.4
2
300.2
3
60.6
470.5
3.1.4.2输出样例1
150.2
3.1.4.3
输入样例2
1
99.8
2
200.9
60.2
470.1
3.1.4.4
输出样例2
149.9
3.1.4.5样例解释
。对于样例1:快递体积V为100.4,重量G为300.2,第一档重量运费M为60.6,第二档重量运费N为70.5。
-若按体积收费,费用为0.5×100.4=50.2;
若按重量收费,由于重量G=300.2超过300,费用为70.5。
输出价格较低的50.2。
·对于样例2:快递体积V为99.8,重量G为200.9,第一档重量运费M为60.2,第二档重量运费N为70.1。
第7页/共9页
若按体积收费,费用为0.5×99.8=49.9:
若按重量收费,由于重量G=200.9小于300,费用为60.2。
输出价格较低的49.9。
3.1.5数据范围
对于所有测试点,保证给出的浮点数不超过1000。
31.6参考程序
1 #include <iostream>
#include <iomanip>
3
using namespace std;
4
int main(){
double V,G,M,N;
6
scanf("%Lf%Lf%lf%lf",&V,&G,&M,&N);
7
double P_VV/2.0;
double P_G (G 300)?M N;
9
double result (P_V P_G)?P_V P_G;
10
printf("%.1f
",result);
11
return 0;
12
3.2
编程题2
·试题名称:手机电量显示
。时间限制:1.0s
。·内存限制:512.0MB
3.2.1题目描述
小杨的手机就像一个聪明的小助手,当电量变化时,它会用不同的方式来提醒我们,假设当前的电量百分比为P:
·当电量非常低(不超过10,即P≤10),它会显示一个大写字母R,就像在说:“快给我充电吧!(Red警告
色)”
·当电量有点低(超过10但不超过20,即10<P≤20),它会显示一个大写字母L,意思是“电量有点L0w
啦!”
·当电量比较充足(超过20,即P>20),它就会直接显示具体的数字,比如直接显示50,表示还有50的电
量。
3.2.2输入格式
第一行一个正整数T,代表数据组数。
对于每组数据,一行包含一个正整数P,代表手机电量百分比。
3.2.3输出格式
对于每组数据,输出一行,代表当前手机显示的电量信息。
第8页/共9页
3.2.4样例
3.2.4.1输入样例
1
5
2
10
3
20
5
99
6
19
3.2.4.2
输出样例
1R
2
R
3
L
99
L
3.2.4.3
样例解释
输入样例1共有五组数据:
。第一组数据手机电量P=10,满足P≤10,电量非常低,显示R。
。第二组数据手机电量P=1,满足P≤10,电量非常低,显示R。
。第三组数据手机电量P=20,满足10<P≤20,电量有点低,显示L。
·第四组数据手机电量P=99,满足P>20,电量比较充足,直接显示具体的数字99。
。第五组数据手机电量P=19,满足10<P≤20,电量有点低,显示L。
3.2.5数据范围
对于所有测试点,保证1≤T≤20,1≤P≤100。
3.2.6参考程序
#include <iostream>
2
using namespace std;
int main(){
int T;
5
cin >T;
6
while (T--){
int P;
8
cin >P;
9
if(P<=10){
10
cout <"R
";
11
}else if (P <=20){
12
cout <"L
";
13
else
14
cout <P<<'
';
15
16
17
return 0;
第9页/共9贡