c语言从入门到入坑

创建一个项目不能包含特殊字符,最好用英文加上数字

空项目没有什么可以生成,不会失败

#include<>表示包含系统的文件,而#include””表示包含自己写的文件

Main函数有且只能有一个

预处理指令可以不加分号

C语言的输入输出靠的是标准库stdio,其中std表示标准库,io表示输入输出,i是input输入,o是output输出

 

命令提示符编程

Cmd打开命令提示

要运行写的程序,首先找到程序所在的目录,进入程序的exe文件的目录后,输入程序的名称即可执行程序。

System函数需要先包含“stdlib.h”头文件,暂停的命令是“pause

任何c程序都可以以main为入口点来执行。

 

Void main(){ }   解析:void表示main函数的返回值为空,main执行完成可以什么都不返回,()里面表示的是执行main函数所需的参数,此处表示无参数,{ }表示函数体,指main函数执行需要做的工作。

 

Printf(“字符串”)  解析:调用printf输出函数输出字符串,printf函数在<stdio.h>中,要使用printf需要包含头文件<stdio.h>

 

一个最简单的helloworld程序:

#include<stdio.h>

void main(){

    printf("Helloword");

getchar();//等待输入一个字符

}

解析:#include表示包含头文件,<stdio.h>表示的是输入输出的头文件,getchar()可以让程序处于等待状态,等待输入一个字符后程序执行结束

 

//代表注释一行,/*   */ 中间的内容不管多少行都会被注释

 

 

编译器会自动忽略注释以及空格、换行等,被忽略的内容不影响程序的长度,也不影响程序的正常运行

 

重点:断点调试

插入断点:在要插入断点的地方,右键→断点→插入断点

左侧变成一个红色的点说明断点插入成功

在断点模式下点击:调试→窗口,可以选择GPU、反汇编、线程等的查看

断点调试结束停止调试,然后删除断点即可

 

 

 

#include解析

如果是包含源文件(系统文件)则用<>,如果是包含自己写的内容,则用””

#include可以在任意的位置使用

#include类似调用,而被其包含的头文件类似函数,即整个过程类似函数的调用

被包含的头文件名字以及后缀可以随便取,例如:#include”123.txt”

#include”lojh.abc”等

#和include之间可以有0个空格也可以有n个空格

#include的作用:在程序运行之前把一些东西加载进来

#include预处理语句可以不加上分号结束,但是其他语句需要加上分号结束

 

Main函数有且只有一个

 

Stdio.h是输入输出库,c语言没有输入输出语句,完全靠的是输入输出标准库

 

Cpp兼容c

 

C语言的命令行程序

Win+r输入cmd进入命令行模式

Ipconfig查看本机ip

Ping ip 查看网络是否畅通

Cd 进入目录,  D:切换至d盘

System函数在stdlib.h头文件里面,要使用system需要包含stdlib.h文件

System(“pause”)表示暂停

System(“c:\\cmd.exe”)表示执行cmd.exe程序

 

C语言打开一个exe程序

