本文没有过多介绍什么C++的语法,就是一些写套路和一些必备的STL库。
题集的题解在这里:PAT乙级题集题解
1#include <iostream>
2using namespace std;
3int main(){
4 int N = 3;
5 printf("%d\n%02d",N,N); // 输出3 03
6 return 0;
7}
1int gcd(int a, int b){
2 return b == 0 ? a : gcd(b, a % b);
3}
cin 和 cout 比 printf 和 scanf 更加耗时,且不要再同一个程序中同时使用 cout 和 printf。
绝对值在10的9次方内的数都可以使用int来表示。
float 的有效精度只有 6~7 位,而 double 有 15~16 位。因此碰到浮点型数据直接全部使用double来存储!!
小写字母ASCII码值比大写字母的ASCII码值大32。
1scanf("%lf",&db); //输入double类型
2scanf("%s",str); //输入字符串(char类型的数组)
3printf("%f",db);//而double和float在printf中都是%f
1fabs(double x);//对double类型取绝对值
2floor(double x);//对double类型向下取整
3ceil(double x);//对double类型向上取整
4round(double x);//对double类型的值四舍五入
5log(double x);//自然对数为底, 若其他为底,则用换底公式
6pow(double r, double p);//计算r的p次方
当我们发现数字过大时,需要自己完成加法操作(对应位数相加,保留进位等)
1string add(string a,string b){
2 int t=0;
3 for(int i=0;i<b.length();i++){
4 t=t+a[i]-'0'+b[i]-'0';
5 a[i]='0'+t%10;
6 t/=10;
7 }
8 if(t>0) a+="1";
9 reverse(a.begin(),a.end());
10 return a;
11}
定义结构体的话,可以直接使用一下的方式,一步到位完成结构体成员赋值。
1struct Student{
2 int score;
3 string name;
4 Student(string n, int s){
5 name = n;
6 score = s;
7 }
8};
注意:无return语句、构造函数名称与结构体名称相同,可重载。
或者初始化列表方法:
1struct Student{
2 int score;
3 string name;
4 Student(string n, int s): name(n),score(s) {}
5};
使用:
1Student stu[3];
2cin >> n >> s;
3stu[i] = Student(n, s);
结构体排序使用sort方法类似。
1bool cmp(Student x, Student y){
2 return x.name < y.name;
3}
1//判断是否是素数
2bool judgeSu(int num) {
3 for (int i = 2; i <= sqrt(num); i++) {
4 if (num % i == 0) {
5 return false;
6 }
7 }
8 return true;
9}
在快速排序中选择的主元排序后位置是不变的:参考题目1045快速排序 (25 分)。
统计某种按规则的字符串,可以考虑逆序统计。参考题目:1040有几个PAT(25分)。
1、find函数原型:size_t find ( const string& str, size_t pos = 0 ) const; 功能:查找子字符串第一次出现的位置。 参数说明:str为子字符串,pos为初始查找位置。 返回值:找到的话返回第一次出现的位置,否则返回string::npos
2、substr函数原型:string substr ( size_t pos = 0, size_t n = npos ) const; 功能:获得子字符串。 参数说明:pos为起始位置(默认为0),n为结束位置(默认为npos) 返回值:子字符串
1#include <iostream>
2#include <string>
3using namespace std;
4int main(){
5 string a = "Hello World!";
6 string b = a.substr(0, 3);
7 cout<<b;
8 int bb = a.find("!");
9 cout<<bb;
10 return 0;
11}