夜雨聆风学习资料网

ARTICLE · 1331507

GESP 三级真题|字母求和|详细解析 + 完整代码

GESP 三级真题|字母求和|详细解析 + 完整代码

2024 年 GESP C++ 三级编程真题精讲 · ASCII 判断 · 字符遍历 · 累加求和

哈喽各位同学,今天给大家带来一道 2024 年 GESP C++ 三级编程真题:字母求和。

这道题考察字符 ASCII 码判断、字符遍历、累加求和,是三级非常经典的字符处理入门题,难度不大,但是很容易踩坑。

01 题目回顾

题目名称:字母求和

小杨发明了一种密码规则:

字符类型代表的值

小写字母字母表位置:a=1,b=2 … z=26

大写字母ASCII 码的相反数:A 的 ASCII 是 65,所以 A = −65,B = −66,以此类推

给定一个只包含大小写字母的字符串,把每个字母对应的值加起来,输出总和。

样例说明

输入 3 aAc

输出 −61

a = 1,A = −65,c = 3,1 − 65 + 3 = −61

输入输出说明

第一行一个整数 n,表示字符串字母个数

第二行字符串 s,只含大小写英文字母

输出所有字母对应数字相加后的总和

小提示

题目给的 n 可以读进来,本题实际写代码的时候也可以不用它,直接遍历字符串就行。

02 解题思路

(1)  定义总和变量 sum,初始值为 0

(2) 循环遍历字符串里的每一个字符 ch

(3)判断字符:小写字母用 ch - 'a' + 1 累加;大写字母用 -(int)ch 累加

(4)遍历结束,输出 sum

重点坑点提醒

很多同学会误以为大写字母也按字母序号取负数(比如以为 A = −1),这是本题最大的陷阱。

题目明确写的是:大写字母代表它 ASCII 码 的相反数,不是序号相反数。A → −65,不是 −1。一定要看清楚题面,凭经验做题很容易整段写错。

03 C++ 完整参考代码

下面这版是范围 for 写法,GESP 考场可直接提交。

C++ · 范围 for 版本

#include <iostream>

#include <string>

using namespace std;

int main()

{

int n;

string s;

cin >> n >> s;

int sum = 0;

for (char ch : s)

{

if (ch >= 'a' && ch <= 'z')

{

// 小写:字母位置 a=1

sum += ch - 'a' + 1;

}

else if (ch >= 'A' && ch <= 'Z')

{

// 大写:ASCII 取反

sum += -(int)ch;

}

}

cout << sum << endl;

return 0;

}

如果还不会范围 for,用下标循环也完全可以,两版逻辑一致。

C++ · 下标循环版本

#include <iostream>

#include <string>

using namespace std;

int main()

{

int n;

string s;

cin >> n >> s;

int sum = 0;

for (int i = 0; i < s.size(); i++)

{

char ch = s[i];

if (ch >= 'a' && ch <= 'z')

{

sum += ch - 'a' + 1;

}

else

{

sum += -(int)ch;

}

}

cout << sum << endl;

return 0;

}

第二版直接 else 兜底,是因为字符串只含字母,非小写即大写,逻辑上安全;如果想更严谨,也可以保留 else if。

04 测试样例

输入

3 aAc

运行结果

-61

验算:1 +(−65)+ 3 = −61 ✔

05 考点总结

字符的 ASCII 码理解GESP 三级核心考点,大小写字母的区分判断用区间判断。

仔细读题,审题是 GESP 拿分的关键。

这道题的区分点就在大写字母的规则上。很多同学凭经验做题,直接写成 -(ch - 'A' + 1),一交卷就全错。

06 课后小练习

自己试一组:

输入:

 2 

Bb

B 的 ASCII 是 66,对应 −66;b 是 2;总和应该是 −64。用上面任意一版代码跑一下,看看结果对不对。

想练手的话,还可以把规则反过来改一改:大写字母按字母序号取负数,小写字母按 ASCII 码取相反数,自己写一版,对照着看看两套规则差在哪。

今天这道 GESP 三级字符题,你学会了吗?

后续持续更新 GESP 真题解析、易错点、全套代码,喜欢可以点赞 + 关注。有不会的题目欢迎留言,看到都会回。

点赞 · 在看 · 转发给正在学习的同学

回首页,搜索你想要的文档

在首页搜索框输入关键词,快速定位资料

文库首页搜索指引 立即搜索

相关学习资料