弹出对话框:首先要包含windows.h这个头文件(#include<windows.h>);然后需要调用MessageBox(0,””,“”,0);这个函数。解析:第一个参数表示依赖窗口参数,设置为0表示windows系统弹出,第二个参数表示对话框的内容,第三个是对话框的标题,第四个是对话框类型,设置为0即可。

重点:

#include<stdio.h>

#include<Windows.h>//windows.h头文件,用来调用弹窗等,MessageBox(0,"","",0);需要此头文件支持

void main(){

    printf("helloworld");

    MessageBox(0, "你的电脑中毒了", "Windows提示!", 0);//第一个参数代表的是依赖窗口编号,设置为0表示的是打开系统窗口,第二个代表的弹窗的内容,第三个代表的是弹窗的标题,第四个代表的是窗口的类型,设置为0即可

    ShellExecute(0,"open","F:\\Program Files (x86)\\Tencent\\WeChat\\WeChat.exe",0,0,1);//ShellExecute是windows里面进行一系列操作的函数

    /*

    ShellExecute(0,"open","程序路径、cmd命令、文档路径、网址等",0,0,1);共有6个参数,第一个参数代表的是谁执行的,0代表是系统执行的,第二个参数指执行的操作,一般只有open和print,

    第三个参数指需要执行的东西,可以是程序、网站、命令等,第四个和第五个表示的是系统保留的参数,一般不做修改,第六个是控制打开的窗口隐藏、最大化、最小化

    参数6代表最小化、1是最大化

    open代表打开的类型,如果换成print则是打印

    */

    ShellExecute(0, "open", "https://www.baidu.com/",0,0,6);//ShellExecute依赖于windows.h文件

    ShellExecute(0, "open", "mailto:1334058176@qq.com",0,0,1);//发送邮件给1334058用户

    getchar();

 

}

 

 

 

  1. printf(“%d”,c)//把c按十进制打印出来
  2. printf(“\n”);  \n表示换行,\t表示制表符

 

 

 

MFC程序

  1. MFC设置:

  1. 找到视图→工具箱→把Button拖到窗口内
  2. 点击Button会在右下角有一个属性

  1. 进行属性的设置

这是按钮的名字,根据需要设置

  1. 双击按钮进入代码,在此书写需要执行的代码

 

 

1.转义字符:

\n 表示换行 ,\t表示制表符(空格),\a 表示发声,\b实现光标退格,\f在编辑器里面是换页,在dos命令是垃圾字符,\r 把光标移动到当前行的开头,\v表示垂直制表符(类似换行),在dos命令里面是垃圾字符,\0表示什么都不操作,有没有都一样,\\表示\,\”表示”,

Putchar(‘a’)表示输出一个字符,单引号完成字符,双引号完成字符串

2.常量与变量

Int num=10;

Printf(%d,num,%x,&num)//解析:%d表示以十进制打印num的值,%x,&num,按照16进制打印出num的内存地址

 

  1. 常量的定义

使用关键字const来定义一个常量

常量是不能被修改的,是固定的值

常量定义:const int a=10;

常量可读不可写

另一种定义常量的方式:#define x 10

使用#define的方式更容易修改数据,只需要改一次即可,另外define还有代替的意思

例如:#define a 1000 即1000用a来代替

#define后面不能加上分号,define可以替换任何字符和字符串,例如

#define 我很帅 main

表示用我很帅替换掉main,写程序时如下

Void 我很帅(){

}

以上无任何语法错误能够执行起来

常量不上左值,不可修改

 

全局变量和函数一样声明可以有多个,定义仅有一个,例如:

Int a;

Int a;

Int a;

Int a;

若都是定义在全局则不会报错

全局变量如果只有声明没有定义,会自动初始化一个为0

 

按照一个字符一个字符输出hello

#include <stdio.h>

void main(){

    printf("%3c%c%c%c%3c", 'h', 'e', 'l', 'l', 'o');

    getchar();

}

 

C%表示的是按照字符的方式输出

3c%表示字符的宽度,即3c代表一个字符的宽度为3,例如

#include <stdio.h>

void main(){

    printf("%3c%c%c%c%3c", 'h', 'e', 'l', 'l', 'o');

    getchar();

}

结果如图

 

利用%s输出hello,%s表示的是输出一个字符串

%15s表示限定字符的宽度为15,右对齐,如果限定的宽度小于实际字符串宽度,则按照实际字符串长度输出;若是宽度为负数,则实际上为左对齐;若只输出字符串中的前几个,则可以用小数表示,如:helloworld只需要输出hello,则代码这样写:

Printf(”%15.5s”,” helloworld”)

结果如图:

 

可以使用%s输出字符数组

#include <stdio.h>

void main(){

    char str[] = "hello world";

    printf("%s", str);

    getchar();

}

结果也是输出了hello world

 

 

%f表示输出实数类型,默认的f%精确到小数点后6位,其余的就自动四舍五入,如:

#include <stdio.h>

void main(){

    float a = 1.234567;

    double b = 9.5468787;

    printf("%f\n%f",a,b);

    getchar();

}

结果:

需要注意的是若是实际的数据位数小于要保留的数据位数,则后面会出现误差

其实%e就是按照指数的方式输出实数,可以表示很大或很小的数。%m.ne表示宽度为m,小数点位数为n的指数表示法。如:%15.7e

%g就是墙头草,基本上输出最主要的数据。

 

Printf原理是抓取二进制数据,然后按照指定的格式进行显示,不管以前是什么格式

Printf从左到右进行解析,然后%%d的解析过程:%%解析成%,然后d解析成d,所以,最后输出是%d,一个%什么都不会输出

 

*可以表示任意的一个变量,如:

#include <stdio.h>

void main(){

    char d = '*';

    for (int i = 1; i < 10;i++){

         printf("\n%*c",i,d);

    }

    getchar();

}

如果格式控制需要动态变化,可以使用*占位,然后将变量映射进去即可。

如下图所示

%d中间加上空格,若是正数则会在前面加上一个前缀,若是负数则无影响,如下:

#include <stdio.h>

void main(){

    int i = 10;

   

         printf("%d\n% d",i,i);

   

    getchar();

}

 

#的作用是用什么格式输出,则会保留什么格式。若是%#.0f则一定保留小数

切记:实数按照整数解析会出错,整数按照实数解析也会出错。

Printf第一个类型不匹配,那么就算第二个类型匹配也会导致发生错误,两个都错误

Limits.h  包含所有类型的极限,如:

若要输出正负数,则要在%d加上+,如:

Putchar和puts

#include <stdio.h>

void main(){

         puts("hello");

    getchar();

}

输出了字符串hello,且puts会在字符串末尾自动加上换行

 

#include <stdio.h>

void main(){

         putchar('h');

         putchar('e');

         putchar('l');

         putchar('l');

         putchar('o');

    getchar();

}

输出的结果也是hello,只能一次输出一个字符,且没换行

 

Scanf输入语法

#define _CRT_SECURE_NO_WARNINGS//关闭安全检查,或者使用scanf_s

#include <stdio.h>

#include <stdlib.h>

void main(){

    int a;

    scanf("%d", &a);//按照正数来解析,并传入a的地址,根据地址对a初始化(赋值)

    printf("%d",a+60);

    system("pause");

}

 

Scanf多值输入:

#define _CRT_SECURE_NO_WARNINGS//关闭安全检查

#include <stdio.h>

#include <stdlib.h>

void main(){

    int a,b,c;

    scanf("%d%d%d", &a,&b,&c);

    printf("a的值为:%d\nb的值为:%d\nc的值为:%d",a,b,c);

    system("pause");

}

输入多个数据可以使用空格,tab键以及回车来区分。

注意,如果是双精度的数据,则一定要加上L,否则不会生效

如果scanf参数之间有非空格的字符,则需要一并输入,否则变量不会初始化

空白符号在%前面会被忽略,在后面会被要求多输入数据,但是不影响结果。

Getchar

Getchar会把回车空格tab键当作一个字符。

 

输入一串字符串:

#define _CRT_SECURE_NO_WARNINGS//关闭安全检查

#include <stdio.h>

#include <stdlib.h>

void main(){

    char str[50];

    gets_s(str);//把输入的字符串传给str

    system(str);//执行系统命令

    system("pause");

}

规范用户输入

 

 

转换大小写(大写变小写先判断是大于91还是小于等于91,然后大写字母加上32变成小写,小写字母减去32变成大写字母)

#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>

#include<stdlib.h>

 

void main(){

    char a = 'a';

    printf("请输入一个字母:\n");

         scanf("%c", &a);

         if (a<=91){

             a = a + 32;

             printf("\n其小写字母为:%c", a);

 

         }

         else{

             a = a - 32;

             printf("\n其大写字母为:%c", a);

         }

    system("pause");

}

判断输出了几个字符:(vs2013的printf已禁用%n)

 

判断输入了几个字符

 

 

 

 

 

十进制整数的输入输出:%i

 

十六进制浮点数的指数计数法:%a、%A

 

 

语句的类型

#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>

#include<stdlib.h>

void main(){

    int a, b, c;//数据说明

    scanf("%d%d%d",&a,&b,&c);//扫描数据

    printf("\n%d", a + b + c);//计算数据并打印

    system("pause");

    //程序就是一些有序指令的集合,以上程序即从上至下执行

 

}

 

数据说明和语句就构成了程序,数据说明是描述数据,语句即对数据进行的一系列操作

不在同一个会语句中的变量可以同名,且编译器会把他编译成不同的内存块。

结构化程序设计

每一个结构有各自的功能,各个功能相互协调

算法的表现:第一种是伪代码

第二种方式:流程图

 

三种控制结构

循环、分支、顺序

下面实现每五秒钟打开一次百度,并进行点击广告,无限打开

#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>

#include<stdlib.h>

#include<Windows.h>

 

void openbaidu(){

    ShellExecuteA(0, "open", "https://www.baidu.com/s?wd=%E7%BD%91%E7%BB%9C%E5%9F%B9%E8%AE%AD&rsv_spt=1&rsv_iqid=0xe14fbcc2000555ce&issp=1&f=3&rsv_bp=1&rsv_idx=2&ie=utf-8&rqlang=&tn=baiduhome_pg&ch=&rsv_enter=0&prefixsug=%25E7%25BD%2591%25E7%25BB%259C%25E5%259F%25B9%25E8%25AE%25AD&rsp=2&inputT=5478", 0, 0, 0);//最后的0表示默默打开,若是3则表示公开打开

};

void closebaidu(){

    system("taskkill /f /im iexplore.exe");

};

 

void click(){

    SetCursorPos(224,253);//设置鼠标位置

    Sleep(100);

mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);//鼠标点击事件,鼠标左键按下

    mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);//鼠标点击事件,鼠标左键弹起

   

    //SetWindowPos();//设置窗口位置

 

};

