自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 问答 (9)
  • 收藏
  • 关注

原创 死锁例证:哲学家就餐

由Edsger Dijkstra提出的哲学家就餐问题是一个经典的死锁例证。该问题的基本描述中是指定五个哲学家(本例中可以自由指定数目)。这些哲学家将花部分时间思考,花部分时间就餐。当他们思考时,不需要任何共享资源;但当他们就餐时,将使用有限的餐具。在问题的原始描述中,餐具是叉子,但在本例中,将使用筷子。很明显,哲学家就餐需要两根筷子。问题中引入的难点是:作为哲学家,他们很穷,所以他们只能买五根筷子(更一般的讲,筷子和哲学家的数量相同)。他们围坐在桌子周围,每两人之间放一根筷子。当一个哲学家要就餐的时候,这

2021-09-15 19:25:56 207

原创 震惊!居然还有人不知道写控制台小游戏必备的函数!

这些函数都是从其他作者那里学习,本人总结,在此十分感谢他们!文章目录一、在控制台指定位置输出1、COORD类型2.GetStdHandle()3、SetConsoleCursorPosition()二、鼠标操作1、获取鼠标相对屏幕坐标BOOL GetCursorPos(LPPOINT lpPoint)2、获取控制台相对屏幕坐标1、BOOL WINAPI SetConsoleTitle(__in LPCTSTR lpConsoleTitle)2、HWND FindWindow(LPCSTR lpClassN

2021-06-05 11:21:48 652 3

原创 Dijkstra算法介绍及其优先队列优化和斐波那契堆优化

Dijkstra算法介绍及其优先队列优化和斐波那契堆优化文章目录一、dijkstra算法概述二、实现dijkstra算法需要掌握的算法知识1、从数据中剔除最小项(函数ExtractMin())2、松弛操作3、伪代码分析三、最小优先队列概述四、最小优先队列伪代码分析1.维护堆的性质2.建堆3.剔除最小节点:4.关键字减值(松弛操作,具体实现中将此函数命名为relax())五、例题分析1. 首先设法存储输入的数据2. 设计最小优先队列3.实现Dijkstra算法(限于题目要求,略显臃肿):4.与优先队列

2021-05-06 07:50:09 4461 3

原创 用C语言将中文文本和英文文本合并为一段中文一段英文(翻译排版)

文章目录前言一.首先要对网上下载的文件进行必要的修改1.将段与段之间的空行删除2.将每一段段首设置为两个空格(包括标题)1.将Word文档复制到文本文档中:2.使用替换3.将完成好的文本复制粘贴到编译器中(Dev c++)前言网上下载的所谓中英对照文本往往都是中英分开的两个文本:![在这里插入图片描述](https://img-blog.csdnimg.cn/20210319105415968.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5n

2021-03-20 13:55:02 3969 7

原创 用链表写一个简单计算器

问题描述:假设计算器只能进行加减乘除运算,运算数和结果都是整数。输入样例:1+12/2*3-12=输出样例:7思路:1.先将用户输入全部作为字符串存入一个链表中,再将此链表中的数字字符转换为数字,同运算符一起,存入另一个链表中。2.遍历链表,先乘除后加减。实现:1.存储用户输入的字符typedef struct ch{//将用户的输入全部做为字符串存储到此链表中 int ch; struct ch *next;}Char;2.输入字符,存入链表:char ch; Char *h

2021-03-18 13:32:56 1304 6

原创 常用文件函数总结

常用文件函数总结文章目录常用文件函数总结一.fopen()函数1. fopen()的模式字符串二.fclose()函数三.getc()函数四.putc()函数五. fprintf()函数六.fscanf()函数七.fgets()函数八.fputs()函数九.fseek()函数十.ftell()函数十一.fgetpos()函数十二.fsetpos()函数一.fopen()函数它的第一个参数是待打开文件的名称,第二个参数是一个字符串,指定待打开文件的模式。1. fopen()的模式字符串模

2021-03-12 07:45:41 2176 4

原创 链表练习

连续使用两个链表的例子注意:下面的讨论的目的是更好的理解和掌握链表,所以请不要纠结于为什么会有人写这种代码…要求:创建一个可以存储int类型的链表,以回车键表示输入结束。思路:1.在主函数调用一个自定义的输入函数,用以输入数据,根据该函数的返回值判断是否继续输入。2.关于自定义的输入函数:以字符的形式获取用户输入(可以用另一个函数将输入的字符"123"转换为数字123,不要问为什么要这样,非要问的话,请看开头),由于事先不知道用户会输入多少字符,所以这里就又可以用链表实现。...

2021-02-14 15:38:09 185

原创 指针与数组、函数

《c primer plus 》阅读笔记一、指针表示法和数组表示法:1.指针表示法和数组表示法优缺使用数组表示法,让函数是处理数组的这一意图更加明显。另外,许多其他语言的程序员对数组表示法更熟悉,如FORTRAN、Pascal、Modula-2或BASIC。其他程序员可能更习惯使用指针表示法,觉得使用指针更自然。至于C语言,ar[i]和*(ar+1)这两个表达式是等价的。无论ar是数组名还是指针变量,这两个表达式都没有问题。但是,只有当ar是指针变量时,才能使用ar++这样的表达式。指针表示法(尤

2021-01-28 15:37:17 472 9

原创 十六进制用strtol()函数转换为十进制

16进制用strtol()转换为十进制题目:输入一个以#结束的字符串,本题要求滤去所有的非十六进制字符(不分大小写),组成一个新的表示十六进制数字的字符串,然后将其转换为十进制数后输出。如果在第一个十六进制字符之前存在字符“-”,则代表该数是负数。#include<stdio.h>#include<stdlib.h>int main(void){ int i,j,k=0,wei; long value; char a[100],b[100],*en

2021-01-22 17:09:09 623

原创 递归解决汉诺塔

递归解决汉诺塔#include<stdio.h>//将a柱子盘子借助b柱子移到c柱子void han(int,char,char,char);void move(char,char);int main(void){ int n; char a='a',b='b',c='c'; scanf("%d",&n); han(n,a,b,c); return 0;}void han(int n,char a,char b,char c){

2021-01-20 11:09:31 147

原创 四种去重方法耗时比较

pta上一直说我的答案错误,但是运行的答案都对#include<stdio.h>#include<math.h>int main(){long int h,n;double s=0,h1;int i;scanf("%ld%ld",&h,&n);if(h1&&n0){ printf(“1.0 0.0\n”);return 0;}for(i=1;i<=n;i++){s=s+hpow(1/2.0,i-1);if(i>

2020-11-24 13:18:42 278

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除