c++学习day2

时间:2022-02-01 03:24:39

1. 输入输出

1)控制符

c++学习day2

2) 如果要读取所有输入的字符,包括空格和回车,可以有如下两种方法,其中EOF在windows里默认是 ctrl+Z

注:输入字符时,scanf不会跳过空格,输入其他类型数据时会跳过空格。但是cin会跳过空格。

#include <iostream>
using namespace std;
int main(){
    int a;
    while((a = cin.get()) != EOF){
        cout << (char)a;
    }
    char c;
    while(scanf("%c",&c) != EOF){
        printf("%c",c);
    }
    ;
}

3)cin/cout比scanf/printf速度慢,因此数据量比较大时推荐使用后者。此外在一个程序里不建议同时使用cin和scanf,或者同时使用cout和printf。

4)freopen重定向输入:用于调试程序时避免手动输入测试数据

注:1.文件路径的输入用到了\\而不是\,是因为字符串的输入中要输入\就得在前面加个\;2.while(cin>>n) 这里也可以用while(scanf("%d",&n) == 1),对于scanf来说,返回值为输入变量的数目,对于cin来说,返回值为是否按要求输入了所有的变量(即0和1),停止输入可输入ctrl+Z。

c++学习day2

2. 加减乘运算

1)以操作数中精度高的类型为准,其中

double>long long>int>short>char

2)运算溢出

溢出的部分直接丢弃,举例如下。解决溢出的方法就是使用更高精度的数据类型。

c++学习day2

3. 运算符优先级

c++学习day2

 4. switch

switch语句在进入某个case分支后,会一直执行到第一个碰到的break,即使这个break是在后面的case 分支中,直到swith语句末尾的}。举例如下

c++学习day2

 5.数组

注:1.数组一般不要定义在main里面;2.数组越界,比如定义int a[10],语句a[-2]=100编译也不会报错,但可能会修改其他变量的值,或者访问指令区域,使得程序运行会出错。

举例:筛法求n以内的素数(素数即不存在除1和本身外的因子)

思路1):遍历一一判断。判断数j,即判断小于等于j的平方根的数可不可以整除j;

思路2):对于数i,删掉i的倍数的数

c++学习day2

6.函数

1)传值:形参只是实参的拷贝,形参的改变不影响实参

2)传引用:形参的改变影响实参,比如数组

7.库函数和头文件

库函数是由编译器自带的,为使用这些库函数需要有声明,而头文件内部即包含许多库函数的声明。

比如 cin cout ,需要使用头文件iostream 因此需要#include <iostream>

c++学习day2

c++学习day2

8.位运算

按位与&:置0

按位或|:置1

按位异或:取反 0xff(1111 1111)

注:异或运算的特点是 如果a^b=c则 c^b=a c^a=b 此特点可用于加密解密,或者交换两个数的值