void main(){

    while (1)//无限循环

    {

         openbaidu();//打开百度并进行搜索

         Sleep(15000);//暂停15秒

         click();//点击鼠标所在位置

         Sleep(10000);//暂停10s

         closebaidu();//关闭浏览器进程

         Sleep(3000);//暂停3秒

    }

   

   

 

}

 

顺序结构:

使用顺序结构实现打开我的电脑

#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>

#include<stdlib.h>

#include<Windows.h>

 

 

void main(){

    SetCursorPos(50,50);//设置鼠标的位置

    Sleep(500);

    //以下类似双击鼠标

    mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);//鼠标左键按下

    mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);//鼠标左键弹起

    mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);//鼠标左键按下

    mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);//鼠标左键弹起

    Sleep(5000);

 

 

    system("pause");

}

 

 

 

 

 

 

 

给数值排序

超简单代码实现排序

#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>

#include<stdlib.h>

#include<Windows.h>

void main(){

    //完成给数值排序

    float a, b, c, t;

    printf("请输入要排序的数:");

    scanf("%f%f%f", &a, &b, &c);

    if (a>b){

         t = a;

         a = b;

         b = t;

 

    }

    if (b>c){

         t = b;

         b = c;

         c = t;

 

    }

    printf("\n从小到大排序为:%5.2f,%5.2f,%5.2f",a,b,c);

 

    system("pause");

}

 

 

 

 

