第 1 节 职场修炼:程序员到底能干多久
1 )薪资过万后,很难进一步提升2 )可替代性高,在新人面前,没有绝对优势。3 )结婚成家后,在 996 工作环境下,难以承受。
1 )选择合适的方向前端开发, PHP 开发等方向,技术含量低,可替代性高。2 )掌握企业的核心业务,核心技术,向技术管理方向发展3 )掌握外包开发核心技能,逐步拓展外包人脉
第 2 节 项目拓展 1-循环的经典应用:暴力破解密码
项目需求:假设密码只由6位数字组成,写一个程序破解这个密码!!
新建一个项目1,项目名字叫测试代码,写上如下代码,并运行,
client.cpp
#include <iostream>
#include <Windows.h>
#include <string>
using namespace std;
int main(void) {
string pwd;
while (1) {
cout << "Please input your password: ";
cin >> pwd;
if (pwd == "000123") {
break;
}
else {
cout << "Password error." << endl;
}
}
cout << "login success" << endl;
cout << "1. 注册" << endl;
cout << "2. 管理" << endl;
cout << "3. 查询" << endl;
cout << "4. 删除" << endl;
system("pause");
return 0;
}
新建项目2,项目名字叫黑客攻击,并写上如下代码
crack.cpp:
#include <iostream>
using namespace std;
int main(void) {
char dict[64]; //10+26+26+1 = 63;
char tmp[32];
int index = 0;
for (int i = 0; i < 10; i++) {
dict[index++] = '0' + i;
}
dict[index] = '\0';
int n = index; // 字符个数
for (int p1 = 0; p1 < n; p1++) {
for (int p2 = 0; p2 < n; p2++) {
for (int p3 = 0; p3 < n; p3++) {
for (int p4 = 0; p4 < n; p4++) {
for (int p5 = 0; p5 < n; p5++) {
for (int p6 = 0; p6 < n; p6++) {
tmp[0] = dict[p1];
tmp[1] = dict[p2];
tmp[2] = dict[p3];
tmp[3] = dict[p4];
tmp[4] = dict[p5];
tmp[5] = dict[p6];
tmp[6] = '\0';
cout << tmp << endl;
}
}
}
}
}
}
return 0;
}
就是说client.cpp是要输入数据的,crack.cpp是输出数据的。
crack.exe | client.exe
这个是管道的操作方式,就是用前面那个程序的输出作为后面那个程序的输入,这个管道要掌握!!
运行结果:
破解成功!!
第 3 节 项目拓展 2-宅男福利:控制台上跳极乐净土(动画版)
方法 1) 把字符集改为 使用 ” 多字节字符集 ”方法 2) 使用自定义的函数 , 进行字符编码的转换
Demo:
首先该文件夹下得有图片资源:
极乐净土:
打开:
一共148张图片。
要设置项目属性:
字符集改为——使用多字节字符集。 (否则有问题)
最后编码设置为中文编码:
不然播放没音乐!! 很多人神恶魔都做好了,也能运行出图片,但是就是没有音乐!就是因为编码没有设置。
#include <iostream>
#include <graphics.h>
#include <Windows.h>
#include <string>
#include <string.h>
#include <MMSystem.h> // 播放音乐需要的头文件
#pragma comment(lib, "winmm.lib") //告诉编译器, 加载 winmm.lib 库文件
using namespace std;
#define COUNT 148
int main(void) {
char fileName[128];
std::cout << "正在加载..." << std::endl;
//预加载
IMAGE images[COUNT];
for (int i = 1; i <= COUNT; i++) {
sprintf(fileName, "极乐净土\\images2\\_%04d_图层-%d.jpg", i-1, COUNT-i+1);
loadimage(&images[i - 1], fileName);
}
initgraph(800, 450);
mciSendString(_T("play 滑脚怪.mp3 repeat"), 0, 0, 0);//重复播放"滑脚怪.mp3"
while (1) {
for (int i = 0; i < COUNT; i++) {
putimage(0, 0, &images[i]);
Sleep(75);
}
}
system("pause");
closegraph();
return 0;
}
这里不得不补充一下sprintf()函数的用法,%0md,就是说数据没有m位时,用0补充。但是没有%2md这种用法,数据不足m位时,用2补充,没有这种用法,只能用0补充!!
运行结果:我录制了一个视频让大家看效果:
链接:https://pan.baidu.com/s/1adM_ZRyRTQW_Uf-0Nr6giA?pwd=8080
提取码:8080
是不是感觉很有趣!后面马上用图形化界面做黑客攻击系统!