1、项目需求:实现黑客攻击系统菜单打印
实现:
#include <iostream>#include <Windows.h>int main( void ) {std::cout << "1. 网站 404 攻击 " << std::endl;std::cout << "2. 网站篡改攻击 " << std::endl;std::cout << "3. 网站攻击记录 " << std::endl;std::cout << "4.DNS 攻击 " << std::endl;std::cout << "5. 服务器重启攻击 " << std::endl;system( "pause" );return 0;}
需求增加:没有输入账号登录, 就直接显示功能菜单. 应该先让用户输入账号并登录
实现:
#include <iostream>#include <Windows.h>int main( void ) {char name;int pwd;std::cout << " 请输入账号: " ;std::cin >> name;std::cout << " 请输入密码: " ;std::cin >> pwd;/*std::cout << "1. 网站 404 攻击 " << std::endl;std::cout << "2. 网站篡改攻击 " << std::endl;std::cout << "3. 网站攻击记录 " << std::endl;std::cout << "4.DNS 攻击 " << std::endl;std::cout << "5. 服务器重启攻击 " << std::endl;*/system( "pause" );return 0;}
不用懂代码,只是让你跟着敲,熟悉头文件的名字,熟悉主函数。
2、C++数据类型
已经是用过的数据类型有:字符串类型、整数类型
2.1什么是数据类型?
 
 不同类型的人, 思考问题,处理问题的方式都不一样。计算机中的数据,也分成很多种类型: 
 
| int | usigned int | char | 
| usigned char | long | long long | 
| unsigned long | short | unsigned short | 
| float | double | 各种指针类型 | 
| 枚举类型 | struct结构体类型 | union联合类型 | 
| bool | string | 类 | 
其中C++完全支持C语言的各种数据类型,不同数据类型的区别:
1. 表示意义不同2. 占用内存不同3. 表示的范围不同4. 使用方法不同
 
 数据类型使用不当,将导致严重的后果。  
 
 
 1.  
 对于程序员:隐藏  
 BUG,建议载刷题的时候,浮点数用double,整数用long long或者int 
 
 
 2. 对于系统:隐藏灾难,因数据类型使用不当,产生数据溢出,导致阿丽亚娜  
 5  
 型运载火箭自爆 
 
 
3、变量
变量,不是数学中的变量,程序在运行时,需要保存很多内容常常变化的数据。
 
 比如,射击类游戏中不断变化的“分数”。 世界中的芸芸众生:数据在大量变量之间“计算”、“交换”。 
 变量是处理数据的基本实体。变量是什么? 
 
变量,是内存中的一块存储空间,即一小块内存
 
  变量和数据类型有什么关系?  
 
 
  
  变量,是一个盒子,盒子里保存了“数据” ,数据又分成很多“类型”(数据类型)  
 
 
  
  =>  
  变量的类型,就是变量中数据的类型。  
 
 
  
  =>  
  变量在定义(创建)时,必须先指定它的类型。  
 
 
  
  【相当于:制作一个盒子时,必须先确认这个盒子是用来装什么的】  
 
 
  
  => 1  
  个变量只有  
  1  
  个类型,而且不能改成其他类型 
 
 