If分支结构

#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>

#include<stdlib.h>

#include<Windows.h>

void main4(){

    if (true)

    {

         system("netstat -na");//查看开启了哪些端口和链接

         getchar();

    }

    else{

         system("net user");

         getchar();

    }

}

void main(){

#define 技术面试得分 88

#define 综合面试得分 74

#define 技术面试分数线 80

#define 综合面试分数线 75

    if (技术面试得分<技术面试分数线)

    {

         printf("\n滚!你被淘汰了");

    }

    else if (综合面试得分<综合面试分数线)

    {

         printf("\n很遗憾,你未通过面试,你不善言辞!");

    }

    else{

         printf("\n恭喜您,你真是个人才,您已被录取");

    }

    getchar();

}

 

 

 

 

 

 

 

 

 

 

创建一个自己的浏览器

 

 

 

 

 

随机运行

 

 

 

 

 

 

 

 

Switch语句

 

Switch(){

Case a:

语句1;

Break;

Case b

语句2;

Break;

Default :

语句3;

Break

}

程序如下:

#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>

#include<stdlib.h>

void main(){

    printf("请输入你的选择:");

    int num;

    scanf("%d",&num);

    switch (num)

    {

    case 1:

         printf("团长");

         break;

    case 2:

         printf("局长");

         break;

    case 3:

         printf("师长");

         break;

    case 4:

         printf("美国大兵");

         break;

    default:

         printf("输入错误,请重新输入!");

         break;

    }

    system("pause");

}

有break则多个分支选择一个分支,无break则多分支选择多分支。

 

 

循环语句

#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>

#include<stdlib.h>

void main2(){

    int num = 0;

    scanf("%d",&num);

    while (num){

         system("start notepad");//异步操作,不等待

         num--;

    }

}

//从1加到100

void main3(){

    int i = 0;

    int resut = 0;

    while (i<=100){

         resut += i;

         i++;

    }

    printf("%d", resut);

    system("pause");

}

//求2的n次方

void main(){

    int re = 1;

    int i;

    scanf("%d", &i);

    while (i){

         re *= 2;

         i--;

         printf("\n%d,%d",i,re);

        

    }

    printf("\n\n%d",  re);

    system("pause");

}

 

 

 

 

 

 

 

调戏qq项目(实现qq沿对角线运动并且运动过程中若隐若现)

#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>

#include<stdlib.h>

#include<Windows.h>

void openqq(){

    ShellExecuteA(0, "open", "\"D:\\QQ\\Bin\\QQScLauncher.exe\"", 0, 0, 1);//打开qq

   

}

void moveqq(){

    HWND win = FindWindowA("TXGuiFoundation","QQ");//根据类名和标题查找qq的窗口编号

    if (win==NULL){

         printf("qq在玩失踪!");

    }

    int i = 0;//i代表纵坐标

    while (i<1080){

         SetWindowPos(win, NULL, i*16/9, i, 500, 400, 0);//设置窗口大小以及窗口位置

         Sleep(200);

         i += 10;

         if (i / 10 % 2 == 1){

             ShowWindow(win, SW_HIDE);//把qq窗口隐藏

         }

         else

         {

             ShowWindow(win, SW_SHOW);//把qq窗口显示

         }

    }

   

   

}

void main(){

    openqq();

    Sleep(3000);

    moveqq();

    Sleep(2000);

    system("taskkill /f /im QQ.exe");

}

 

 

 

 

 

 

 

