一些基础知识

C

c语言中声明语句前置。
c中没有 和 cin、cout
c不需要using namespace std;

C++

//一些头文件
#include <algorithm>

\(1Byte\)(字节)8位,\(int\) 4 \(Byte,double\) 8 \(Byte.\)

二进制表示
32767:0111 1111 1111 1111
-32768:1000 0000 0000 0000
1做最高位是负数

image

语法基础

  1. 注释
    //
    /* */
    2.输入输出
    cin cout

scanf printf 更快

getchar();putchar();都是对单个字符使用
putchar(66);输出'B'

%s字符串 用cin输入遇到空格回车都会停止读入
gets()可以读入空格,碰到回车停止

image

%c字符 给char赋值用单引号
%ffloat 默认输出6位
%lf双精度浮点数(double) %lld`长整型(long long)
image

%5d输出: 15;右对齐
%-5d输出:15 ;左对齐加-

float f = 1.2345678f;
printf("%10.2f",f);
//输出:      1.23(所有位有10位)

一个黑窗口分10列,1列8格,输出时碰见\t直接跳至下一列开头。

2.优先级

image

算术运算符 +-*% ++ --
逻辑运算符是 &&,||,!三种
赋值运算符 += -= *=

3.宏定义

define本质上是 文本替换。

宏可以带参数

#define sum(x,y) ((x)+(y))
#define square(x) ((x)*(x))

带参数的宏有别于函数。

最好用函数

define有风险,需要用 undef及时取消定义。

5.数据类型

1.void
2.bool(一字节8位)
3.char 字符常量用单引号'A'
转义字符:以""开头,后跟一个或多个字符表示特殊字符
\n 换行
\ 代表一个
' 代表一个'
\0 空字符 不是空格,就是什么都没有 可以作为字符串结束标志

大写+32=小写
'0'-48=0

4.float(整数部分+小数部分有效位是6~7位) double(有效15~16)
a E n : a * 10^n
a为整数时默认int,a为小数时默认double
1.23E3 -> 1230
0.23E-4
1.27f : float类型
5.unsignd表示无符号

short -32768~32767 (2^15-1)
unsigned short 0~65535
int -2147483648~2147483647 (2^31-1)

  1. bool表达式 ? 表达式1 : 表达式2
    如果bool表达式为true则返回表达式1的值,反之返回2的值。

  2. 循环
    breakcontinue搭配使用
    for
    while
    do...while

7.switch找入口的语句

switch(表达式 必须是整型){
  case 标号1(必须是常量且唯一): 
    语句1; break;//不用大括号
  case 标号2: 
    语句2; break;//没有break会向下依次执行,不会像else一样忽略
  default:
    
}

8.数组
注意边界,角标从0开始

9.结构体 struct

struct dlut{
  int age;
  int rank;
}niuma[45],www;

cout << www.age << " " << niuma[22].age;
  1. 类型转换

image

如果小数被转换为整数会丢失小数部分(做除法除不尽时也会舍弃小数部分),如果运算过程中有浮点数那么结果也会是浮点数。

字符串

scanf("%s",s);
gets(s); puts("0"); puts(a);

函数

strlen 长度
strcat(s1,s2) 把s2接到s1之后,返回s1
strcpy(s1,s2) 把s2复制到s1

strcmp(s1,s2) 比较s1和s2的大小,s1 > s2返回正整数,s1 = s2返回0,s1 < s2 返回负整数

函数调用不改变实参的值
要想变需要引用

void iswap(int &a,int &b);

如果函数中的参数类型是数组,会直接改变数值,因为形参中数组存储的是地址

递推递归

递推:已知推未知
递归:未知到已知再返回 记得<记忆化搜索>

STL

\(vector\)

vectorv1;
T可以是任何数据类型,如int,string,vector(构建多维数组)
v.empty() 为空则返回true
v.size() 返回元素个数
v.push_back() 向尾端添加元素
v.pop_back() 删除尾端元素
v[n]
v.begin()和v.end()返回的是位置,不是具体的元素值
v.sort()升序排序
v.unique() 去重

deque
priority_queue优先队列
stack
set
multiset
map映射

共有函数: = begin() end() size() empty()判断是否为空 swap() clear()

multimap


find reverse unique去重 sort lower_bound返回第一个大于等于x的元素的位置 upper_bound返回第一个大于x的元素的位置


bitset
string
pair

posted @ 2024-09-26 19:19  弗阴  阅读(16)  评论(0)    收藏  举报