通讯录+贪吃蛇

通讯录

#include <stdio.h>

struct data
{
	int id;
	char name[10];
	long int phone;
};
int Add(int length,struct data ar[])
{
	printf("--------------\n");
	printf("请输入id\n");
    scanf("%d",&ar[length].id);
	printf("--------------\n");
	printf("请输入姓名\n");
	scanf("%s",ar[length].name);
	printf("--------------\n");
	printf("请输入电话号码\n");
	scanf("%ld",&ar[length].phone);
	length++;
	return length;
}

void show(int length,struct data ar[])
{
	int i;
	
	for(i=0;i<length;++i)
	{
		printf("id:%d\tname:%s\tphone:%ld\n",ar[i].id, ar[i].name, ar[i].phone);
		//printf("name:%s\t",ar[i].name);
		//printf("phone:%ld\n",ar[i].phone);
	}	
}

int delete(int length,struct data ar[])
{
	int i,j,k;
	long int num;
	char m[10];
	printf("--------------\n");
	printf("|1.按姓名删除|\n");
	printf("|2.按电话号码删除|\n");
	scanf("%d",&k);
	
	if(1==k)
	{
		printf("-----------1---\n");
		printf("请输入姓名\n");
		scanf("%s",m);
		
		for(i=0;i<length;++i)
		{
			if(strcmp(ar[i].name,m)==0)
			{
				for(j=i;j<length;j++)
				{
					ar[j]=ar[j+1];
				}
					length--;
					break;
			}
		}
	}
	else if(2==k)
	{
		printf("--------------\n");
		printf("请输入电话号码\n");
		scanf("%ld",&num);
		
		for(i=0;i<length;++i)
		{
			if(num==ar[i].phone)
			{
				for(j=i;j<length;j++)
				{
					ar[j]=ar[j+1];
				}
				length--;
				break;
			}
		}
	}
	return length;
}

void find(int length,struct data ar[])
{
	int i,k;
	long int num;
	char m[10];
	printf("--------------\n");
	printf("|1.按姓名查找|\n");
	printf("|2.按电话号码查找|\n");
	scanf("%d",&k);
	if(1==k)
	{
		printf("--------------\n");
		printf("请输入姓名\n");
		scanf("%s",m);
		
		for(i=0;i<length;++i)
		{
			if(strcmp(ar[i].name,m)==0)
			{
				printf("id:%d\t",ar[i].id);
				printf("name:%s\t",ar[i].name);
				printf("phone:%ld\n",ar[i].phone);
			}
		}
	}
	else if(2==k)
	{
		printf("--------------\n");
		printf("请输入电话号码\n");
		scanf("%ld",&num);
		
		for(i=0;i<length;++i)
		{
			if(num==ar[i].phone)
			{
				printf("id:%d\t",ar[i].id);
				printf("name:%s\t",ar[i].name);
				printf("phone:%ld\n",ar[i].phone);
			}
		}
	}
}

void modify(int length,struct data ar[])
{
	int i,k;
	long int num;
	char m[10];
	printf("--------------\n");
	printf("|1.修改姓名|\n");
	printf("|2.修改电话号码|\n");
	scanf("%d",&k);
	
	if(1==k)
	{
		printf("--------------\n");
		printf("请输入原姓名\n");
		scanf("%s",m);
		
		for(i=0;i<length;++i)
		{
			if(strcmp(ar[i].name,m)==0)
			{
				printf("--------------\n");
				printf("请输入新姓名\n");
				scanf("%s",ar[i].name);
			}
		}
	}
	else if(2==k)
	{
		printf("--------------\n");
		printf("请输入原电话号码\n");
		scanf("%ld",&num);
		
		for(i=0;i<length;++i)
		{
			if(num==ar[i].phone)
			{
				printf("--------------\n");
				printf("请输入新电话号码");
				scanf("%ld",&ar[i].phone);
			}
		}
	}
}
	
int main()
{
	int i,j,k;
	int com=0;
	int length =0;
	struct data array[10];
	
	while(1)
	{
		printf("--------------\n");
		printf("|1.增加联系人|\n");
		printf("|2.显示联系人|\n");
		printf("|3.删除联系人|\n");
		printf("|4.查找联系人|\n");
		printf("|5.修改联系人|\n");
	    scanf("%d",&com);
		
		switch(com)
		{
			case 1:
				length=Add(length,array);	
				break;
				
			case 2:
				if(0==length)
					{	
						printf("--------------\n");
						printf("通讯录为空\n");
						break;
					}
				show(length,array);
			    break;
				
			case 3:
				if(0==length)
				{	
					printf("--------------\n");
					printf("通讯录为空\n");
					break;
				}
				length=delete(length,array);
				break;
			
			    case 4:
					if(0==length)
					{	
						printf("--------------\n");
						printf("通讯录为空\n");
						break;
					}
					find(length,array);
					break;
					
				case 5:
					if(0==length)
					{	
						printf("--------------\n");
						printf("通讯录为空\n");
						break;
					}
					modify(length,array);
					break;

			default:
			    printf("输入错误!\n");
		}
	}

	return 0;
}

贪吃蛇

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <signal.h>
#include <termios.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>
#include <pthread.h>

#define KEYCODE_U 0x41   // 向上按键
#define KEYCODE_D 0x42   // 向下按键
#define KEYCODE_L 0x44   // 向左按键
#define KEYCODE_R 0x43   // 向右按键