变量的定义形式:
 
 定义形式  
 1 
 :  
 
 
 int x;  
 
 
 int y;  
 
 
 
 定义形式  
 2 
 : 
 ( 
 不推荐)  
 
 
 int x, y;  
 
 
 
 定义形式  
 3 
 :(定义的时候,设置一个初始值)  
 
 
 int x = 100; 
 
 
 
 深度剖析: 
 
 
  int a; // 
  定义了一个变量  
 
 
  
  a = 100; 
 
 
  
  内存原理: 
 
 
  
 
   
   内存的存储单位 
   - 
   “字节”  
  
 
   
   内存的存储单位,是字节。 一个字节,包含 8  
   位二进制位。 
  
 
   
    数据在内存中存储的模式:  
   
 
    
    大端模式:低字节存放到高地址中  
   
 
    
    小端模式:低字节存放到低地址中。  
   
 
    
    一般 
    PC 
    机都是小端方式,大端方式对人来  
   
 
    
    看友好,小端方式对机器来看友好。参考  
   
 
    
    《计算机组成原理》 
   
 
   
   变量名的命名规范  
  
 
  1) 只能包含 3 种字符(数字、大 / 小写字母,下划线)2) 不能以数字开头(即,只能以字母或下划线开头)int 2name; // 非法3) 不能和“关键字”同名(c 语言内部已经使用的“名称”),比如类型名 int变量名的最大长度, C 语言没有规定。最大长度限制,取决于编译器,一般都在 32 以上。
 
   变量名,最好“ 
   顾名思义 
   ”,即见名知意,不用使用汉语拼英的简写 
   !  
  
 
   
   比如:用  
   name  
   表示姓名,用  
   power  
   表示功率。  
  
 
   
   命名风格 
   :  
  
 
   
    小驼峰命名:如果只有一个单词则全  
   
 
    
    部小写,如果有多个单词,则从第二  
   
 
    
    个单词开始,所有单词首字母大写。  
   
 
    
    eg:studentAge  
   
 
    
    大驼峰命名:如果只有一个单词,首  
   
 
    
    字母大写即可,如果有多个单词,则  
   
 
    
    每个单词首字母大写即可。 
   
 
   
   1 
   )下划线风格  
  
 
   
   int student_age; (一般用于变量名、函数名 
   )  
  
 
   
   2 
   )小驼峰风格  
  
 
   
   int studentAge; (一般用于变量名、函数名 
   )  
  
 
   
   1 
   )大驼峰风格  
  
 
   
   class StudentAge; ( 
   一般用于“类名” 
   )  
  
 
   
   2 
   )全部大写  
   ( 
   一般用于宏 
   )  
  
 
   
   #define MAX_AGE 30  
  
 
   
   注意: 
  
 
   
    宏在预处理的时候就被替换成  
   
 
    
    相应的数据了。 
   
 
   
   请忘记“匈牙利命名法”(属性 
   + 
   类型 
   + 
   对象描述),这种命名已被丢弃。 
  
 
   
    注意:在编程语言中,一般都可以以 
    $ 
    符号开头 ,这个企业面试容易问到,只是一般不 用$ 
    开头,所以把这个忽略了。 
   
 
    
   4、整形
 
    原始人,使用结绳计数,这个“数”就是整数 
   
 
    
     int  
     类型  
    
 
     
     使用最多的整数类型  
    
 
     
     在内存中占  
     4  
     个字节  
    
 
     
     表示范围: 
     - (2  
     的  
     31  
     次方 
     ) ~ 2  
     的  
     31  
     次方 
     -1  
     【正负 21 亿左右】 
    
 
     
     
      长整形  
      long  
     
 
      
      long  
      也就是  
      long int  
     
 
      
      可用来存储更大的整数。 
     
 
      
       在  
       32  
       位系统上,占  
       4  
       个字节,和  
       int  
       相同  
      
 
      在 64 位系统上,占 8 个字节【正负 9 百亿亿左右】,在VS编译器上不管在32还是64位平台均和int范围一样,为了统一,以后长整型都用long long类型
 
        长长整形  
        long long  
       
 
        
        用来存储整数。  
       
 
        
        在内存中占  
        8  
        字节。  
       
 
        
        很少使用,仅用于特殊的计算。 
       
 
        
        long long 
        类型最大值为:  
       
 
        
        9223372036854775807  
       
 
        
        即九百亿亿多。 
       
 
        
        
         短整形  
         short  
        
 
         
         用来存储整数。  
        
 
         
         在内存中占  
         2  
         字节。  
        
 
         
         用于存储小范围的整数  
        
 
         
         表示范围: 
         - (2  
         的  
         15  
         次方 
         ) ~ 2  
         的  
         15  
         次方 
         -1  
         【正负 3 万多】 
        
 
         
         
         无符号类型, 铁公鸡 
         - 
         概不赊欠 
         - 
         没有负数 
        
 
         
          unsigned int  
         
 
          
          unsigned long  
         
 
          
          unsigned long long  
         
 
          
          unsigned short  
         
 
          
          最小值都是  
          0 
          , 最大值是对应的有符号数的 
           2 倍 
         
 
          
          经典用法: 
         
 
          
           unsigned short port; // 
           用来表示网络通信的端口号(0-65535) 
          
 
          
 unsigned int num; // 
 表示编号(0 到四十多亿)  
 
 
 
 字符类型, 
 用于单个字符的数据类型 
 
 
  char  
 
 
  
  某学员的字母故事 
  .  
 
 
  
  单个字符:  
 
 
 ‘0’ ‘1’ ‘2’ ‘3’ ...... ‘9’‘a ’ ‘b’ ‘c’ ‘d’ ...... ‘z’‘A’ ‘B’ ‘C’ ‘D’ ...... ‘Z’‘,’‘-’‘!’ ‘#’.......
 
  单个字符常量, 要求用‘’括起来  
 
 
  
  字符类型  
  char  
 
 
  
  一个字节。  
 
 
  
  char name = ‘a’;  
 
 
  
  内存示意图: 
 
 
 
 
 
  
 字符的实际表示:  
 
 
 所有的字符,使用对应的  
 ASCII  
 值来存储。 为什么?(因为计算机中只能存储 0  
 和  
 1  
 的组合)  
 
 
 ASCII  
 码,使用  
 1  
 个字节(包含  
 8  
 个二进制位,即  
 8  
 个  
 0  
 和  
 1  
 的组合)  
 
 
 比如:’A’ ,  
 用  
 0100 0001  
 来表示, 就是  
 65, 
 ‘B’, 用  
 0100 0010  
 来表示, 就是  
 66 
 
 
 ASCII码表: 
 
 
 
