——ASCII码:
0-9 < A-Z (65-90) < a-z(97-122) //A-a 差32
规则:
1,“7”< “F”
2,0< 9
3,“A”<“Z”
4,“A”<“a”
例题:
输出字符的ascii码
要输出字符的 ASCII 码,可以使用强制类型转换将字符转换为对应的整数,然后输出这个整数即可。例如,以下代码输出字符 ‘a’ 的 ASCII 码:
#include <iostream>
using namespace std;
int main() {
char c = 'a';
int ascii = (int)c; // 将字符转换为整数
cout << "The ASCII code of '" << c << "' is " << ascii << endl;
return 0;
}
输出结果如下
The ASCII code of ‘a’ is 97
注意,字符变量在转换为整数类型时,会被自动转换为对应的 ASCII 码整数值,因此在代码中并不需要显式地将其转换为整数类型。例如,以下代码与上述代码等价,也可以输出字符 ‘a’ 的 ASCII 码:
#include <iostream>
using namespace std;
int main() {
char c = 'a';
cout << "The ASCII code of '" << c << "' is " << (int)c << endl;
return 0;
}
output和第一个代码相同。
——大小写转换
1.使用标准库函数
C++ 标准库提供了两个函数可以实现大小写转换:tolower() 和 toupper(),分别用于将字符转换为小写字母和大写字母。这两个函数都定义在头文件 中。
以下是使用 tolower() 和 toupper() 函数实现大小写转换的示例代码:
#include <iostream>
#include <cctype>
using namespace std;
int main() {
char c = 'A';
// 将字符转换为小写字母
char c_lower = tolower(c);
cout << "The lowercase of '" << c << "' is '" << c_lower << "'" << endl;
// 将字符转换为大写字母
char c_upper = toupper(c);
cout << "The uppercase of '" << c << "' is '" << c_upper << "'" << endl;
return 0;
}
OUTPUT:
The lowercase of ‘A’ is ‘a’
The uppercase of ‘A’ is ‘A’
2.使用字符的 ASCII 码
除了使用标准库函数外,还可以利用字符的 ASCII 码进行大小写转换。字符的 ASCII 码值可以通过将字符强制转换为整数类型得到,然后加上或减去一个固定的值,即可得到对应的大小写字母的 ASCII 码值。
具体来说,将大写字母的 ASCII 码值减去 32,就可以得到对应的小写字母的 ASCII 码值;将小写字母的 ASCII 码值加上 32,就可以得到对应的大写字母的 ASCII 码值。因此,可以根据需要使用这些规则来实现大小写转换。
以下是使用字符的 ASCII 码实现大小写转换的示例代码:
#include <iostream>
using namespace std;
int main() {
char c = 'A';
// 将大写字母转换为小写字母
char c_lower = c + 32;
cout << "The lowercase of '" << c << "' is '" << c_lower << "'" << endl;
// 将小写字母转换为大写字母
char c_upper = c - 32;
cout << "The uppercase of '" << c << "' is '" << c_upper << "'" << endl;
return 0;
}
OUTPUT与第一个相同:
The lowercase of ‘A’ is ‘a’
The uppercase of ‘A’ is ‘A’
*同样可以使用 putchar() 和 printf() 函数来实现大小写转换,这两个函数也可以输出字符或字符串,并且 printf() 还可以使用格式化字符串来控制输出格式。
以下是使用putchar() 和 printf() 函数实现大小写转换的示例代码:
#include <iostream>
using namespace std;
int main() {
char c = 'A';
// 将大写字母转换为小写字母
char c_lower = c + 32;
putchar(c_lower);
putchar('\n');
// 将小写字母转换为大写字母
char c_upper = c - 32;
printf("%c\n", c_upper);
return 0;
}
——在 C++ 中,cout 是一个标准输出流对象,
用于向标准输出设备(通常是控制台)输出信息。cout 提供了一系列输出控制符,可以控制输出的格式,如宽度、精度、对齐方式等。以下是常用的输出控制符:
setw(n):设置字段宽度为 n,输出的数据将会被格式化为 n 个字符的宽度,不足部分会在左侧填充空格。
setprecision(n):设置输出的精度为 n,对于浮点数输出有效,表示小数点后保留 n 位。
setfill©:设置填充字符为 c,输出宽度不足时使用该字符进行填充。
left:设置输出左对齐,即输出左对齐而右侧用空格填充。
right:设置输出右对齐,即输出右对齐而左侧用空格填充。
fixed:设置输出为固定点格式,即小数点后保留固定位数,不自动缩短尾数。
scientific:设置输出为科学计数法格式,即小数点后保留固定位数,且指数部分始终为指数形式。
showpoint:显示小数点,即使小数部分没有数字。
uppercase:将数字以大写形式输出。
nouppercase:将数字以小写形式输出。
例如,以下代码使用了 setw()、setfill() 和 left 输出了一个左对齐、宽度为 10 个字符,不足部分用字符 * 填充的字符串:
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
cout << left << setw(10) << setfill('*') << "hello" << endl;
return 0;
}
OUTPUT:
hello*****
例:
小蓝给学生们组织了一场考试,卷面总分为 100 分,每个学生的得分都是一个 0 到 100 的整数。
如果得分至少是 60 分,则称为及格。如果得分至少为 85 分,则称为优秀。
请计算及格率和优秀率,用百分数表示,百分号前的部分四舍五入保留整 数。
#include <iostream>
#include <iomanip> // 头文件,用于输出格式控制
#include <cmath>
using namespace std;
int main() {
int n; // 学生人数
int score; // 学生得分
int count_pass = 0; // 及格人数
int count_excellent = 0; // 优秀人数
// 输入学生人数
cout << "请输入学生人数:";
cin >> n;
// 输入每个学生的得分,并统计及格人数和优秀人数
for (int i = 1; i <= n; i++) {
cout << "请输入第" << i << "个学生的得分:";
cin >> score;
if (score >= 60) {
count_pass++;
}
if (score >= 85) {
count_excellent++;
}
}
// 计算及格率和优秀率,并输出结果
double pass_rate = round(count_pass * 100.0 / n);
double excellent_rate = round(count_excellent * 100.0 / n);
cout << fixed << setprecision(2) << "及格率为:" << pass_rate << "%" << endl;
cout << fixed << setprecision(2) << "优秀率为:" << excellent_rate << "%" << endl;
return 0;
}
运行上述代码并输入测试数据,输出结果如下:
请输入学生人数:7
请输入第1个学生的得分:80
请输入第2个学生的得分:92
请输入第3个学生的得分:56
请输入第4个学生的得分:74
请输入第5个学生的得分:88
请输入第6个学生的得分:100
请输入第7个学生的得分:0
及格率为:71.43%
优秀率为:42.86%
——alogorithm库
C++ STL 中的 algorithm 库是一个常用的库,其中包含了大量常用的算法函数。以下是一些常用的 algorithm 函数列表:
for_each:对指定范围内的所有元素执行指定的操作(接受一个函数对象作为参数)。
find:查找指定值在指定范围内的第一个出现位置,返回指向该位置的迭代器。
find_if:查找指定条件在指定范围内的第一个出现位置,返回指向该位置的迭代器。
copy:将指定范围内的所有元素复制到另一个容器中。
copy_if:将指定范围内满足指定条件的所有元素复制到另一个容器中。
copy_backward:将指定范围内的所有元素复制到另一个容器中(从后往前复制)。
sort(a,a+5):对指定范围内的所有元素进行排序。
stable_sort:对指定范围内的所有元素进行稳定排序。
reverse(a+2,a+4):将指定范围内的所有元素颠倒顺序 (翻转)。
rotate:将指定范围内的所有元素向左或向右旋转若干个位置。
unique:移除指定范围内的所有连续重复元素,返回指向新的结尾位置的迭代器。
remove:移除指定范围内的所有指定元素,返回指向新的结尾位置的迭代器。
transform:对指定范围内的所有元素进行指定的变换(接受一个函数对象作为参数)。
除了以上列出的函数外,algorithm 库中还有很多其他的函数,如 accumulate、count、max、min、merge、partial_sort 等,可以根据实际需要进行使用。
max(a,b) : 求最大值 (只能求两个,求三个要嵌套)
用了algorithm头文件后,max就变成了函数名
min(a,b): 求最小值 (只能求两个,求三个要嵌套)
abs(n): 求绝对值 (只能求整形中fabs()还可以求浮点型)
容器排序:用迭代器/begin()、end()函数
——数组输入输出
- scanf,getchar,gets
- printf,putvhar,puts
例
//使用循环
char str[5];
for(int i = 0;i < 5;i++)
{
scanf("%c",&str[i];
}
//不使用循环
char str[5];
for(int i = 0;i < 5;i++)
scanf("%s",&str[i];
printf("%s",&\str[i];
——C语言进制
10:%d
8:%o
16小写:%x
16大写:%X
——C++进制
10:dec(dec可省略)
8:oct
16:hex
例
cout << “八进制为:” << oct << n<< endl;
——char和string
char和string都是C++中表示字符串的类型,但它们有以下区别:
类型:char是基本数据类型,表示一个字符;string是STL中的类,可以表示多个字符,即字符串。
存储方式:char类型的变量只能存储一个字符,通常使用字符数组来存储多个字符,以’\0’结尾表示字符串结束;而string类型的变量可以动态地存储任意长度的字符串,不需要手动添加’\0’。
操作方式:char类型的变量可以使用C风格字符串函数来操作,如strlen、strcpy、strcat等;而string类型的变量可以使用STL中提供的string类的方法来操作,如size、substr、append等。
表示方式:char类型的变量可以通过字符常量或者字符数组来表示;而string类型的变量可以通过双引号包裹的字符串字面值来表示,也可以通过调用string类的构造函数来创建。
综上所述,char和string各有优缺点,具体使用取决于实际需求。如果只需要表示一个字符,或者需要使用C语言的字符串函数来操作,可以选择char类型;如果需要动态地存储和操作字符串,可以选择string类型。
以下是使用char和string类型定义字符串的示例代码:
// 使用char类型定义字符串
#include <iostream>
#include <cstring>
using namespace std;
int main() {
char str1[] = "hello"; // 定义一个字符数组来存储字符串
char str2[10]; // 定义一个字符数组来存储字符串
strcpy(str2, "world"); // 将字符串复制到字符数组中
cout << str1 << " " << str2 << endl;
return 0;
}
// 使用string类型定义字符串
#include <iostream>
#include <string>
using namespace std;
int main() {
string str1 = "hello"; // 定义一个string对象
string str2("world"); // 定义一个string对象
str1 += " "; // 在字符串后面添加空格
str1 += str2; // 将另一个字符串添加到字符串末尾
cout << str1 << endl;
return 0;
}
上面两个示例代码分别使用了char和string类型来定义和操作字符串。需要注意的是,在使用char类型时,需要使用字符串函数来进行操作;而在使用string类型时,可以直接使用string类的方法来进行操作。