C语言小功能

//C语言  时钟
#include 
#include  

int main()
{

	SYSTEMTIME time1; 

	while(1)
	{
	GetLocalTime(&time1);

	printf("\t\t**********************************************");
	printf("\n\n\n\t\t\t当前时间:%d 时 %d 分 %d 秒\n\n\n",time1.wHour,time1.wMinute,time1.wSecond);
	printf("\t\t**********************************************");
	Sleep(1000);
	system("cls");
	}
	getchar();
	return 0; 

}



//C语言实现游戏-飞机大战

#include 
#include 
#include 
#include 
#include 
#define N 35  //宏定义,N是宏参,35是宏值


int str[22][N]={0},width=24,plane=10;//N是变量 width是界面宽度 plane是飞机列变量
int density=30;//敌机的密度
void show(int a[][N])//显示我们能看到的飞机及分隔线
{
	system("cls");
	int i,j;//遍历二维数组的变量
	for(i=0;i<22;i++)//行的遍历
	{
		a[i][width-1]=4;
		for(j=0;j		{
			if(a[i][j]==0)printf(" ");  //打印出空白
			if(a[i][j]==1)printf("\5");//我机的符号
			if(a[i][j]==2)printf(".");//子弹的符号
			if(a[i][j]==3)printf("\4");//敌机的符号
			if(a[i][j]==4)printf("|");//分隔线
		}
		printf("\n");
	}
	Sleep(100);
}
void move_bul(int a[][N])//子弹移动功能
{
	int i,j;//循环变量
	for(i=0;i<22;i++)//行的遍历
	{
		for(j=0;j		{
			if(i==0&&a[i][j]==2)//当行为0并且是子弹时,清空
				a[i][j]=0;
			if(a[i][j]==2)
			{
				//if(a[i-1][j]==3);//碰到了敌机  
				a[i][j]=0,a[i-1][j]=2;//子弹在1-19之前要不断的清空和-1
			}
		}
	}
}
void move_plane(int a[][N])//敌机的移动功能
{
	int i,j;
	for(i=21;i>=0;i--)//防止溢出
	{
		for(j=0;j		{
			if(i==21&&a[i][j]==3)
				a[i][j]=0;
			if(a[i][j]==3)
				a[i][j]=0,a[i+1][j]=3;
		}
	}
}
int main()
{
	int i,j=0;//循环变量
	str[21][plane]=1;
	str[0][10]=3;
	while(1)
	{
		if(kbhit())//是否按下键盘
		switch(getch())
		{
			case 'a':
			case 'A':
			if(plane>0)str[21][plane]=0,str[21][--plane]=1;
				break;
			case 'd':
			case 'D':
			if(plane				break;
			case 'w':
			case 'W':
			str[20][plane]=2;
				break;
		}
		if(++j%density==0)//当j值为30时,条件为真
		{
			j=0;//j值回到0值
			srand(time(NULL));//随机种子,每次执行的结果都不一样
			str[0][rand()%width]=3;//0行中的0-23的随机列数
		}
		move_bul(str);
		move_plane(str);
		show(str);
	}
	return 0;
}



//C语言模拟登陆程序
#include 
#include 	//C中字符串处理相关函数的头文件
#include 
#include 

#define LEN		20

int main()
{
	char password[LEN]; 		//用于存放密码
	char confirmation[LEN];		//用于保存确认密码
	int tryAgain = 0;				//重试的次数
	
	//1.创建管理系统
	do
	{
		printf("----------创建密码---------\n");
		printf("请输入你的管理密码:");
		scanf("%s", password);
		printf("请确认你的管理密码:");
		scanf("%s", confirmation);
	}while(strcmp(password, confirmation));
	/*
		strcmp() string compare字符串比较函数,如果第一字符串比第二个字符串大返回1,
		如果第一字符串比第二个字符串小返回-1,两个字符串相等返回0
	*/
	printf("密码设置成功!你的密码为%s\n", password);
	
	printf("按任意键开始登录系统.....\n");
	getch();	//阻塞函数,可以让程序停留在此,直到我们按下键盘上的某个按键
	system("cls");	//清屏
	
	//2.登录系统
	printf("----------登录系统---------\n");
	printf("请输入密码:");
	while(scanf("%s", confirmation), strcmp(password, confirmation))
	{
		tryAgain++;	//累加密码重试的次数
		//密码重试的次数限制在三次以内
		if(tryAgain < 3)
			printf("错误%d次!请重新输入:", tryAgain);
		else
			break;	//输入密码次数大于等于三次,退出循环
	}
	
	//3.输出结果
	system("cls");
	//两种情况 :1输入了三次错误的密码 2输入了正确的密码
	printf("----------输出结果---------\n");
	if(tryAgain >= 3)
	{		
		printf("对不起,3次密码错误,系统退出!\n");
		exit(-1); //退出程序
	}
	else
	{
		printf("欢迎你,管理员!\n");
	}
	
	
	return 0;
}


//C语言实现打地鼠
#include 
#include 
#include 
#include 

HANDLE g_hout; //标准输出句柄
int g_map[4][4];//游戏区域,其中若值为1表示地鼠
int g_score;	//分数

//画出我们地鼠活动的区域
void DrawMap()
{
	int i, j;
	COORD pos = {4, 3}; //地图的左上角的坐标
	//分四行打印,每行打印4个地鼠洞
	for(i = 0; i < 4; ++i)
	{
		SetConsoleCursorPosition(g_hout, pos);
		for(j = 0; j < 4; ++j)
		{
			printf("○");
		}
		++pos.Y;
	}
}
//显示右侧的游戏信息
void ShowInfo()
{
	COORD pos = {15, 3};
	SetConsoleCursorPosition(g_hout, pos);
	printf("打地鼠游戏-------------------");
	++pos.Y;
	SetConsoleCursorPosition(g_hout, pos);
	printf("Score: %d", g_score);
}
//生成指定数量的地鼠
void CreateMouse(int count)
{
	int n = 0, r, c;
	COORD pos;
	do
	{
		r = rand() % 4;//保证获取的值介于0~3之间
		c = rand() % 4;
		if(!g_map[r][c])
		{
			g_map[r][c] = 1;//将其设为地鼠
			//打印出这只地鼠
			//根据数组的下标计算出对应的坐标值
			pos.X = 4 + c * 2;
			pos.Y = 3 + r;
			SetConsoleCursorPosition(g_hout, pos);
			printf("☆");//打印出地鼠
			++n;//把产生的地鼠的数量加1
		}
	}while(n < count);
}
//打地鼠,参数为鼠标点击时的坐标
void WhackMouse(COORD pos)
{
	int r, c;
	DWORD len;
	//根据坐标值计算对应的数组下标
	if (pos.X % 2)
		--pos.X;
	r = pos.Y - 3;
	c = (pos.X - 4) / 2;
	//判断数组的下标值是否合法
	if (r < 0 || r >= 4 || c < 0 || c >= 4)
		return;
	//下标值合法
//	EnterCriticalSection(&cs);		//进入临界区
	//再判断该位置是否是地鼠
	if (g_map[r][c])
	{
		//是地鼠,将其显示为红色
		FillConsoleOutputAttribute(g_hout, FOREGROUND_RED | FOREGROUND_INTENSITY, 2, pos, &len);
		g_map[r][c] = 0;	//将其设为不是地鼠
		Sleep(200);			//睡眠一会让红色的地鼠停留一会
		g_score += 100;	//分数增加
		ShowInfo();			//显示分数
	}
//	LeaveCriticalSection(&cs);	//离开临界区
}

//线程处理函数
LRESULT WINAPI ThreadProc(LPVOID lpParam)
{
	int count;//下一次准备出现多少只地鼠
	while(1)
	{
		count = rand() % 8 + 1;//随机得出地鼠的数量(1~8只)
		CreateMouse(count);//产生一批地鼠
		Sleep(1000);//睡眠1秒
		memset(g_map, 0, sizeof(g_map));
		DrawMap();//重新画出老鼠洞
		Sleep(1000);//睡眠1秒
	}	
}

int main()
{
	COORD pos = {0, 20};
	HANDLE hThread;
	HANDLE hin;
	INPUT_RECORD ir;//输入事件
	DWORD inLen; //获取输入事件的记录数
	g_hout = GetStdHandle(STD_OUTPUT_HANDLE);
	hin = GetStdHandle(STD_INPUT_HANDLE);
	srand((unsigned)time(0));//初始化随机种子
	DrawMap();
	ShowInfo();
//	CreateMouse(8);
	hThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)ThreadProc, NULL, 0, NULL);
	CloseHandle(hThread);//
	
	while(1)
	{
		ReadConsoleInput(hin, &ir, 1, &inLen);//获取输入事件记录
		//如果是鼠标事件并且是鼠标左键按下的状态
		if(ir.EventType == MOUSE_EVENT &&
			ir.Event.MouseEvent.dwButtonState == FROM_LEFT_1ST_BUTTON_PRESSED)
		{
			WhackMouse(ir.Event.MouseEvent.dwMousePosition);
		}
		else if(ir.EventType == KEY_EVENT)//如果是键盘事件
		{
			if(ir.Event.KeyEvent.wVirtualKeyCode == 'q' ||
				ir.Event.KeyEvent.wVirtualKeyCode == 'Q')
				break;
		}
		
		
		
		
		
		
	}
	
//	SetConsoleCursorPosition(g_hout, pos);
//	system("pause");
	
	return 0;
}



//C语言实现 推相子   wasd前后左右   #墙   *箱子   !箱子目标位置   $箱子已到目标位置 
#include      
#include     
#include      
int i,j; 
void draw_map(int map[10][12]); //声明画图函数
int main()
{
	char input;   
	int count=0;   //定义记分变量
	/*下面定义一个二维数组,其中的元素是不同图像的ID号,在后面的函数中将讲解不同数字分别代表的图像元素*/
	int map[10][12] = {    
		{2,2,2,2,2,1,1,1,1,1,2,2},
		{1,1,1,1,2,1,0,0,0,1,1,2},
		{1,0,0,1,1,1,0,1,0,0,1,2},
		{1,0,4,3,3,3,3,3,1,0,1,1},
		{1,0,0,1,1,3,3,3,4,0,0,1},
		{1,0,0,0,0,4,1,1,4,1,0,1},
		{1,0,4,1,4,0,0,0,4,0,0,1},
		{1,1,0,6,0,1,1,1,4,1,0,1},
		{2,1,1,1,1,1,2,1,0,0,0,1},
		{2,2,2,2,2,2,2,1,1,1,1,1}
	};
	while (1)   //死循环,等待用户命令
	{
		system("CLS");
		for (i=0;i<12;i++)
		{
			printf("%d",i);
		}
		printf("\n");
		/*for (i=1;i<10;i++)
		{
			printf("%d\n",i);
		}*/
		printf("\n");
		draw_map(map);
		printf("当前得分:%d\n",count);
		//找初始位置
		for (i=0;i<10;i++)
		{
			for (j=0;j<12;j++)
			{
				if (map[i][j]==6||map[i][j]==9)
					break;
			}
			if (map[i][j]==6||map[i][j]==9)
				break;
		}
		printf("您的当前坐标(%d,%d)",i,j);        
		input = getch();   //用getch()函数无需回车确认地获取用户输入,用于控制行走方向。
		switch (input)
		{
		case 'w':
			//如果人前面是空地。  //0代表空地  6代表人  //3代表目的地
			if(map[i-1][j]==0)
			{
				map[i-1][j]=6+0; //人往前走一步,ID为人的ID()加上空地的ID()。
				if(map[i][j]==9) //如果当前人站的位置为目的地,则ID为(即人的ID()加上目的地ID())。
					map[i][j]=3; //将人往前走一步后原地的ID修改为空地ID()。
				else
					map[i][j]=0;    //否则原地ID修改为空地ID 。      
			}
			//如果人前面是目的地。
			else if((map[i-1][j]==3)||(map[i-1][j]==9))
			{
				map[i-1][j]=6+3; //人往前走一步,ID为人ID+目的地ID=9。
				if(map[i][j]==9) //如果原地也是目的地(ID为)。
					map[i][j]=3; //人走后把原地ID修改回目的地ID。
				else
					map[i][j]=0; //否则原地ID修改为为空地ID
			}
			//如果人前面是箱子。//4代表箱子   //7箱子进入目的地
			else if(map[i-1][j]==4)
			{
				//如果人前面是箱子,而箱子前面是空地。
				if (map[i-2][j]==0)
				{ 
					map[i-2][j]=4; //人推箱子往前走一步,把空地ID修改为箱子ID()
					//下面是对箱子原地进行判断
					if(map[i-1][j]==7) //如果箱子原地为目的地。
						map[i-1][j]=9; //人站在箱子的原地(目的地)时该地ID应该为人的ID+目的地ID=9。
					else
						map[i-1][j]=6; //否则,人站在了原来的空地上,ID应该为+0=6。
					//下面是对人原地进行判断
					if(map[i][j]==9) //如果之前是目的地。
						map[i][j]=3; //人走了之后修改回目的地ID。
					else
						map[i][j]=0; //否则就是空地。
				}
				//如果人的前面是箱子,而箱子前面是目的地。
				else if (map[i-2][j]==3)
				{ 
					map[i-2][j]=7;   //ID为(目的地ID()+箱子ID()=7),表示已经把箱子推入了目的地。
					count++;
					//下面是对箱子原先位置的判断,同上。
					if(map[i-1][j]==7)
						map[i-1][j]=9;
					else
						map[i-1][j]=6;
					//下面是对人原先位置进行判断,同上。
					if(map[i][j]==9)
						map[i][j]=3;
					else
						map[i][j]=0;
				}
			}
			//如果人前面是已经进入某目的地的箱子(ID=7)。
			else if(map[i-1][j]==7)
			{
				//如果人前面是已经进入某目的地的箱子,而箱子前面是空地。
				if(map[i-2][j]==0)
				{
					count--;
					map[i-2][j]=4;   //把箱子重新推到空地上,ID=箱子ID+空地ID=4。
					map[i-1][j]=9;   //人自然而然的就站在了原先的目的地上了。
					//下面是对人原先地进行判断,方法同上。
					if(map[i][j]==9) 
						map[i][j]=3;
					else
						map[i][j]=0;
				}
				//如果人前面是已经进入某目的地的箱子,而箱子前面是另一目的地。
				if(map[i-2][j]==3)
				{
					map[i-2][j]=7;   //把箱子推入了另一目的地,自然,ID也应是。
					map[i-1][j]=9;   //人站在了目的地上。
					//下面是对人原先站立地进行判断,方法同上。
					if(map[i][j]==9) 
						map[i][j]=3;
					else
						map[i][j]=0;
				}
			}
			break;
		case 's':
			//如果人前面是空地。
			if(map[i+1][j]==0)
			{
				map[i+1][j]=6+0; //人往前走一步,ID为人的ID()加上空地的ID()。
				if(map[i][j]==9) //如果当前人站的位置为目的地,则ID为(即人的ID()加上目的地ID())。
					map[i][j]=3; //将人往前走一步后原地的ID修改为空地ID()。
				else
					map[i][j]=0;    //否则原地ID修改为空地ID 。      
			}
			//如果人前面是目的地。
			else if(map[i+1][j]==3)
			{
				map[i+1][j]=6+3; //人往前走一步,ID为人ID+目的地ID=9。
				if(map[i][j]==9) //如果原地也是目的地(ID为)。
					map[i][j]=3; //人走后把原地ID修改回目的地ID。
				else
					map[i][j]=0; //否则原地ID修改为为空地ID
			}
			//如果人前面是箱子。
			else if(map[i+1][j]==4)
			{
				//如果人前面是箱子,而箱子前面是空地。
				if (map[i+2][j]==0)
				{ 
					map[i+2][j]=4; //人推箱子往前走一步,把空地ID修改为箱子ID()
					//下面是对箱子原地进行判断
					if(map[i+1][j]==7) //如果箱子原地为目的地。
						map[i+1][j]=9; //人站在箱子的原地(目的地)时该地ID应该为人的ID+目的地ID=9。
					else
						map[i+1][j]=6; //否则,人站在了原来的空地上,ID应该为+0=6。
					//下面是对人原地进行判断
					if(map[i][j]==9) //如果之前是目的地。
						map[i][j]=3; //人走了之后修改回目的地ID。
					else
						map[i][j]=0; //否则就是空地。
				}
				//如果人的前面是箱子,而箱子前面是目的地。
				else if (map[i+2][j]==3)
				{ 
					map[i-2][j]=7;   //ID为(目的地ID()+箱子ID()=7),表示已经把箱子推入了目的地。
					count++;
					//下面是对箱子原先位置的判断,同上。
					if(map[i+1][j]==7)
						map[i+1][j]=9;
					else
						map[i+1][j]=6;
					//下面是对人原先位置进行判断,同上。
					if(map[i][j]==9)
						map[i][j]=3;
					else
						map[i][j]=0;
				}
			}
			//如果人前面是已经进入某目的地的箱子(ID=7)。
			else if(map[i+1][j]==7)
			{
				//如果人前面是已经进入某目的地的箱子,而箱子前面是空地。
				if(map[i+2][j]==0)
				{
					count--;
					map[i+2][j]=4;   //把箱子重新推到空地上,ID=箱子ID+空地ID=4。
					map[i+1][j]=9;   //人自然而然的就站在了原先的目的地上了。
					//下面是对人原先地进行判断,方法同上。
					if(map[i][j]==9) 
						map[i][j]=3;
					else
						map[i][j]=0;
				}
				//如果人前面是已经进入某目的地的箱子,而箱子前面是另一目的地。
				if(map[i+2][j]==3)
				{
					map[i+2][j]=7;   //把箱子推入了另一目的地,自然,ID也应是。
					map[i+1][j]=9;   //人站在了目的地上。
					//下面是对人原先站立地进行判断,方法同上。
					if(map[i][j]==9) 
						map[i][j]=3;
					else
						map[i][j]=0;
				}
			}
			break;
		case 'a':
			//如果人前面是空地。
			if(map[i][j-1]==0)
			{
				map[i][j-1]=6+0; //人往前走一步,ID为人的ID()加上空地的ID()。
				if(map[i][j]==9) //如果当前人站的位置为目的地,则ID为(即人的ID()加上目的地ID())。
					map[i][j]=3; //将人往前走一步后原地的ID修改为空地ID()。
				else
					map[i][j]=0;    //否则原地ID修改为空地ID 。      
			}
			//如果人前面是目的地。
			else if(map[i][j-1]==3)
			{
				map[i][j-1]=6+3; //人往前走一步,ID为人ID+目的地ID=9。
				if(map[i][j]==9) //如果原地也是目的地(ID为)。
					map[i][j]=3; //人走后把原地ID修改回目的地ID。
				else
					map[i][j]=0; //否则原地ID修改为为空地ID
			}
			//如果人前面是箱子。
			else if(map[i][j-1]==4)
			{
				//如果人前面是箱子,而箱子前面是空地。
				if (map[i][j-2]==0)
				{ 
					map[i][j-2]=4; //人推箱子往前走一步,把空地ID修改为箱子ID()
					//下面是对箱子原地进行判断
					if(map[i][j-1]==7) //如果箱子原地为目的地。
						map[i][j-1]=9; //人站在箱子的原地(目的地)时该地ID应该为人的ID+目的地ID=9。
					else
						map[i][j-1]=6; //否则,人站在了原来的空地上,ID应该为+0=6。
					//下面是对人原地进行判断
					if(map[i][j]==9) //如果之前是目的地。
						map[i][j]=3; //人走了之后修改回目的地ID。
					else
						map[i][j]=0; //否则就是空地。
				}
				//如果人的前面是箱子,而箱子前面是目的地。
				else if (map[i][j-2]==3)
				{ 
					count++;
					map[i][j-2]=7;   //ID为(目的地ID()+箱子ID()=7),表示已经把箱子推入了目的地。
					//下面是对箱子原先位置的判断,同上。
					if(map[i][j-1]==7)
						map[i][j-1]=9;
					else
						map[i][j-1]=6;
					//下面是对人原先位置进行判断,同上。
					if(map[i][j]==9)
						map[i][j]=3;
					else
						map[i][j]=0;
				}
			}
			//如果人前面是已经进入某目的地的箱子(ID=7)。
			else if(map[i][j-1]==7)
			{
				//如果人前面是已经进入某目的地的箱子,而箱子前面是空地。
				if(map[i][j-2]==0)
				{
					count--;
					map[i][j-2]=4;   //把箱子重新推到空地上,ID=箱子ID+空地ID=4。
					map[i][j-1]=9;   //人自然而然的就站在了原先的目的地上了。
					//下面是对人原先地进行判断,方法同上。
					if(map[i][j]==9) 
						map[i][j]=3;
					else
						map[i][j]=0;
				}
				//如果人前面是已经进入某目的地的箱子,而箱子前面是另一目的地。
				if(map[i][j-2]==3)
				{
					map[i][j-2]=7;   //把箱子推入了另一目的地,自然,ID也应是。
					map[i][j-1]=9;   //人站在了目的地上。
					//下面是对人原先站立地进行判断,方法同上。
					if(map[i][j]==9) 
						map[i][j]=3;
					else
						map[i][j]=0;
				}
			}
			break;
		case 'd':
			//如果人前面是空地。
			if(map[i][j+1]==0)
			{
				map[i][j+1]=6+0; //人往前走一步,ID为人的ID()加上空地的ID()。
				if(map[i][j]==9) //如果当前人站的位置为目的地,则ID为(即人的ID()加上目的地ID())。
					map[i][j]=3; //将人往前走一步后原地的ID修改为空地ID()。
				else
					map[i][j]=0;    //否则原地ID修改为空地ID 。      
			}
			//如果人前面是目的地。
			else if(map[i][j+1]==3)
			{
				map[i][j+1]=6+3; //人往前走一步,ID为人ID+目的地ID=9。
				if(map[i][j]==9) //如果原地也是目的地(ID为)。
					map[i][j]=3; //人走后把原地ID修改回目的地ID。
				else
					map[i][j]=0; //否则原地ID修改为为空地ID
			}
			//如果人前面是箱子。
			else if(map[i][j+1]==4)
			{
				//如果人前面是箱子,而箱子前面是空地。
				if (map[i][j+2]==0)
				{ 
					map[i][j+2]=4; //人推箱子往前走一步,把空地ID修改为箱子ID()
					//下面是对箱子原地进行判断
					if(map[i][j+1]==7) //如果箱子原地为目的地。
						map[i][j+1]=9; //人站在箱子的原地(目的地)时该地ID应该为人的ID+目的地ID=9。
					else
						map[i][j+1]=6; //否则,人站在了原来的空地上,ID应该为+0=6。
					//下面是对人原地进行判断
					if(map[i][j]==9) //如果之前是目的地。
						map[i][j]=3; //人走了之后修改回目的地ID。
					else
						map[i][j]=0; //否则就是空地。
				}
				//如果人的前面是箱子,而箱子前面是目的地。
				else if (map[i][j+2]==3)
				{ 
					count++;
					map[i][j+2]=7;   //ID为(目的地ID()+箱子ID()=7),表示已经把箱子推入了目的地。
					//下面是对箱子原先位置的判断,同上。
					if(map[i][j+1]==7)
						map[i][j+1]=9;
					else
						map[i][j+1]=6;
					//下面是对人原先位置进行判断,同上。
					if(map[i][j]==9)
						map[i][j]=3;
					else
						map[i][j]=0;
				}
			}
			//如果人前面是已经进入某目的地的箱子(ID=7)。
			else if(map[i][j+1]==7)
			{
				//如果人前面是已经进入某目的地的箱子,而箱子前面是空地。
				if(map[i][j+2]==0)
				{
					count--;
					map[i][j+2]=4;   //把箱子重新推到空地上,ID=箱子ID+空地ID=4。
					map[i][j+1]=9;   //人自然而然的就站在了原先的目的地上了。
					//下面是对人原先地进行判断,方法同上。
					if(map[i][j]==9) 
						map[i][j]=3;
					else
						map[i][j]=0;
				}
				//如果人前面是已经进入某目的地的箱子,而箱子前面是另一目的地。
				if(map[i][j+2]==3)
				{
					map[i][j+2]=7;   //把箱子推入了另一目的地,自然,ID也应是。
					map[i][j+1]=9;   //人站在了目的地上。
					//下面是对人原先站立地进行判断,方法同上。
					if(map[i][j]==9) 
						map[i][j]=3;
					else
						map[i][j]=0;
				}
			}
			break;
		}
		if(count==8)   //如果分数达到分
		{
			system("CLS"); //清屏
			draw_map(map); 
			break;    //退出死循环
		}
	}
	printf("\n恭喜你,过关了!!\n"); //过关提示
	return 0;
}
void draw_map(int map[10][12])
{

	for(i=0;i<10;i++)
	{
		for(j=0;j<12;j++)
		{
			switch(map[i][j])
			{
			case 0:
				printf(" "); //数字代表道路
				break;
			case 1:
				printf("#"); //数字代表墙壁
				break;
			case 2:
				printf(" "); //数字是游戏边框的空白部分
				break;
			case 3:
				printf("!"); //数字代表目的地
				break;
			case 4:
				printf("*"); //数字代表箱子
				break;
			case 7:
				printf("$"); //数字代表箱子进入目的地
				break;
			case 6:
				printf("@"); //数字代表人
				break;
			case 9:
				printf("@"); //数字代表人进入目的地
				break;
			}            
		}
		printf("\n");    //分行输出
	}
}


/*******************************
圣诞树
*******************************/
#include
#include 
#include 
#include
#define X 25 //画面长度
int background[20][2 * X] = { 0 };
int SNOW = 30; //雪花密度
/*******************************
画树
*******************************/
void tree()
{
int i, j, x, y;
for (i = 0; i < 3; i++)
{
y = i;
for (j = 0; j < 2 * i + 1; j++)
{
background[y][(X - i) + j] = 1;
}
}
for (i = 0; i < 5; i++)
{
y++;
for (j = 0; j < 2 * (i + 1) + 1; j++)
{
background[y][(X - (i + 1)) + j] = 1;
}
}
for (i = 0; i < 7; i++)
{
y++;
for (j = 0; j < 2 * (i + 3) + 1; j++)
{
background[y][(X - (i + 3)) + j] = 1;
}
}
for (i = 0; i < 5; i++)
{
y++;
for (j = 0; j < 3; j++)
{
background[y][X + (2 * j - 2)] = 2;
}
}
}
/*******************************
画雪花
*******************************/
void snow()
{
int i;
srand(time(NULL));
for (i = 0; i < SNOW; i++)
{
int x, y;
x = rand() % (2 * X);
y = rand() % 20;
if ((background[y][x] == 0))
{
background[y][x] = 3;
}
}
}
/*******************************
打印
*******************************/
void display()
{
int x, y;
for (y = 0; y < 20; y++)
{
for (x = 0; x < 2 * X; x++)
{
if (background[y][x] == 0)
{
printf(" ");
}
if (background[y][x] == 1)
{
printf("0");
}
if (background[y][x] == 2)
{
printf("|");
}
if (background[y][x] == 3)
{
printf("*");
}
}
printf("\n");
}
}
/*******************************
清除雪花
*******************************/
void clear_snow()
{
int i, j;
for (i = 0; i < 20; i++)
{
for (j = 0; j < 2 * X; j++)
{
if (background[i][j] == 3)
{
background[i][j] = 0;
}
}
}
}
int main()
{
tree();
while (1)
{
snow();
display();
Sleep(1);
system("cls");
clear_snow();
}
return 0; 
}

//C语言  实现爱心
#include 
#include 
static float x;
static float z;
static float y;
float f(float x, float y, float z) {
float a = x * x + 9.0f / 4.0f * y * y + z * z - 1;
return a * a * a - x * x * z * z * z - 9.0f / 80.0f * y * y * z * z * z;
}
float h(float x, float z) {
for (float y = 1.0f; y >= 0.0f; y -= 0.001f)
if (f(x, y, z) <= 0.0f)
return y;
return 0.0f;
}
int main() {
for (float z = 1.5f; z > -1.5f; z -= 0.05f) {
for (float x = -1.5f; x < 1.5f; x += 0.025f) {
float v = f(x, 0.0f, z);
if (v <= 0.0f) {
float y0 = h(x, z);
float ny = 0.01f;
float nx = h(x + ny, z) - y0;
float nz = h(x, z + ny) - y0;
float nd = 1.0f / sqrtf(nx * nx + ny * ny + nz * nz);
float d = (nx + ny - nz) * nd * 0.5f + 0.5f;
putchar(".:-=+*#%@"[(int)(d * 5.0f)]);
}
else
putchar(' ');
}
putchar('\n');
}
}




// LOVE 字符
#include 
#include 
#include 
#include 
#include 
#include 
//3维数组,存放LOVE字符
char LETTER[][5][5] = {
{
0, 1, 0, 0, 0,
0, 1, 0, 0, 0,
0, 1, 0, 0, 0,
0, 1, 0, 0, 0,
0, 1, 1, 1, 0
},
{
0, 0, 1, 0, 0,
0, 1, 0, 1, 0,
0, 1, 0, 1, 0,
0, 1, 0, 1, 0,
0, 0, 1, 0, 0
},
{
0, 1, 0, 1, 0,
0, 1, 0, 1, 0,
0, 1, 0, 1, 0,
0, 1, 0, 1, 0,
0, 0, 1, 0, 0
},
{
0, 1, 1, 1, 0,
0, 1, 0, 0, 0,
0, 1, 1, 1, 0,
0, 1, 0, 0, 0,
0, 1, 1, 1, 0
}
};
int status = 1;//控制线程函数的运行状态
int speed = 500;//字符变换的速度
HANDLE hout;//控制台标准输出句柄
CONSOLE_SCREEN_BUFFER_INFO csbi;//控制台屏幕缓冲区信息结构体
char *symbol[] = {"☆", "★", "△", "※", "▲", "■"};//□ ◆用这些特殊字符组成LOVE中的各个字母
WORD attr[] = {
FOREGROUND_RED | FOREGROUND_INTENSITY, //红色
FOREGROUND_GREEN | FOREGROUND_INTENSITY,//绿色
FOREGROUND_BLUE | FOREGROUND_INTENSITY,//蓝色
FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY//白色
};
//在屏幕上画出LOVE
void DrawLove()
{
int i, j, c;
COORD pos;//光标的坐标
DWORD dwLen;
for(c = 0; c < sizeof LETTER / sizeof LETTER[0]; ++c)
{
for(i = 0; i < 5; ++i)
{
pos.X = c * 5 * 2;
pos.Y = i;
SetConsoleCursorPosition(hout, pos);
for(j = 0; j < 5; ++j)
{
if(LETTER[c][i][j])
{
//获取当前屏幕缓冲区信息
GetConsoleScreenBufferInfo(hout, &csbi);
printf("%s", symbol[rand() %
(sizeof symbol / sizeof symbol[0])]);
//用指定的颜色填充字符
FillConsoleOutputAttribute(hout, attr[rand() %
(sizeof attr / sizeof attr[0])], 2,
csbi.dwCursorPosition, &dwLen);
}
else
{
printf(" ");//打印两个空格
}
}
}
}
}
//线程的处理函数
DWORD WINAPI ThreadProc(LPVOID lpParam)
{
while(1)
{
if(status)
{
DrawLove();
Sleep(speed);
}
}
return 0;
}
int main()
{
HANDLE hThread;
int inChar;
hout = GetStdHandle(STD_OUTPUT_HANDLE);
srand((unsigned)time(0));
hThread = CreateThread(NULL, 0, ThreadProc, NULL, 0, NULL);
CloseHandle(hThread);
while(1)
{
inChar = getch();
if('q' == inChar)
{
break;
}
else if('w' == inChar && speed > 50)
speed -= 50;
else if('s' == inChar && speed < 500)
speed += 50;
else if('p' == inChar)
status = 0;
else if('c' == inChar)
status = 1;
}
return 0;
}

//C语言  爱心 
#include 
#include 

int main()
{

float x,y,a; 

	for(y = 1.5f;y> -1.5f;y -= 0.1f){
		for(x = -1.5f;x<1.5f;x += 0.05f){
		a = x*x + y*y - 1;
		printf(a*a*a - x*x*y*y*y <=0.0f ? "*":" ");
		}
	printf("\n");
	}
	return 0; 

}


//万年历
#include 
#include 
long int f(int year, int month)
{
if (month<3) return year - 1;
else return year;
}/*f(年,月)=年-1,如月<3;否则,f(年,月)=年*/
long int g(int month)
{
if (month<3) return month + 13;
else return month + 1;
}/*g(月)=月+13,如月<3;否则,g(月)=月+1*/
long int n(int year, int month, int day)
{
return 1461L * f(year, month) / 4 + 153L * g(month) / 5 + day;
}/*N=1461*f(年、月)/4+153*g(月)/5+日*/
int w(int year, int month, int day)
{
return(int)((n(year, month, day) % 7 - 621049L % 7 + 7) % 7);
}/*w=(N-621049)%7(0<=w<7)*/
int date[12][6][7];
int day_tbl[][12] = { { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 },
{ 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 } };
int main()
{
int sw, leap, i, j, k, wd, day;
int year;/*年*/
char title[] = "SUN MON TUE WED THU FRI SAT";
system("cls");
printf("Please input the year whose calendar you want to know: ");/*输入年*/
scanf("%d%*c", &year);/*输入年份值和掠过值后的回车*/
sw = w(year, 1, 1);
leap = year % 4 == 0 && year % 100 || year % 400 == 0;/*判闰年*/
for (i = 0; i<12; i++)
for (j = 0; j<6; j++)
for (k = 0; k<7; k++)
date[i][j][k] = 0;/*日期表置0*/
for (i = 0; i<12; i++)/*一年十二个月*/
for (wd = 0, day = 1; day <= day_tbl[leap][i]; day++)
{/*将第i+1月的日期填入日期表*/
date[i][wd][sw] = day;
sw = ++sw % 7;/*每星期七天,以0至6计数*/
if (sw == 0) wd++;/*日期表每七天一行,星期天开始新的一行*/
}
printf("\n|==================The Calendar of Year %d =====================|\n|", year);
for (i = 0; i<6; i++)
{/*先测算第i+1月和第i+7月的最大星期数*/
for (wd = 0, k = 0; k<7; k++)/*日期表的第六行有日期,则wd!=0*/
wd += date[i][5][k] + date[i + 6][5][k];
wd = wd ? 6 : 5;
printf("%2d %s %2d %s |\n|", i + 1, title, i + 7, title);
for (j = 0; j


你可能感兴趣的:(C码)