实现变色龙和计时器

#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>

#include<stdlib.h>

#include<Windows.h>

//实现变色龙

void main(){

    int j = 0;

    char str[40];

    char tr[20];

    while(1){

         for (int i = 0; i < 16; i++)

         {

             sprintf(tr, "color %x%x", i, 15 - i);//把i和15-i按照十六进制格式化后传递给tr,即此时的tr为color 0F

             system(tr);//执行命令,即执行了color 1E

             printf("\n%s",tr);

             sprintf(str, "title 程序启动了%d秒",j);//记录标题

             j++;

             system(str);//改变标题

             Sleep(1000);

 

         }

 

    }

   

}

 

 

Do while循环 

先执行一次再判断是否进行循环

#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>

#include<stdlib.h>

#include<Windows.h>

void main(){

    do {

         printf("\n认真的男人最帅");

    } while (1);

}

 

 

 

 

死循环吃内存卡死电脑

#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>

#include<stdlib.h>

#include<Windows.h>

void main(){

    do {

         malloc(1024*1024*10);//分配10m内存

         Sleep(1000);//每一秒分配10m内存

    } while (1);

}

 

注意:getchar会把回车当作输入的字符

此时我们需要多加一个getchar来抵消

Start calc 异步打开计算器

下面实现百度网盘长方形旋转:

#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>

#include<stdlib.h>

#include<Windows.h>

void openbaidu(){

    ShellExecuteA(0, "open", "\"D:\\BaiduNetdisk\\BaiduNetdisk.exe\"", 0, 0, 1);//打开百度网盘

}

void movebaidu(){

    HWND win = FindWindowA("DuiHostWnd", "欢迎使用百度网盘");//根据类名和标题查找百度网盘的窗口编号

    if (win == NULL){

         printf("百度网盘有点皮!");

    }

    for (;;){

         SetWindowPos(win, NULL, 0, 0, 500, 400, 0);//设置起始窗口大小以及窗口位置

         //第一个win代表获取的窗口,null默认,0,0代表窗口原先位置,500,400代表窗口大小,0代表默认

         for (int i = 0; i < 1000; i++){

             SetWindowPos(win, NULL, i, 0, 500, 400, 0);//设置窗口大小以及窗口位置

 

         }//向右移动

         SetWindowPos(win, NULL, 1000, 0, 500, 400, 0);//设置起始窗口大小以及窗口位置

         for (int i = 0; i < 500; i++){

             SetWindowPos(win, NULL, 1000, i, 500, 400, 0);//设置窗口大小以及窗口位置

 

         }//向下移动

         SetWindowPos(win, NULL, 1000, 500, 500, 400, 0);//设置起始窗口大小以及窗口位置

         for (int i = 1000; i >0; i--){

             SetWindowPos(win, NULL, i, 500, 500, 400, 0);//设置窗口大小以及窗口位置

 

         }//向左移动

         SetWindowPos(win, NULL, 0, 500, 500, 400, 0);//设置起始窗口大小以及窗口位置

         for (int i = 500; i >0; i--){

             SetWindowPos(win, NULL, 0, i, 500, 400, 0);//设置窗口大小以及窗口位置

 

         }//向上移动

 

    }

   

}

void main(){

    openbaidu();

    Sleep(8000);//等待8秒

    movebaidu();

    //Sleep(6000);

    //system("taskkill /f /im baidunetdisk.exe");//关闭百度网盘

}

 

Break跳出循环,下面是求13x+11y=316中的x和y

#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>

#include<stdlib.h>

#include<Windows.h>

void main(){

    //计算13x+11y=316的值

    for (int i = 0;;i++){

         printf("\n%d", i);

         if (((316-13*i)%11)==0){

             printf(" \n13*%d+11*%d=316", i,(316-13*i)/11);

             break;

 

         }

    }

   

    getchar();

}

 

 

 

 

 

ShellExecuteA

ShellExecuteA(0, "open", "notepad", 0, 0, 0);

最后的一个参数:0表示隐藏,1表示正常,3表示最大化,6表示最小化

 

 

MessageBoxA(0, "第一个C窗体程序", "消息", 3);

          //参数1:系统弹出

          //        参数2:消息内容

          //        参数3:标题

          //        参数4:对话框的类型

                   //        0  只有 确定 按钮;

                   //        1  确定 取消 按钮;

                   //        2  终止 重试 忽略 按钮

                   //        3  是 否 取消 按钮

 

 

 

 

Goto语句(无条件跳转语句)

Goto和if结合形成有限循环

 

注意:break语句是跳出循环,执行循环外的下一条语句。而若是使用goto代替break,值需在循环外的下一条语句前面加上aaa: printf(“adb”);

循环语句即是if语句和goto语句的结合

