天梯赛备战(一)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>


相关文章
|
6月前
|
C++
【PTA】​L1-079 天梯赛的善良​ (C++)
【PTA】​L1-079 天梯赛的善良​ (C++)
108 0
【PTA】​L1-079 天梯赛的善良​ (C++)
|
测试技术 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++
215 1
【PTA天梯赛】L1-011 —— L1-020 c++ 题解
【PTA天梯赛】L1-011 —— L1-020 c++ 题解
383 0
|
10天前
|
存储 编译器 C++
【c++】类和对象(中)(构造函数、析构函数、拷贝构造、赋值重载)
本文深入探讨了C++类的默认成员函数,包括构造函数、析构函数、拷贝构造函数和赋值重载。构造函数用于对象的初始化,析构函数用于对象销毁时的资源清理,拷贝构造函数用于对象的拷贝,赋值重载用于已存在对象的赋值。文章详细介绍了每个函数的特点、使用方法及注意事项,并提供了代码示例。这些默认成员函数确保了资源的正确管理和对象状态的维护。
37 4
|
11天前
|
存储 编译器 Linux
【c++】类和对象(上)(类的定义格式、访问限定符、类域、类的实例化、对象的内存大小、this指针)
本文介绍了C++中的类和对象,包括类的概念、定义格式、访问限定符、类域、对象的创建及内存大小、以及this指针。通过示例代码详细解释了类的定义、成员函数和成员变量的作用,以及如何使用访问限定符控制成员的访问权限。此外,还讨论了对象的内存分配规则和this指针的使用场景,帮助读者深入理解面向对象编程的核心概念。
34 4
|
1月前
|
存储 编译器 对象存储
【C++打怪之路Lv5】-- 类和对象(下)
【C++打怪之路Lv5】-- 类和对象(下)
27 4
|
1月前
|
编译器 C语言 C++
【C++打怪之路Lv4】-- 类和对象(中)
【C++打怪之路Lv4】-- 类和对象(中)
23 4
|
1月前
|
存储 安全 C++
【C++打怪之路Lv8】-- string类
【C++打怪之路Lv8】-- string类
21 1
|
1月前
|
存储 编译器 C++
【C++类和对象(下)】——我与C++的不解之缘(五)
【C++类和对象(下)】——我与C++的不解之缘(五)
|
1月前
|
编译器 C++
【C++类和对象(中)】—— 我与C++的不解之缘(四)
【C++类和对象(中)】—— 我与C++的不解之缘(四)