char name ='a'

 
 char name = ‘a’;  
 
 
 等效于:  
 
 
 char name = 97;  
 
 
 char  
 类型的另一种用法  
 
 
 用来表示小范围的整数( 
 -128 ~ 127 
 )  
 
 
 不过现在开发时,小范围的整数,也常常直接用  
 int  
 类型。  
 
 
 实例:  
 
 
 int x = 0;  
 
 
 x = ‘a’ + 1; // 97 + 1  
 
 
 注意 
 :  
 
 
 1  
 和  
 ‘1’ 
 的区别 
 .  
 
 
 int x = 1;  
 
 
 char y = ‘1’; //49 
 
 
5、浮点型:用于精确计算的数据类型(浮点型)
 
 需要精确计算的数学、工程应用,用整数类型不合适。 
 
 
 生活中的 
 ” 
 敏感数据 
 ”  
 
 
 
 
 float  
 类型(单精度浮点类型)  
 
 
 用来存储带小数部分的数据。 在内存中占用 4  
 个字节  
 
 
 表示范围: 
 -3.4*10^38 
 ~ 
 +3.4*10^38  
 ( 
 不需记忆 
 )  
 
 
 精度: 
 最长  
 7  
 位有效数字 
 (是指  
 7  
 位  
 10  
 进制位)  
 
 
 float y = 1.123456789;  
 
 
 // 
 精度只能取值到  
 1.1234568,  
 在第  
 7  
 位(整数部分不算)是四舍五入后的值。 
 
float 类型的存储方式:

 
 学过计算机组成原理的都知道,这是 经典的IEEE754 
 标准存储浮点数。科 班出生的同学一定要掌握,不然学到 深处跟不上。 
 
符号位: 0 代表正数, 1 代表负数阶码: 指数 +127符号位 尾数 * 2 ^ ( 阶码 -127)
 
 转化过程:(了解)  
 
 
 float x = 13.625;  
 
 
 13.625  
 的转化: 
 
 
 
阶码用移码表示,位数用原码表示,隐藏一位1,有效位数为24位,因此把int型转为float类型可能会有精度丢失。实际存储如下:

 
 double  
 类型(双精度浮点类型)  
 
 
 用来存储带小数部分的数据。  
 
 
 8  
 个字节  
 
 
 具体的存储方式和  
 float  
 相似 
 . 
 
 
有效位数为53位。
 
 表示范围: 
 -1.7*10^308~1.7*10^308 
 ( 
 不需记忆 
 )  
 
 
 精度: 
 最长  
 16  
 位有效数字 
 (是指  
 16  
 位  
 10  
 进制位)  
 
 
 double y = 1.12345678901;  
 
 
 
 浮点类型的常量  
 
 
 带小数的常量默认都是  
 double  
 类型  
 
 
 3.14  
 是  
 double  
 类型  
 
 
 3.14f  
 强制指定是  
 float  
 类型  
 
 
  注意,编程的时候,给 float类型变量赋值时,后 面要加上F 
  ,这样写更加规 范,不加F 
  默认是 
  double 
  类型,会发生便宜警告。 
 
 
 
 可以用 
 ” 
 科学计数法 
 ” 
 表示浮点类型的常量  
 
 
 1.75E5  
 或  
 1.75 e5  
 
 
 1.75E5  
 就是  
 1.75  
 乘以  
 10  
 的  
 5  
 次方 
 (100000), 175000.0  
 
 
 注意:  
 
 
 1  
 是  
 int  
 类型的常量  
 
 
 1.0  
 是  
 double  
 类型的常量 
 
 
 小案例,浮点数据的输出控制 
 
#include<iostream>
#include<Windows.h>
using namespace std;
int main(void){
double value = 12.3456789;
// 默认精度是 6,所以输出为 12.3457
//(默认情况下,精度是指总的有效数字)
cout << value << endl;
// 把精度修改为 4, 输出 12.35, 对最后一位四舍五入
// 精度修改后,持续有效,直到精度再次被修改
cout.precision(4);
cout << value << endl;
// 使用定点法, 精度变成小数点后面的位数
// 输出 12.3457
cout.flags(cout.fixed);
cout << value << endl;
// 定点法持续有效
// 输出 3.1416
cout << 3.1415926535 << endl;
// 把精度恢复成有效数字位数
cout.unsetf(cout.fixed);
cout << value << endl; //输出 12.35
cout << 3.1415926535 << endl; //输出 3.142
system("pause");
return 0;
}这个案例是浮点数打印的经典案例,必须自己手动敲牢牢掌握。



