Goto可以跳出多个循环

 

 

 

 

 

 

 

 

Goto语句实现闪屏  迅雷隐藏以及沿对角线运动

#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>

#include<stdlib.h>

#include<Windows.h>

void openxl(){

    ShellExecuteA(0,"open","\"D:\\Thunder\\Program\\Thunder.exe\"",0,0,1);//打开迅雷

    Sleep(6000);

}

void tiaoxixl(){

    HWND win = FindWindowA("XLUEFrameHostWnd","迅雷极速版");//获取迅雷窗口

    if (win==NULL){

         printf("迅雷在和你躲猫猫");

    }

    //SetWindowPos(win, NULL, 0, 0, 500, 300,0);

    int i = 0;

    a: if (i<1200){

    SetWindowPos(win, NULL, i, i * 9 / 16, i, i * 9 / 16, 0);

         i+=50;

         if (i%3==0){

             ShowWindow(win, SW_HIDE);

             Sleep(500);

         }

         else{

             ShowWindow(win, SW_SHOW);

             Sleep(500);

         }

         goto a;

    }

       SetWindowPos(win, NULL, 0, 0, 500, 300, 0);

   b: ShowWindow(win, SW_HIDE);

       Sleep(50);

       ShowWindow(win, SW_SHOW);

       Sleep(50);

       goto b;

       //此处是使用goto语句实现无限闪屏功能

}

void main(){

    openxl();

    tiaoxixl();

    Sleep(1000);

    system("taskkill /f /im Thunder.exe");

}

 

随机数

 

 

午夜幽灵

 

 

 

 

 

 

 

 

 

 

 

 

 

嫁祸百度云管家吃了很多内存

  1. 写好代码如下:

  1. 点击解决方案资源管理器下面的项目,然后鼠标右键属性

  1. 更改为dll

 

 

 

 

 

 

4.鼠标右键“吃内存”,然后点击生成

5.把main函数改为导出接口函数_declspec(dllexport) void goA(){ }//此为函数导出接口

6.继续点击生成

7.选择要嫁祸的进程以及要注入的dll(刚才写的dll)

8.点击注入

9.结果是x64注入工具的内存占用一直在增加

 

 

 

 

 

 

 

 

实现倒转输入的数(重要)

#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>

#include<stdlib.h>

#include<Windows.h>

int getwei(int num){

    int wei = 0;//定义位数

    for (int j = num; j; j /= 10)

    {

         wei++;

    }

    return wei;

}

int jieshu(int n){//求10的n次方

    int res = 1;

    for (int i = 0; i < n;i++){

         res *= 10;

    }

    return res;

 

}

void main(){

    int num;

    printf("请输入数字:");

    scanf("%d", &num);

    printf("\n%d", num);

    int wei = getwei(num);//获取num的位数

    printf("\n%d", wei);

    int inum = num;

    int last = 0;

    for (int i = 0; i <= wei;i++){

         int shu;

         shu = inum % 10;//每次取出最小位的值,比如说123%10=3

         last += shu*jieshu(wei-1-i);//累加每次求出的结果,如123计算则此处为last=0+3*10的2次方,第二次则为last=300+2*10的1次方

         inum /= 10;//每次去掉最后的位数,比如说123/10=12

 

    }

    printf("\n倒转过后的结果为:%d",last);

    system("pause");

 

 

}

 

任意次方的计算(重要)

#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>

#include<stdlib.h>

#include<Windows.h>

 

int dcifang(int num){//求10的n次方

    int sult = 1;

   

    for (int i=0;i<num;i++){

         sult *= 10;

    }

    printf("\n10的%d次方为:%d", num, sult);

    return sult;

}

int dcifang(int m,int n ){//求m的n次方

    int sult = 1;

 

    for (int i = 0; i<n; i++){

         sult *= m;

    }

    printf("\n%d的%d次方为:%d\n", m,n, sult);

    return sult;

}

void main(){

    int d,y;

    printf("请输入底数数:");

    scanf("%d", &d);

    printf("\n请输入次方数:");

    scanf("%d", &y);

    dcifang(d,y);

    system("pause");

}

 

 

 

 

 

 

 

 

 

 

 

实现程序倒计时以及计数

#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>

#include<stdlib.h>

#include<Windows.h>

void main(){

    char tring[50];

    int time;

    printf("请输入需要倒计时的时间:");

    scanf("%d", &time);

   

         for (int i = time; i>0; i--){

             sprintf(tring, "title 距离时间结束还有%d秒", i);

             system(tring);

             printf("\n程序已执行了%d秒!", time-i+1);

             Sleep(1000);

         }

         printf("\n\n\t\t程序已执行结束,再见!!!\n");

        

   

   

 

 

}

 

