天梯赛备战(一)c++

简介: 天梯赛备战(一)c++

1.万能头文件

#include<bits/stdc++.h>

这个头文件包含了几乎我们要用到的所有函数的头文件,包括iostream、cmath等等,用着非常的方便。但是也有一个巨大的缺点,就是很多用不到的头文件也被包含进去了,这就使得程序的运行效率降低。用的时候要想想是否要追求效率再用。

2.sqrt函数

sqrt函数可以开根号,但很多人都没记清其头文件,其实有math.h和cmath两种.前者是兼容C风格的库文件,后者是标准c++库文件

头文件

#include<cmath>
#include<math.h>th.h>

示例:

int a=9;
cout<<sqrt(a);
输出:
3

3.gets、gets_s和fgets函数

在c中我们可以使用的gets()函数,在c++中于2011年已经被删除了,所以在使用的时候会报错。现在一般用gets_s或者fgets来代替gets。其中fgets和gets是C标准库的IO函数,gets_s是微软自创的。

但是我在用的过程中发现虽然在visual studio中gets_s可以被编译,但是在PTA的编译器中,不认识gets和gets_s,但认识fgets。此处介绍一下fgets函数

函数原型

char *fgets(char *str, int n, FILE *stream);
  • str-- 这是指向一个字符数组的指针,该数组存储了要读取的字符串。
  • n-- 这是要读取的最大字符数(包括最后的空字符)。通常是使用以 str 传递的数组长度。
  • stream-- 这是指向 FILE 对象的指针,该 FILE 对象标识了要从中读取字符的流。

功能

从指定的流 stream 读取一行,并把它存储在str所指向的字符串内。当读取(n-1)个字符时,或者读取到换行符时,或者到达文件末尾时,它会停止,具体视情况而定。

示例

 char a[1000];
    fgets(a, 1000,stdin);

4.setw函数

在cout<<处使用,作用是设置域宽

头文件

#include<iomanip>

示例

int a=2;
cout<<setw(5)<<a;
输出:
    2

5.strlen函数

用来求字符串的长度。从头往后数,直到遇到/0(最终统计长度不包括/0)

头文件

#include<string.h>

示例

char a[10];
cin>>a;
cout<<strlen(a);
输入:
123
输出:
3

把strlen和sizeof作比较,会发现它们其实很像,只不过sizeof比strlen多数了一个。

6.sort函数

头文件

#include<algorithsm>

模板

默认 (1)  
template <class RandomAccessIterator>
  void sort (RandomAccessIterator first, RandomAccessIterator last);
自定义 (2) 
template <class RandomAccessIterator, class Compare>
  void sort (RandomAccessIterator first, RandomAccessIterator last, Compare comp);

默认是按照升序进行排序,使用的方法是快速排序

示例

vector<int>a = { 5,7,3,1,5,9,2,4,2 };
  sort(a.begin(), a.end());
  for (int i = 0; i < 9; i++)
    cout << a[i] << " ";
输出:1 2 2 3 4 5 5 7 9

注意:sort () 只能对提供随机访问迭代器的容器中的元素进行排序,一般的数组不行!

7.辗转相除法求最大公约数

在PTA中可以直接调用__gcb函数,不用自己写,O(∩_∩)O。但是我在vs中试了试却不行,

┭┮﹏┭┮。还是自己掌握一种实现方法吧。

实现

int gcd(int a, int b)
{
    if (b == 0) return a;
    return gcd(b, a % b);
}

原理:a/b=c 余r,通过数学证明证明,gcd(a,b)是等于gcd(b,r)的

8.abs函数

对整数求绝对值

头文件

#include<stdlib.h>


相关文章
|
2月前
|
C++
【PTA】​L1-079 天梯赛的善良​ (C++)
【PTA】​L1-079 天梯赛的善良​ (C++)
67 0
【PTA】​L1-079 天梯赛的善良​ (C++)
|
9月前
|
C++
【PTA天梯赛】L1-011 —— L1-020 c++ 题解
【PTA天梯赛】L1-011 —— L1-020 c++ 题解
248 0
|
9月前
|
测试技术 C++
【PTA天梯赛】L1-001 L1-002 L1-003 L-004 L-005 L-006 L-007 L-008 L-009 L1-010 c++
【PTA天梯赛】L1-001 L1-002 L1-003 L-004 L-005 L-006 L-007 L-008 L-009 L1-010 c++
174 1
|
6天前
|
存储 编译器 C语言
c++的学习之路:5、类和对象(1)
c++的学习之路:5、类和对象(1)
22 0
|
6天前
|
C++
c++的学习之路:7、类和对象(3)
c++的学习之路:7、类和对象(3)
19 0
|
5天前
|
设计模式 Java C++
【C++高阶(八)】单例模式&特殊类的设计
【C++高阶(八)】单例模式&特殊类的设计
|
5天前
|
编译器 C++
【C++基础(八)】类和对象(下)--初始化列表,友元,匿名对象
【C++基础(八)】类和对象(下)--初始化列表,友元,匿名对象
|
9天前
|
存储 安全 C语言
【C++】string类
【C++】string类
|
存储 编译器 Linux
标准库中的string类(中)+仅仅反转字母+字符串中的第一个唯一字符+字符串相加——“C++”“Leetcode每日一题”
标准库中的string类(中)+仅仅反转字母+字符串中的第一个唯一字符+字符串相加——“C++”“Leetcode每日一题”
|
11天前
|
编译器 C++
标准库中的string类(上)——“C++”
标准库中的string类(上)——“C++”