Tips of C++

——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()函数

——数组输入输出

  1. scanf,getchar,gets
  2. 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类的方法来进行操作。

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值