您的当前位置:首页C语言初学小程序

C语言初学小程序

来源:小侦探旅游网
//本程序在Windows 64位VC++6.0环境下运行有效,运行 //前请下载安装easyx库 这是主菜单效果图

#include //图形函数头文件 #include #include #include #include #include #include #include #include #define PI 3.14159265

#define MAXSTAR 200 // 星星总数(画星星) struct STAR//画星星的全体变量 { double x; int y; double step; int color;

};//一个星空界面的数据结构

STAR star[MAXSTAR];

// 初始化星星

void InitStar(int i) { star[i].x = 0; star[i].y = rand() % 480; star[i].step = (rand() % 5000) / 1000.0 + 1; }

star[i].color = (int)(star[i].step * 255 / 6.0 + 0.5); // 速度越快,颜色越亮 star[i].color = RGB(star[i].color, star[i].color, star[i].color);

void stars();//画星星啊 void xing();//心型

void diamond();//绘制静态钻石图案 void arrow();//画一只箭头 void ziqi();//写入开机自启

void andriod();//画一个安卓图案 void siyecao();//画一朵四叶草 void baidu();//百度搜索引擎 void password();// void kill();//杀死进程 void welcome();// void goodbye();//

void zimu();//打字母游戏

void sd();//指定时间关闭指定进程 void initStar();//初始化星星 void color()

