返回 课程
信奥AC之路-2级
0% 完成
0/0 步骤
-
第一课:字符5 主题|小节
-
第二课 嵌套循环与矩形图案(一)4 主题|小节
-
第三课 嵌套循环与矩形图案(二)3 主题|小节
-
第四课:矩形三5 主题|小节
-
第五课:字符矩形7 主题|小节
-
第六课:直角三角形6 主题|小节
-
第七课:倒三角形7 主题|小节
-
第八课:字符三角形8 主题|小节
-
第九课:字符倒三角形7 主题|小节
-
第十课:平行四边形6 主题|小节
-
第十一课:字符直角三角形5 主题|小节
-
第十二课:左斜三角形6 主题|小节
-
第十三课:等腰三角形6 主题|小节
-
第十四课:倒置等腰三角形7 主题|小节
-
第十五课:上下对称图形4 主题|小节
-
第十六课:复杂对称图形5 主题|小节
-
第十七课:左右对称图形5 主题|小节
-
第十八课:空心图形5 主题|小节
-
第十九课:空心图形3 主题|小节
-
第二十课:嵌套应用4 主题|小节
-
第二十一课:嵌套应用二4 主题|小节
-
第二十二课:嵌套应用三3 主题|小节
-
第二十三课:嵌套应用四3 主题|小节
课 进展
0% 完成
“随着我们对字符的理解加深,我们可以尝试一些更有挑战性的应用,”我说道,”比如判断字符的ASCII码是否为质数,或者生成特定模式的字符序列。”
1.4.1 判断ASCII码是否为质数
题目描述:输入一个字母,判断这个字母的ASCII码是否为质数。
样例输入:
a
样例输出:
no
代码实现:
#include <iostream> // 包含输入输出流库
using namespace std;
int main() {
char ch; // 定义一个字符变量ch
cin >> ch; // 从用户输入读取一个字符
bool f = true; // 定义布尔变量f,初始假设ASCII码为质数
// 1不是质数,如果ASCII码小于2,将f设为false
if(ch < 2) f = false;
// 从2开始,检查是否有能整除ASCII码的数
int i = 2;
while(i <= ch / i) { // 只需检查到平方根,提高效率
if(ch % i == 0) { // 如果能被i整除
f = false; // 则不是质数
break; // 提前结束循环
}
i++; // 检查下一个可能的因子
}
// 使用三元运算符根据f的值输出结果
cout << (f ? "yes" : "no"); // 如果f为true,输出"yes",否则输出"no"
return 0; // 程序正常结束
}
思考:
- 将字符直接作为数值进行数学运算
- 使用经典的质数判断算法:检查2到sqrt(n)的所有整数
- 使用条件运算符(三元运算符)简化输出
1.4.2 生成循环字符序列
题目描述:从前往后输出n个字符,先输出小写字母,如果个数不够,再输出大写字母,如果还不够就输出数字字符,如果还是不够就再输出小写字母,以此类推。
样例输入:
40
样例输出:
abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ
0123456789
abcd
代码实现:
#include <iostream> // 包含输入输出流库
using namespace std;
int main() {
int n; // 定义整型变量n,表示要输出的字符总数
cin >> n; // 从用户输入读取n的值
char ch = 'a'; // 初始字符集起始为小写字母'a'
int i = 0; // 当前字符集内的偏移量
// 循环直到输出了n个字符
while(i < n) {
cout << char(ch + i); // 输出当前字符(起始字符+偏移量)
// 如果当前输出的是'z'(小写字母结束)
if(ch + i == 'z') {
ch = 'A'; // 下一个字符集起始改为大写字母'A'
i = -1; // 重置偏移量为-1(下次循环会加1变为0)
n -= 26; // 减去已输出的26个小写字母
cout << endl; // 输出换行符,区分不同字符集
}
// 如果当前输出的是'Z'(大写字母结束)
else if(ch + i == 'Z') {
ch = '0'; // 下一个字符集起始改为数字'0'
i = -1; // 重置偏移量
n -= 26; // 减去已输出的26个大写字母
cout << endl; // 换行
}
// 如果当前输出的是'9'(数字结束)
else if(ch + i == '9') {
ch = 'a'; // 循环回到小写字母'a'
i = -1; // 重置偏移量
n -= 10; // 减去已输出的10个数字
cout << endl; // 换行
}
i++; // 偏移量增加1,准备输出下一个字符
}
// 最终会按照小写字母→大写字母→数字→小写字母...的顺序循环输出n个字符
return 0; // 程序正常结束
}
思考:
- 使用变量ch控制当前字符集的起始字符
- 使用变量i控制当前字符集内的偏移量
- 当到达一个字符集的末尾时,切换到下一个字符集并重置偏移量
- 通过调整剩余输出数量n,确保输出正确的字符数