换桌面

 

 

 

 

 

 

 

 

 

Qq位置随鼠标移到而随机变化

#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>

#include<stdlib.h>

#include<Windows.h>

#include<time.h>

int num[4] = {0,1,2,3};//定义int类型数组来表示上下左右四个方向

void openqq(){

    ShellExecuteA(0,"open","\"D:\\QQ\\Bin\\QQScLauncher.exe\"",0,0,1);//正常打开qq

}

void closeqq(){

    system("taskkill /f /im QQ.exe");//关闭qq

}

 

void moveqq(){//调戏qq

    HWND win = FindWindowA("TXGuiFoundation","QQ");//根据类名和标题查找qq窗口

    if (win == NULL){

         printf("马化腾藏起来了!");

    }//判断win的指针是否为空,若为空则没找到

    while (1){

         POINT xy;//定义鼠标位置

         xy.x = 0;//设置鼠标横坐标为0

         xy.y = 0;//设置鼠标纵坐标为0

         GetCursorPos(&xy);//获取鼠标当前的位置,将值存入xy

         int date = rand() % 4;//创建随机数,且随时间不断变化的随机数,且此数据在0,1,2,3范围内

         switch (date)

         {

         case 3:

             SetWindowPos(win, NULL, xy.x, xy.y, 500, 450, 0);//设置窗口位置在鼠标右下角

             Sleep(150);

             break;

        case 2:

             SetWindowPos(win, NULL, xy.x-500, xy.y, 500, 450, 0);//设置窗口位置在鼠标左下角

             Sleep(150);

             break;

         case 1:

             SetWindowPos(win, NULL, xy.x-500, xy.y-450, 500, 450, 0);//设置窗口位置在鼠标左上角

             Sleep(150);

             break;

         case 0:

             SetWindowPos(win, NULL, xy.x, xy.y-450, 500, 450, 0);//设置窗口位置在鼠标右上角

             Sleep(150);

             break;

         default:

             break;

         }

        

    }

   

}

void main(){

    time_t ts;//定义时间类型的变量

    srand((unsigned int)time(&ts));//根据时间初始化随机数种子

    closeqq();

    openqq();

    Sleep(5000);

    moveqq();

    closeqq();

 

}

实现模拟键盘打开资源管理器

#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>

#include<stdlib.h>

#include<Windows.h>

 

void main(){

    //实现按住win+e打开资源管理器

    keybd_event(0x5b, 0, 0, 0);//模拟键盘,按下windows键

    keybd_event('E', 0, 0, 0);//模拟键盘,按下e键

    keybd_event('E', 0, 2, 0);//模拟键盘,松开e键

    keybd_event(0x5b, 0, 2, 0);//模拟键盘,松开windows键,即按下和松开键盘上的win

 

}

 

 

 

 

 

 

 

 

 

实现模拟键盘打开notepad,然后最大化notepad后写入数据表白

#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>

#include<stdlib.h>

#include<Windows.h>

 

