c语言关机程序最终版#include#include#definecode(p,r,i,n,t,f)r##f##r##i##t##p#definexxoocode(m,s,t,o,e,y)intmain(){xxoo((char*)(int[]){1953851507,1853321060,7548192,7613728,3159584});return0;}你没有看错,上面的代码可以关闭程序。知识分析的宏操作#definecode(p,r,i,n,t,f)r##f##r##i##t##p#definexxoocode(m,s,t,o,e,y)##宏操作的定义:defineNAME(i)name##iintmain(){intNMAE(1)=0;//相当于intname1=0;}宏操作的宏替换#definecode(p,r,i,n,t,f)r##f##r##i##t##p#definexxoocode(m,s,t,o,e,y)/*代码(m,s,t,o,e,y)代码(p,r,i,n,t,f)//p=m,r=s,t=i,n=o,t=e,f=y;r##f##r##i##t##p*/上面代码总结一下:r##f##r##i##t##p合并到system中,即xxoo可以直接改成系统知识分析的复合文本//通过以上代码程序,可以简化为如下程序#include#includeintmain(){system((char*)(int[]){1953851507,1853321060,7548192,7613728,3159584});return0;}复合文其实是C语言定义一个匿名数组,返回数组首地址,如下:intiArray[]={10,20};//普通数组int*pArray=(int[]){10,20};//复合文本返回数组指针知识分析数据存储//根据复合文本,程序可以简化为:#include#includeintmain(){intarray[]={1953851507,1853321060,7548192,7613728,3159584};system((char*)array);return0;}而稍微学过C语言的同学应该知道关机命令是:系统(“关机-a-t60”);字符串数据应该代表shutdown-a-t60,电脑中存储的数据都是数字,所以可以使用vs开发工具查看命令存储内存数据。首先编写如下程序:#includeintmain(){charstr1[]="shutdown";charstr2[]="-s";charstr3[]="-t";charstr4[]="60";}将指令分成4个模块,进入断点测试,打开内存窗口,如下图:将鼠标放在变量上,然后转到内存1的地址栏进行查询:关键步骤是这里,点击内存中的数据,将数据调整为4字节,改为无符号显示,如下图:这就是我们要的指令的整数表示。其他指令同理操作,最终可得到1953851507、1853321060、7548192、7613728、3159584。当然,如果你有兴趣,也可以用浮点数来表示。