int kfd = 0;
struct termios cooked, raw;
char dir = KEYCODE_R;    // 当前蛇的移动方向

// 获取键盘响应:上、下、左、右键
void* get_dir(void *a)
{
	while(1)
	{
		char c;                                                              
		tcgetattr(kfd, &cooked); // 得到 termios 结构体保存,然后重新配置终端
		memcpy(&raw, &cooked, sizeof(struct termios));
		raw.c_lflag &=~ (ICANON | ECHO);                       
		raw.c_cc[VEOL] = 1;
		raw.c_cc[VEOF] = 2;
		tcsetattr(kfd, TCSANOW, &raw);

		if(read(kfd, &c, 1) < 0)
		{
			perror("read():");
			exit(-1);
		}
		tcsetattr(kfd, TCSANOW, &cooked);//在程序结束时在恢复原来的配置
		dir = c;
	}
}

unsigned char map[17][17] = {0};   // 游戏地图
unsigned char snake[50] = {55,54,53};   // 初始化蛇坐标,游戏开始的时候蛇在(8,5)这个位置
unsigned char food = 59;       	   // 食物的坐标,游戏开始的时候在(3,3)这个位置
int len = 3;                   	   // 保存蛇的当前长度

// 将 数字 转化为坐标系
void num_to_xy(unsigned char num, unsigned char *x, unsigned char *y)
{
	*x=num/17;
	*y=num%17;
	
}

// 更新地图数据
void update_map()
{
	
	int i,j,k;
	unsigned char xsnake,ysnake;
	unsigned char xfood,yfood;
	num_to_xy(food,&xfood,&yfood);
	
	for(i=0;i<17;i++)
	{
		for(j=0;j<17;j++)
		{
			if(0==i||0==j||16==i||16==j)
			{
				map[i][j]='#';
			}
			else if(xfood==i&&yfood==j)
			{
				map[i][j]='!';
			}
			else
			{
				map[i][j]=' ';
			}
		}
	}
	
	for(k=0;k<len;k++)
	{
		num_to_xy(snake[k],&xsnake,&ysnake);
		for(i=0;i<17;i++)
		{
			for(j=0;j<17;j++)
			{
				if(i==xsnake&&j==ysnake)
				{
					map[i][j]='*';
				}
			}
		}
	}

	
}

// 打印地图
void print_map()
{
	int i,j;
	
	for(i=0;i<17;i++)
	{
		for(j=0;j<17;j++)
		{
			printf("%c",map[i][j]);
		}
		printf("\n");
	}
	
	
}

// 生成食物
unsigned char generate_food()
{
	srand(time(NULL));
	int temp=1,i;
	food=rand()/289;
	unsigned char xfood,yfood;
	num_to_xy(food,&xfood,&yfood);
	
	while(temp)
	{
		temp=0;
		if(0==xfood||16==xfood||0==yfood||16==yfood)
		{
			temp=1;
			continue;
		}
		
		for(i=0;i<len;i++)
		{
			if(food==snake[i])
			{
				temp=1;
			}
		}
		
		
	}

}

// 移动蛇
void move_snake()
{
	unsigned char x,y;  // 坐标
	num_to_xy(snake[0], &x, &y);   		// 获取蛇头的坐标
	int i;
	unsigned char end;
		
	
	// 判断移动方向
	switch (dir)
	{
		case KEYCODE_L:   // 向左移动
			y--;
			break;
		case KEYCODE_R:   // 向右移动
			y++;
			break;
		case KEYCODE_U:   // 向上移动
			x--;
			break;
		case KEYCODE_D:   // 向下移动
			x++;
			break;
	}
	
	end=snake[len-1];
	
	for(i=len-1;i>0;i--)
	{
		snake[i]=snake[i-1];
	}
	snake[0]=x*17+y;
	
	if(snake[0]==food)
	{
		len++;
		snake[len-1]=end;
		generate_food();
		
	}
}

// 判断蛇是否应该存活,如果返回值是0代表应该存活,1代表不应该存活
int isalive()
{
	int i;
	int k=0;
	unsigned char xtop,ytop;
	num_to_xy(snake[0], &xtop, &ytop);
	
	if(xtop==0||xtop==16||ytop==0||ytop==16)
	{
		k=1;
	}
	
	for(i = 1; i < len; i++)
	{
		if(snake[0] == snake[i])
		{
			k=1;
		}
	}
		
	return k;			
	
}

int main()
{
	// 开启一个线程用于获取键盘的上下左右键响应
	pthread_t tid1;
	pthread_create(&tid1, NULL, get_dir, NULL);
	
	while(1)
	{
		// 更新地图数据
		update_map();
		
		// 打印地图
		system("clear");
		print_map();
		usleep(500000/(len/5+1));
		// 移动蛇
		move_snake();
		
		if (isalive() == 1)
		{
			break;
		}	
	}
	tcsetattr(kfd, TCSANOW, &cooked);//在程序结束时在恢复原来的配置
	
	printf ("Game Over!\n");
	return 0;
}
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
应用背景为变电站电力巡检,基于YOLO v4算法模型对常见电力巡检目标进行检测,并充分利用Ascend310提供的DVPP等硬件支持能力来完成流媒体的传输、处理等任务,并对系统性能做出一定的优化。.zip深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值