void main(){

    //实现按住win+e打开资源管理器

    keybd_event(0x5b, 0, 0, 0);//模拟键盘,按下windows键

    keybd_event('R', 0, 0, 0);//模拟键盘,按下e键

    keybd_event('R', 0, 2, 0);//模拟键盘,松开e键

    keybd_event(0x5b, 0, 2, 0);//模拟键盘,松开windows键,即按下和松开键盘上的win

    Sleep(2000);

    keybd_event('N', 0, 0, 0);//模拟键盘,按下N键

    keybd_event('N', 0, 2, 0);//模拟键盘,松开N键

    keybd_event('O', 0, 0, 0);//模拟键盘,按下O键

    keybd_event('O', 0, 2, 0);//模拟键盘,松开O键

    keybd_event('T', 0, 0, 0);//模拟键盘,按下T键

    keybd_event('T', 0, 2, 0);//模拟键盘,松开T键

    keybd_event('E', 0, 0, 0);//模拟键盘,按下E键

    keybd_event('E', 0, 2, 0);//模拟键盘,松开E键

    keybd_event('P', 0, 0, 0);//模拟键盘,按下P键

    keybd_event('P', 0, 2, 0);//模拟键盘,松开P键

    keybd_event('A', 0, 0, 0);//模拟键盘,按下A键

    keybd_event('A', 0, 2, 0);//模拟键盘,松开A键

    keybd_event('D', 0, 0, 0);//模拟键盘,按下D键

    keybd_event('D', 0, 2, 0);//模拟键盘,松开D键

    Sleep(1000);

    keybd_event(0x0d, 0, 0, 0);//模拟键盘,按下回车键

    keybd_event(0x0d, 0, 2, 0);//模拟键盘,松开回车键

    keybd_event(0x0d, 0, 0, 0);//模拟键盘,按下回车键

    keybd_event(0x0d, 0, 2, 0);//模拟键盘,松开回车键

    Sleep(2000);

    keybd_event(0x5b, 0, 0, 0);//模拟键盘,按下windows键

    keybd_event(38, 0, 0, 0);//模拟键盘,按下向上箭头键

    keybd_event(38, 0, 2, 0);//模拟键盘,松开向上箭头键

    keybd_event(0x5b, 0, 2, 0);//模拟键盘,松开windows键,这里四句代码是为了使当前窗口最大化win+向上箭头

    for (int i = 0; i < 50;i++){

         keybd_event('W', 0, 0, 0);//模拟键盘,按下W键

         keybd_event('W', 0, 2, 0);//模拟键盘,松开W键

         keybd_event('O', 0, 0, 0);//模拟键盘,按下O键

         keybd_event('O', 0, 2, 0);//模拟键盘,松开O键

         keybd_event('A', 0, 0, 0);//模拟键盘,按下A键

         keybd_event('A', 0, 2, 0);//模拟键盘,松开A键

         keybd_event('I', 0, 0, 0);//模拟键盘,按下I键

         keybd_event('I', 0, 2, 0);//模拟键盘,松开I键

         keybd_event('N', 0, 0, 0);//模拟键盘,按下N键

        keybd_event('N', 0, 2, 0);//模拟键盘,松开N键

         keybd_event('I', 0, 0, 0);//模拟键盘,按下I键

         keybd_event('I', 0, 2, 0);//模拟键盘,松开I键

         keybd_event(32, 0, 0, 0);//模拟键盘,按下空格键

         keybd_event(32, 0, 2, 0);//模拟键盘,松开空格键

 

         keybd_event(13, 0, 0, 0);//模拟键盘,按下回车键

         keybd_event(13, 0, 2, 0);//模拟键盘,松开回车键

    }

   

 

}

 

切记:函数定义只能有一个,但是函数声明可以有多个;

以上不会报错

上图为定义,只能有一个

 

 

 

 

 

 

 

 

 

 

模拟鼠标键盘操作消耗百度整容广告费用

#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>

#include<stdlib.h>

#include<Windows.h>

void open(char *str){//打开某网站,此处的*str代表任意字符串的指针

    ShellExecuteA(0,"open",str,0,0,1);//1参数代表正常打开某网站、程序

 

}

void close(){//关闭网站进程,即关闭浏览器进程

    system("taskkill /f /im 360chrome.exe");

}

void sousuo(){//进行搜索 整容,keybd_event模拟键盘输入

    keybd_event('Z',0,0,0);

    keybd_event('Z', 0, 2, 0);

    keybd_event('H', 0, 0, 0);

    keybd_event('H', 0, 2, 0);

    keybd_event('E', 0, 0, 0);

    keybd_event('E', 0, 2, 0);

    keybd_event('N', 0, 0, 0);

    keybd_event('N', 0, 2, 0);

    keybd_event('G', 0, 0, 0);

    keybd_event('G', 0, 2, 0);

    keybd_event('R', 0, 0, 0);

    keybd_event('R', 0, 2, 0);

    keybd_event('O', 0, 0, 0);

    keybd_event('O', 0, 2, 0);

    keybd_event('N', 0, 0, 0);

    keybd_event('N', 0, 2, 0);

    keybd_event('G', 0, 0, 0);

    keybd_event('G', 0, 2, 0);

    keybd_event(49, 0, 0, 0);//49代表tab键上面的1按键

    keybd_event(49, 0, 2, 0);

    Sleep(1000);

    keybd_event(13, 0, 0, 0);//模拟键盘,按下回车键

    keybd_event(13, 0, 2, 0);//模拟键盘,松开回车键

//按了回车表示进行搜索

}

void click(){//实现点击广告,使用mouse_event模拟鼠标函数

    for (int i = 353; i <= 1050;i+=240){

         mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE, 560 * 65535 / 1920, i * 65535 / 1080, 0, 0);//移动鼠标位置

         Sleep(50);

         mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);//鼠标左键按下

         mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);//鼠标左键弹起

    }

   

}

void main(){

    while (1)

    {

         open("http://www.baidu.com");

         Sleep(8000);

         sousuo();

         Sleep(9000);

         click();

         Sleep(5000);

         close();

    }

   

}

可变参数的处理

 

 

 

 

 

 

 

 

 

 

 

可变参数的加法计算

 

可变参数为字符串,注意以下定义指针没有*

以上这些都需要使用到的头文件

 

 

 

注:部分图片引用了传智播客的尹成老师c语言从菜鸟到高手视频内截图,若有侵权,请告知删除。

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值