OI基础

int及long long的最大值

int (long) 231-1;
long long 263-1;
int (long) -2147483648~2147483647
unsigned int (unsigned long) 0~4294967295
long long (__int64)的最大值:9223372036854775807
long long (__int64)的最小值:-9223372036854775808
unsigned long long (unsigned __int64)的最大值:18446744073709551615

注意:

  1. 正溢出后值小于零,负溢出后值大于等于零
  2. int 类型占4个字节,每个字节占8位,所以一共有32位,除去一位符号位,也就31位,能表示整数大小是-231到231-1,已知210约等于103多一点(1024),所以 231约等于2*109
  3. 一般的long long为64位,由于负数补码的bai原因,第一位作为符号位,因此有63位可用。则取值范围为-263到263-1 , 已知210约等于103多一点(1024),则long long大概为9x1018这么多,9后面18个0,建议大于这个数就考虑高精度相关

数据类型不匹配

int main(){
    int a,b;
    scanf("%lld%lld",&a,&b);
    cout<<a<<endl;
    cout<<b<<endl;
    cout<<a+b; 
    return 0;
}
输入:3 4
输出:
0
4
4

字符串大小比较的规则

比较的时候,从字符串左边开始,一次比较每个字符,直接出现差异、或者其中一个串结束为止。

比如ABC与ACDE比较,第一个字符相同,继续比较第二个字符,由于第二个字符是后面一个串大,(按ASCII值大小相比较) 所以不再继续比较,结果就是后面个串大。

再如ABC与ABC123比较,比较三个字符后第一个串结束,所以就是后面一个串大。

所以,长度不能直接决定大小,字符串的大小是由左边开始最前面的字符决定的。

strcmp函数:

strcmp是string compare(字符串比较)的缩写,用于比较两个字符串并根据比较结果返回整数。基本形式为strcmp(str1,str2),若str1=str2,则返回零;若str1<str2,则返回负数;若str1>str2,则返回正数。

getline函数

getline函数读取标准字符串

此函数会一次读取多个字符(包括空白字符)。它以指定的地址为存放第一个读取的字符的位置,依次向后存放读取的字符,直到读满N-1个,或者遇到指定的结束符为止。若不指定结束符,则默认结束符为换行符,此函数并不保留结束符,它通过结束符确定结束,但不保存结束符,它用空字符来替换结束符。其语法为:
c i n . g e t l i n e ( 字 符 指 针 ( c h a r ∗ ) , 字 符 个 数 N ( i n t ) , 结 束 符 ( c h a r ) ) ; cin.getline(字符指针(char*),字符个数N(int),结束符(char)); cin.getline((char),N(int),(char));

#include <iostream>
using namespace std;
int main()
{
    char a[30];
    cin.getline(a, 10);
    for( int i=0; i<10; i++ )
        cout << a[i] << " ";
    return 0;
}

输入:1234567890123

输出:1 2 3 4 5 6 7 8 9 _ (第10位存放字符串结束符’\0’)

getline函数读取string

在这里插入图片描述

处理文件结束(EOF)

  • while (cin >> n >> m)
    cin是C++的标准输入流,其本身是一个对象,并不存在返回值的概念。不过经常会有类似于while(cin>>a)的调用,这里并不是cin的返回值,而是>>操作重载函数istream& operator>>(istream&, T &);的返回值,其中第二个参数由cin>>后续参数类型决定。其返回值类型为istream&类型,大多数情况下其返回值为cin本身(非0值),只有当遇到EOF输入时,返回值为0
  • while(scanf("%d%d",&a,&b)!=EOF)
  • while(~scanf("%d%d",&a,&b)!=EOF)

gets特点

  • gets的输入分割符只有回车,因此gets能够读入空格
  • scanf在读取非空白符之前会忽略回车,读取之后如果遇到空白字符会停止输入,将其留着缓冲区里;gets只要一遇到回车就输入结束,并把这个回车从缓冲区里移走(gets可以读取空回车,但是scanf不能),所以gets会偷回车,可能使程序莫名炸掉
  • gets()函数读取到\n时停止读取,但是它不会把\n包含到字符串里面去。然而,和它配合使用的puts函数,却在输出字符串的时候自动换行
  • gets在C11标准中被删除,可用C标准库中的fgets代替.

c t y p e . h ctype.h ctype.h常用函数

头文件:<ctype.h>

isalpha()检测一个字符是否是字母:65-90&&97-122
isdigit()检测一个字符是否是十进制数字:48-57
islower()检测一个字符是否是小写字母:97-122
isupper()检测一个字符是否是大写字母:65-90
isxdigit()检测一个字符是否是十六进制数字
tolower()将大写字母转换为小写字母
toupper()将小写字母转换为大写字母

取整函数

头文件:<cmath>

  • ceil的英文意义是天花板,该方法就表示向上取整,ceil(11.3)为12,ceil(-11.3)为-11;
  • floor的英文意义是地板,该方法就表示向下取整,floor(11.6)为11,Math.floor(-11.6)为-12;
  • round方法表示“四舍五入”,即floor(x+0.5),round(11.5)为12,round(-11.5)为-11;
    <cmath>其他常用函数
  • double fabs(double x)返回 x 的绝对值
  • double sqrt(double x)返回 x 的平方根
  • double pow(double x, double y)返回 x 的 y 次幂
  • double log(double x)返回 x 的自然对数(基数为 e 的对数)
  • double log10(double x)返回 x 的常用对数(基数为 10 的对数)
  • double cos(double x)
  • double sin(double x)(math无tan())

数组从1开始输入

int a[maxn]; foo(i,1,n)scanf("%d",a+i);

其他

for循环中带冒号(:)用法简介

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值