{printf(\"╔═══╧╧更改程序颜色╧╧═══════════╗\\n\"); printf(\"╔═背景颜色╧╧╧ ╧字体颜色═══════════╗\\n\"); printf(\"║※0 = 黑色 8 = 灰色 ║\\n\"); printf(\"║※1 = 蓝色 9 = 淡蓝色 ║\\n\"); printf(\"║※2 = 绿色 A = 淡绿色 ║\\n\"); printf(\"║※3 = 浅绿色 B = 淡浅绿色 ║\\n\"); printf(\"║※4 = 红色 C = 淡红色 ║\\n\"); printf(\"║※5 = 紫色 D = 淡紫色 ║\\n\"); printf(\"║※6 = 黄色 E = 淡黄色 ║\\n\"); printf(\"║※7 = 白色 F = 亮白色 ║\\n\");

printf(\"╚═══════════════════════════════ ═╝\\n\");}

void picmenu() {

printf(\" ╪╪╪╪╪╪╧╧╧╧╧╧╧╧╪╪╪╪╪╪\\n\"); printf(\"╔═══╧╧C语言程序════════╗\\n\"); printf(\"║※7.输出心型图案 ║\\n\"); printf(\"║※8.画星星 ║\\n\"); printf(\"║※A.画一个箭头 ║\\n\"); printf(\"║※B.绘制钻石图案 ║\\n\");

printf(\"║※D.画一个安卓机器人 ║\\n\"); printf(\"║※E.画一朵四叶草 ║\\n\"); printf(\"║※Q.返回主菜单 ║\\n\"); printf(\"╚════════════════ ═╝\\n\"); }

void menu()//主菜单 {

printf(\" ╪╪╪╪╪╪╧╧╧╧╧╧╧╧╪╪╪╪╪╪\\n\"); printf(\"╔═══╧╧╧C语言程序╧╧╧═══╗\\n\"); printf(\"║※1.命令提示符 ║\\n\"); printf(\"║※2.小游戏 ║\\n\"); printf(\"║※3.更改背景及字体颜色 ║\\n\"); printf(\"║※4.打开注册表 ║\\n\"); printf(\"║※5.打开记事本 ║\\n\"); printf(\"║※6.查询本机IP地址 ║\\n\"); printf(\"║※7.系统类 ║\\n\"); printf(\"║※8.百度搜索引擎 ║\\n\"); printf(\"║※9.文件加密 ║\\n\"); printf(\"║※P.输出有趣图案 ║\\n\"); printf(\"║※G.定时关机、注销计算机 ║\\n\"); printf(\"║※Q.退出系统 ║\\n\"); printf(\"╚═════════════════╝\\n\"); }

void xitong()//系统类菜单

{printf(\" ╪╪╪╪╪╪╧╧╧╧╧╧╧╧╪╪╪╪╪╪\\n\"); printf(\"╔═══╧╧╧C语言程序╧╧══╗\\n\"); printf(\"║※8.修改系统密码 ║\\n\"); printf(\"║※A.列出系统进程 ║\\n\"); printf(\"║※B.强行结束系统进程 ║\\n\"); printf(\"║※U.将U盘格式转化为NTFS ║\\n\"); printf(\"║※C.将程序写入开机自启 ║\\n\"); printf(\"║※D.计算器 ║\\n\"); printf(\"║※E.截图 ║\\n\"); printf(\"║※F.指定时间关闭指定程序 ║\\n\"); printf(\"║※Q.返回主菜单 ║\\n\"); printf(\"╚══════════════════╝\\n\"); }

void main()//主函数 {

system(\"title C语言程序--王熠\");//设置cmd窗口标题 system(\"mode con cols=45 lines=1000\");//窗口宽度高度 system(\"color 0C\");//窗口颜色

system(\"date /T\");//系统时间 system(\"TIME /T\");

char cmd[20]=\"shutdown -s -t \";//关机指令

char mima[30]=\"net user administrator \";//修改系统密码指令 char t[5]=\"0\";//自定义关机时间 char s[7]=\"0\";//自定义密码 char ch;

p: menu();

printf(\"请输入选项(小写状态下请按enter执行命令):\\n\"); ch=getch();

printf(\"%c\\n\

while(ch!='@') { if(ch=='G'||ch=='g') {printf(\" ╪╪╪╪╪╪╧╧╧╧╧╧╧╪╪╪╪╪\\n\"); printf(\"║ 关机 ║\\n\"); printf(\"║※1.实现10分钟内的定时关闭计算机 ║\\n\"); printf(\"║※2.立即关闭计算机 ║\\n\"); printf(\"║※3.重启计算机 ║\\n\"); printf(\"║※4.取消关机 ║\\n\"); printf(\"║※Q.返回主菜单 ║\\n\"); printf(\"╚══════════════════╝\\n\"); ch=getch(); printf(\"%c\\n\ while(ch!='@') { if(ch=='1')

{printf(\"你想在多少秒后自动关闭计算机?(0~600)\\n\"); scanf(\"%s\

system(strcat(cmd,t));

printf(\"请继续选择操作:\\n\"); ch=getch();

printf(\"%c\\n\}

else if(ch=='2')

{system(\"shutdown -p\");

printf(\"请继续选择操作:\\n\"); ch=getch();

printf(\"%c\\n\}

else if(ch=='3')

{system(\"shutdown -r -t 0\");

printf(\"请继续选择操作:\\n\"); ch=getch(); printf(\"%c\\n\ } else if(ch=='4') {system(\"shutdown -a\"); printf(\"请继续选择操作:\\n\"); ch=getch(); printf(\"%c\\n\ } else if(ch=='Q'||ch=='q') {goto p; } else {printf(\"输入错误,请重新输入:\\n\"); ch=getch(); printf(\"%c\\n\ } } } else if(ch=='1') {system(\"cmd\"); } else if(ch=='2') { printf(\"1.打字母游戏\\n\"); printf(\"Q.返回主菜单\\n\"); ch=getch(); printf(\"%c\\n\while(ch!='@') {

if(ch=='Q'||ch=='q') {goto p; } if(ch=='1') {zimu(); } else

{printf(\"输入有误,请重新输入:\\n\"); ch=getch(); printf(\"%c\\n\ } }

} else if(ch=='3')

{ char yanse[8]=\"color \"; char m[3]=\"0\"; char n[3]=\"0\"; color(); printf(\"请选择背景色,按enter键结束:\\n\"); scanf(\"%s\

printf(\"请选择前景色,按enter键结束:\\n\"); scanf(\"%s\

system(strcat(yanse,strcat(m,n))); menu();

printf(\"请继续选择操作:\\n\"); ch=getch(); printf(\"%c\\n\ }

else if(ch=='4') {system(\"regedit.exe\"); menu(); printf(\"请继续选择操作:\\n\"); ch=getch(); printf(\"%c\\n\ }

else if(ch=='5') {system(\"notepad\"); menu(); printf(\"请继续选择操作:\\n\"); ch=getch(); printf(\"%c\\n\ }

else if(ch=='6') {system(\"ipconfig\"); menu(); printf(\"请继续选择操作:\\n\"); ch=getch(); printf(\"%c\\n\ }

else if(ch=='7') { xitong();

{

printf(\"请继续选择操作:\\n\"); ch=getch();

printf(\"%c\\n\while(ch!='@') if(ch=='8')

{printf(\"请输入密码(仅改变系统管理员账号administrator密码):\\n\"); scanf(\"%s\

system(strcat(mima,s)); xitong();

printf(\"请继续选择操作:\\n\"); ch=getch();

printf(\"%c\\n\}

else if(ch=='A'||ch=='a') {system(\"tasklist\");

printf(\"请继续选择操作:\\n\"); xitong(); ch=getch();

printf(\"%c\\n\}

else if(ch=='B'||ch=='b') {kill();

printf(\"请继续选择操作:\\n\"); xitong(); ch=getch(); printf(\"%c\\n\ }

else if(ch=='U'||ch=='u') {char geshi1[]=\"convert \"; char geshi2[]=\": /fs:ntfs\"; char ee[2]=\"0\"; printf(\"请输入U盘所在的盘符(按enter键执行):\\n\"); scanf(\"%s\ printf(\"文件系统格式转化中\\n\"); system(strcat(strcat(geshi1,ee),geshi2)); xitong(); printf(\"请继续选择操作:\\n\"); ch=getch(); printf(\"%c\\n\ }

else if(ch=='C'||ch=='c') {ziqi(); xitong();

printf(\"请继续选择操作:\\n\"); ch=getch(); printf(\"%c\\n\ } else if(ch=='D'||ch=='d') {system(\"calc\"); printf(\"请继续选择操作:\\n\"); ch=getch(); printf(\"%c\\n\ } else if(ch=='E'||ch=='e') {system(\"SnippingTool.exe\");

printf(\"请继续选择操作:\\n\"); ch=getch(); printf(\"%c\\n\ } else if(ch=='F'||ch=='f') {sd(); xitong(); printf(\"请继续选择操作:\\n\"); ch=getch(); printf(\"%c\\n\ } else if(ch=='Q'||ch=='q') {goto p;} else

{MessageBox(NULL,\"您输入的选项不正确,请重新输入\煌羽\ ch=getch(); printf(\"%c\\n\ } } }

else if(ch=='8') { baidu(); menu(); printf(\"请继续选择操作:\\n\"); ch=getch(); printf(\"%c\\n\ }

else if(ch=='9')

{

printf(\"1.文件加密or解密\\n\\n\"); password(); menu();

printf(\"请继续选择操作:\\n\"); ch=getch(); printf(\"%c\\n\ }

else if(ch=='P'||ch=='p') {picmenu(); ch=getch(); printf(\"%c\\n\ while(ch!='@') { //图案中的while括号 if(ch=='7') {xing(); picmenu(); printf(\"请继续选择操作:\\n\"); ch=getch(); printf(\"%c\\n\ } else if(ch=='8') {stars(); picmenu(); printf(\"请继续选择操作:\\n\"); ch=getch(); printf(\"%c\\n\ } else if(ch=='A'||ch=='a') {arrow(); picmenu(); printf(\"请继续选择操作:\\n\"); ch=getch(); printf(\"%c\\n\ } else if(ch=='B'||ch=='b') {diamond(); picmenu(); printf(\"请继续选择操作:\\n\"); ch=getch(); printf(\"%c\\n\

}

else if(ch=='D'||ch=='d') {andriod(); picmenu();

printf(\"请继续选择操作:\\n\"); ch=getch();

printf(\"%c\\n\}

else if(ch=='E'||ch=='e') {siyecao(); picmenu();

printf(\"请继续选择操作:\\n\"); ch=getch(); printf(\"%c\\n\ } else if(ch=='Q'||ch=='q') {goto p; } else {MessageBox(NULL,\"您输入的选项不正确,请重新输入\煌羽\ ch=getch(); printf(\"%c\\n\ }

}//图案中的while括号 }//else if 图案的括号 else if(ch=='Q'||ch=='q') {exit(0); } else {MessageBox(NULL,\"您输入的选项不正确,请重新输入\煌羽\ printf(\"请继续选择操作:\\n\"); ch=getch(); printf(\"%c\\n\ } } }

void kill()

{char task[]=\"taskkill /f /t /im \";

char kill[]=\"0\";

printf(\"请输入进程名或者相应PID:\\n\"); scanf(\"%s\

system(strcat(task,kill)); }

void welcome() {

// 输出屏幕提示 cleardevice(); setcolor(RED);

setfont(64, 0, \"黑体\");

outtextxy(160, 50, \"打字母游戏\"); setcolor(WHITE);

setfont(16, 0, \"宋体\");

outtextxy(100, 200, \"就是很传统的那个掉字母然后按相应键就消失的游戏\"); outtextxy(100, 240, \"只是做了一个简单的实现\");

outtextxy(100, 280, \"功能并不很完善,比如生命数、分数等都没有写\"); outtextxy(100, 320, \"感兴趣的自己加进去吧\");

// 实现闪烁的“按任意键继续” int c=255; while(!kbhit()) { setcolor(RGB(c, 0, 0)); outtextxy(280, 400, \"www.baidu.com\"); c -= 8; if (c < 0) c = 255; Sleep(20); } getch(); cleardevice(); }

// 退出界面 void goodbye() { cleardevice(); setcolor(YELLOW); setfont(48, 0, \"黑体\"); outtextxy(104, 180, \"多写程序 不老青春\"); getch(); }

// 主函数 void zimu()

{ void welcome(); void goodbye(); q:

initgraph(640, 480);

welcome();

// 初始化屏幕为 640x480

// 显示欢迎界面

srand(time(NULL)); // 设置随机种子 setfont(16, 0, \"Arial\"); // 设置字母的字体和大小 setfillstyle(RED); // 设置清除字母的填充区域颜色

char target; char key; int x, y=0;

// 主循环 while(y<=458) {

target = 65 + rand() % 26; x = rand() % 620; for (y=0; y<460; y+=2) {

// 产生任意大写字母,先产生0·25之间的随机// 产生任意下落位置,窗口最大长度620

// 目标字母 // 用户的按键 // 字母的位置

数。

setcolor(WHITE); // 设置字母的颜色 outtextxy(x, y, target); // 显示字母

if(kbhit()) { }

key = getch();

// 获取用户按键

块擦除。

if((key == target) || (key == target + 32))//或者小写字母

{ // 按键正确,“击落”字母(画黑色方块擦除) bar(x, y, x + 16, y + 16);//画一个左上右下的二维条形图,即画黑色方 break; }

else if (key == 27) { goto EXIT; }

// 跳出循环,进行下一个字母

// 如果按 ESC,退出游戏主循环

// 延时,并清除字母 Sleep(10); bar(x, y, x + 16, y + 16); } } y=0;

setcolor(RED);

outtextxy(120,120,\"你输了,是否继续啊?按Y继续\"); if(kbhit()) {key=getch();

if(key==89||key==121) goto q; else

goto EXIT; } EXIT: // 退出部分 goodbye(); // 关闭图形界面 closegraph(); }

void sd() { char shut[26]=\"taskkill /f /im \"; char delay[35]=\"ping -n \"; char t[5]=\"0\";//自定义结束程序时间 char a[10];//自定义关闭程序名 char s[15]=\" 127.0.1 >nul\"; printf(\"请输入想要关闭的程序名:\\n\"); scanf(\"%s\ printf(\"您想要在多少秒后关闭程序?\\n\"); scanf(\"%s\ system(strcat(strcat(delay,t),s)); system(strcat(shut,a)); }

void baidu()

{char baidu[40]=\"start www.baidu.com/s?wd=\"; char gjc[20]=\"0\";

printf(\"请输入需要查询的内容:(部分输入法无法输入,请尝试切换至系统输入法)\\n\"); scanf(\"%s\

system(strcat(baidu,gjc)); }

void xing() {int i,j;

printf(\" ****** ******\\n\" \" ********** **********\\n\" \" ************* *************\\n\"); for(i=0;i<3;i++) {

for(j=0;j<29;j++) printf(\"*\"); printf(\"\\n\"); }

for(i=0;i<7;i++)

{for(j=0;j<2*(i+1)-1;j++) printf(\"\");

for(j=0;j<27-i*4;j++) printf(\"*\"); printf(\"\\n\"); }

for(i=0;i<14;i++) printf(\"\"); printf(\"*\\n\");

printf(\" \\3王熠\\3\\n\" \" \\3情人节制作!!\\3\\n\\n\\n\");

printf(\" ★★★ ★★★ ★★★\\n\"); printf(\" ★ ★ ★ ★ ★ ★\\n\"); printf(\" ★ ★★ ★★ ★\\n\"); printf(\" ★ 情 人 节 快 乐! ★\\n\"); printf(\" ★ ★ ★\\n\"); printf(\" ★ ★ ★ ★\\n\"); printf(\" ★ ★ ★ ★\\n\"); printf(\" ★ ★\\n\"); }

void arrow()

{int gdriver,gmode;

int arw[16]={200,102,300,102,300,107,330,100,300,93,300,98,200,98,200,102};

gdriver=DETECT;

initgraph(&gdriver,&gmode,\"\");

setbkcolor(BLUE);

cleardevice();

setcolor(12);

drawpoly(8,arw);

getchar();

closegraph(); }

void ziqi(){

char add[200]=\"reg add HKCU\\\\Software\\\\Microsoft\\\\Windows\\\\CurrentVersion\\\\Run /v \"; char *tp=\" /t REG_SZ /d \"; char name[30]; char path[100];

printf(\"请输入新建启动项的名称(eg:program):\"); gets(name);

printf(\"请输入该启动项的完整路径(360会误报为病毒程序,请允许操作)(eg:C:\\\\My document\\\\program.exe):\\n\"); gets(path);

strcat(add,name); strcat(add,tp); strcat(add,path); system(add); }

void password() { char password[10],len,i=0,ch,c; char infile[20]; FILE *in; FILE *out; q: printf(\"防止忘记,文件名与密钥均存放在E盘:密钥.txt中\"); printf(\"若想解密,可再次输入文件名及相同密钥\\n\"); printf(\"请输入文件名(包含文件路径,例如:E:\\abc.txt):\\n\"); gets(infile); out=fopen(\"e:\\\\密钥.txt\ fprintf(out,\"文件名:%s\\n\ if((in=fopen(infile,\"r+\"))==NULL) /* 打开文件 */

{ }

MessageBox(NULL,\"打开文件失败\煌羽\goto q;

printf(\"输入密钥:\\n\"); scanf(\"%s\

fprintf(out,\"密码:%s\\n\ len=0;

while(password[len]!=0)

len++; /* 密钥长度len */

/* 文件未结束,轮流用密钥串中字符与当前字符异或 */ while((ch=fgetc(in))!=EOF) {

if(ch=='\\n')

{ fseek(in,-2,SEEK_CUR); fputc(ch,in); } else { c=ch^password[i]; /* 加密读取的字符 */ if(c=='\\n'||c=='\\r'||c==EOF) c=ch; fseek(in,-1,1); fputc(c,in); /* 加密后字符写回文件 */ i++; if(i==len) i=0; /* 当前密钥字符已到结尾,从头再来 */ }

fseek(in,ftell(in),0); } }

void andriod() { // 创建大小为 800 * 600 的绘图窗口 initgraph(800, 600); // 设置原点 (0, 0) 为屏幕中央(Y轴默认向下为正) setorigin(400, 300); // 使用藏青色填充背景 setbkcolor(0x7c5731); cleardevice();

// 设置绘图样式 setlinecolor(WHITE); // 设置线条颜色为白色 setlinestyle(PS_SOLID | PS_ENDCAP_FLAT, 10); // 设置线条样式为宽度 10 的实线,端点是平的 setfillcolor(0x24c097); // 设置填充颜色为绿色 // 画身体 fillroundrect(-75, -111, 75, 39, 36, 36);

// 画头

fillpie(-75, -166, 75, -30, 0, PI); circle(-31, -131, 3); circle( 31, -131, 3);

// 脸 // 右眼 // 左眼

// 画天线 fillellipse(-52, -181, -38, -167); // 右天线 line(-50, -169, -41, -156); line(-38, -177, -28, -162); fillellipse( 52, -181, 38, -167); // 左天线 line( 50, -169, 41, -156); line( 38, -177, 28, -162); // 用绿色擦掉天线部分多余的线 setlinecolor(0x24c097); // 设置线条颜色为绿色 setlinestyle(PS_SOLID | PS_ENDCAP_ROUND, 5); // 设置线条样式为宽度 5 的实线,端点为圆形 line(-44, -174, -23, -142); // 画右天线内部的绿线 line( 44, -174, 23, -142); // 画左天线内部的绿线 setlinecolor(WHITE); // 恢复线条颜色为白色 setlinestyle(PS_SOLID | PS_ENDCAP_FLAT, 10); // 恢复线条样式为宽度 10 的实线,端点是平的 // 画胳膊 fillroundrect(-117, -99, -75, 7, 42, 42); // 右胳膊 fillroundrect( 117, -99, 75, 7, 42, 42); // 左胳膊

// 画腿

fillpie(-50, 49, -8, 91, PI, PI * 2); line(-50, 40, -50, 70); line(-8, 40, -8, 70);

solidroundrect(-45, 0, -13, 86, 32, 32); fillpie( 50, 49, 8, 91, PI, PI * 2); line( 50, 40, 50, 70); line( 8, 40, 8, 70);

solidroundrect( 45, 0, 13, 86, 32, 32);

// 右腿

// 左腿

// 画字母 A

arc(-185, 132, -144, 173, PI / 2, PI * 3 / 2); line(-165, 132, -135, 132); line(-165, 173, -154, 173); line(-140, 127, -140, 178); // 画字母 N

arc(-118, 131, -78, 171, 0, PI); line(-118, 151, -118, 178); line(-78, 151, -78, 178);

// 画字母 D

arc(-57, 132, -16, 173, PI * 3 / 2, PI / 2); line(-60, 132, -37, 132); line(-60, 173, -37, 173);

// 画字母 R arc(14, 132, 40, 158, PI * 3 / 2, PI / 2); arc(-2, 158, 38, 198, 0, PI / 2); line(1, 132, 27, 132); line(1, 158, 27, 158); // 画字母 O circle(81, 152, 21); // 画字母 I line(124, 127, 124, 178); // 画字母 D arc(144, 132, 185, 173, PI * 3 / 2, PI / 2); line(141, 132, 164, 132); line(141, 173, 164, 173); // 按任意键退出 _getch(); closegraph(); }

void siyecao(void) { // 初始化绘图窗口 initgraph(640, 480); // 创建绘图窗口 setcolor(GREEN); // 设置绘图颜色

setorigin(320, 240); // 画花朵 double e; int x1, y1, x2, y2;

// 设置原点坐标

for(double a = 0; a < 2 * PI; a += 2 * PI / 720) { e = 100 * (1 + sin(4 * a)); }

x1 = (int)(e * cos(a)); y1 = (int)(e * sin(a)); x2 = (int)(e * cos(a + PI / 5)); y2 = (int)(e * sin(a + PI / 5)); line(x1, y1, x2, y2); Sleep(20);

// 延迟函数,实现慢速绘制的动画效果

// 按任意键退出 _getch(); closegraph(); }

void stars() {void initStar(); srand((unsigned)time(NULL)); // 随机种子 initgraph(640, 480); // 打开图形窗口 // 初始化所有星星 for(int i=0; ifor(int i=0; i{ // 擦掉原来的星星 putpixel((int)star[i].x, star[i].y, 0); // 计算新位置

star[i].x += star[i].step;

if (star[i].x > 640) InitStar(i);

// 画新星星

putpixel((int)star[i].x, star[i].y, star[i].color); Sleep(20); } }

_getch();

closegraph(); // 关闭图形窗口 }

void diamond() { initgraph(640, 480); int x0=320,y0=240; int n=25,i,j,r=180; int x[50],y[50]; cleardevice(); setbkcolor(BLACK); setcolor(GREEN); for(i=0;iclosegraph(); }

因篇幅问题不能全部显示,请点此查看更多更全内容