- 博客(45)
- 收藏
- 关注
原创 1069 微博转发抽奖 简易解决思路分享
小明 PAT 考了满分,高兴之余决定发起微博转发抽奖活动,从转发的网友中按顺序每隔 N 个人就发出一个红包。请你编写程序帮助他确定中奖名单。输入格式:输入第一行给出三个正整数 M(≤ 1000)、N 和 S,分别是转发的总量、小明决定的中奖间隔、以及第一位中奖者的序号(编号从 1 开始)。随后 M 行,顺序给出转发微博的网友的昵称(不超过 20 个字符、不包含空格回车的非空字符串)。注意:可能有人转发多次,但不能中奖多次。所以如果处于当前中奖位置的网友已经中过奖,则跳过他顺次取下一位。
2024-08-12 20:06:12
423
原创 1065 单身狗 40(n)思路
单身狗”是中文对于单身人士的一种爱称。本题请你从上万人的大型派对中找出落单的客人,以便给予特殊关爱。输入格式:输入第一行给出一个正整数 N(≤ 50 000),是已知夫妻/伴侣的对数;随后 N 行,每行给出一对夫妻/伴侣——为方便起见,每人对应一个 ID 号,为 5 位数字(从 00000 到 99999),ID 间以空格分隔;之后给出一个正整数 M(≤ 10 000),为参加派对的总人数;随后一行给出这 M 位客人的 ID,以空格分隔。题目保证无人重婚或脚踩两条船。
2024-08-06 17:34:42
419
原创 Linux C 基于tcp和epoll在线聊天室
服务端:实现了验证用户是否已经存在(支持最大64用户连接)支持广播用户进入退出聊天室以及用户聊天内容。这里只提供里服务端代码,如果想要看客户端代码。
2023-11-22 20:21:02
805
原创 Linux C IO复用
什么是IO复用呢?I/O复用(I/O multiplexing),指的是通过一个支持同时感知多个描述符的函数系统调用,阻塞在这个系统调用上,等待某一个或者几个描述符准备就绪,就返回可读条件。IO多路复用解决了什么问题呢?当多个客户端与服务器通信时,若服务器阻塞在其中一个客户的read(sockfd1,…),当另一个客户数据到达sockfd2时,服务器无法及时处理,此时需要用到IO多路复用。
2023-11-22 20:14:14
465
原创 Linux C 基于tcp多线程在线聊天室
客户端实现了判单用户登录结果、防止单回车字符发送、保存和显示历史聊天记录(仅自己)、退出聊天室功能。服务端实现了验证用户是否已经存在(支持最大64用户连接)支持广播用户进入退出聊天室以及用户聊天内容。
2023-11-20 19:40:04
524
原创 Linux C 网络编程概述
计算机网络是指将不同地理位置,具有独立功能的多台计算机及网络设备通过通信线路(包括传输介质和网络设备连接起来),在网络操作系统、网络管理软件及网络通信协议的共同管理和协调下实现资源共享和信息传递的计算机系统。网络地址转换(NAT)是一种用于访问 Internet 访问模式广域网(WAN)的技术,用于将私有(保留)地址转换为合法 IP 地址。NAT 不仅能够有效地额抵抗外部网络攻击(防火墙:外来连接),还能够在 IP 地址分配不理想,不足的时候有效,合理化的分配 IP 地址,从而能够进行互联网访问。
2023-11-20 19:30:43
366
原创 Linux C 线程间同步机制
同进程内的所有线程共同使用进程的内存空间,并且线程可以在直接应用层完成,因此线程和线程之间的通信使用“全局变量”即可完成通信。但是由于 Linux 系统没有数据保护方式,所在在线程通信的时候需要进行数据的“同步保护”。在同进程中的多个线程都要操作的数据进行保护时,只允许一个线程操作要保护的内容。Linux 系统使用“信号量”、“互斥锁”以及“条件变量”来实现数据同步保护。实现数据保护的流程为:①创建一种使用的保护机制(信号量、互斥锁或条件变量)。
2023-11-16 20:17:11
301
原创 Linux C 线程
线程(英语:thread)是操作系统能够进行运算调度的最小单位(程序执行流的最小单元)。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。在Unix System V及SunOS中也被称为轻量进程(lightweight processes),但轻量进程更多指内核线程(kernel thread),而把用户线程(user thread)称为线程。
2023-11-16 19:48:21
373
原创 基于消息队列+多进程编写的银行模拟系统
该案例大体过程为,服务器先启动,初始化消息队列和信号,用多线程技术启动开户、存钱、转账、取钱模块,并且可以控制结束。客户端启动后会自动链接服务器,会将用户的请求发送到请求队列,从响应消息队列读取处理结果,并提示给用户。其他模块轮询检测请求消息队列中是否有自己应该去做事情的消息,如果读取到就开始任务,并且将任务结果发送到响应消息队列。目前用户信息存取是通过txt文件实现的,每个用户单独一个文件。
2023-11-15 19:51:27
154
原创 Linux C 进程间通信
为什么进程间需要通信?为了传输数据、共享资源、通知事件、控制进程等。那么进程间通信的原理是什么呢?进程在内核中开辟一块缓冲区,进程1把数据从用户空间拷到内核缓冲区,进程2再从内核缓冲区把数据读走,内核提供的这种机制称为进程间通信机制。无名管道只能用于父子进程或兄弟进程之间的通信,而有名管道可用于任意两进程之间通信。在Linux中使用 kill -l 命令可以查看到x 系统中有下 62 个信号,每一个信号都有自己独特的含义。
2023-11-15 19:15:16
710
原创 Linux C 进程编程
官方的来说,进程是程序在某个数据集合上的一次运行活动,也是操作系统进行资源分配和保护的基本单位。通俗的讲,进程就是在程序编译之后,运行起来的二进制文件。
2023-11-13 20:57:01
551
原创 Linux 之 MakeFile
初学者在Linux中编写代码的时候,都会了解到需要使用 gcc 1.c -o app 把 .c源文件 变成可执行文件。但是如果是一个由上百个.c文件构成的项目,我们还得一个个去变成可执行文件么?因此工程管理器应运而生。工程管理器是一个能够管理较多的文件,并且能根据文件时间自动检测出更新过的文件而减少编译的工作量,同时通过读入 Makefile 文件来执行大量的编译工作。Makefile是一种用于自动化构建和编译软件项目的工具。它通常用于管理大型项目中的源代码文件,以及定义项目的编译、链接和其他构建过程。
2023-11-13 00:16:19
1619
原创 Linux C 时间编程
3)date -s “20231111 11:11:11”:修改系统时间为2023年11月11日11点11分11秒。返回值:返回一个指向字符串的指针,它代表了结构 struct timeptr 的日期和时间。返回值:该函数返回指向 tm 结构的指针,该结构带有被填充的时间信息。返回值:该函数返回指向 tm 结构的指针,该结构带有被填充的时间信息。timep:指向表示日历时间的 time_t 值的指针。指向表示日历时间的 time_t 值的指针。timeptr:指向 tm 结构的指针。
2023-11-11 15:39:54
206
原创 Linux C 目录编程
相较于文件编程,目录编程也有一套自己的函数,可以进行创建、打开、读取等目录操作。在日常中使用较多的是遍历目录,比如音乐播放器检测本地音乐、视频播放器打开指定目录下的视频等等。
2023-11-11 11:46:37
825
原创 文件IO编程
文件 IO 是不带缓存的 IO。每个 read,write 都调用内核中的一个系统调用。也就是一般所说的低级 I/O——操作系统提供的基本 IO 服务,与 os 绑定,特定于*nix 平台。文件 IO 在 windows 是无法运行的。
2023-11-10 16:47:53
88
原创 标准IO编程
标准IO(标准输入输出)是指在程序中使用的输入输出函数库,它提供了一套标准的文件操作函数,如打开文件、读写文件、关闭文件等。这些函数库包括了stdio.h、stdlib.h等头文件中的函数,如fopen、fclose、fread、fwrite等。标准IO还包括了对标准输入stdin、标准输出stdout、标准错误输出stderr的操作。标准 IO 库处理很多细节。例如缓存分配,以优化长度执行 IO 等。
2023-11-10 16:01:03
213
原创 Linux命令基础介绍(包括shell、vim)
命令行格式命令行输入格式帮助命令Shell中的特殊字符Shell命令Vim命令文件打开方式vim命令行模式vim插入模式vim底行模式vim可视模式。
2023-11-07 20:31:28
112
原创 Linux介绍
说到操作系统大家第一时间想到的是windows和macos,可能是这两大操作系统占据了主流市场。但是作为IT相关人员,我们还应该想到Linux。在70年代,Unix体系的源程序大多可以任意流传。那段时间,人们在创作自己的"程序作品"的同时享受着从事科学探索、创新活动所特有的那种激情和成就感。程序员们如同作家一样,急于"发表"自己的程序作品,并不专注于保守"机密"。1979年,AT&T(美国电报电话公司)宣布了Unix的商业化计划,随之出现了各种二进制的商业Unix版本。
2023-11-06 20:36:58
59
原创 SDUT ACM PTA 数据结构 图论
程序有错误请私信我,以及时改正。10.邻接矩阵表示法创建无向图。不懂得可以私信我,随时解答。12.Dijkstra算法。11.邻接表创建无向图。2.哈利·波特的考试。5.任务调度的合理性。
2023-09-25 09:56:07
563
原创 SDUT ACM PTA 数据结构 树和二叉树
6.交换二叉树中每个结点的左孩子和右孩子。程序有错误请私信我,以及时改正。不懂得可以私信我,随时解答。9.完全二叉树的层序遍历。8.建立与遍历二叉树。
2023-09-25 09:47:35
459
原创 SDUT ACM OJ PTA 实验六 动态规划
A-数字三角形问题#include<stdio.h>#include<stdlib.h>int max(int a,int b){ if(a>=b) return a; else return b;}int main(){ int n,i,j,a[105][105]; scanf("%d",&n); for(i=1;i<=n;i++) { for(j=1;j<=i;j++) { scanf("%d",&a[
2022-03-09 19:08:54
1083
原创 SDUT ACM OJ PTA 实验五 贪心
A-活动选择#include<stdio.h>#include<stdlib.h>struct sk{ int h; int k; int j;}a[105],t;int main(){ int n,i,j; scanf("%d",&n); for(i=1;i<=n;i++) { a[i].h=i; scanf("%d %d",&a[i].k,&a[i].j); } for(i=n;i>1;i--) {
2022-03-09 19:04:38
963
原创 SDUT ACM OJ PTA 实验四 递归
A-计算组合数#include <stdio.h>int f(int n,int m){ int t; if(m==0||n==1||m==n) t=1; else { t=f(n-1,m-1)+f(n-1,m); } return t;}int main(){ int k,i,n,m; scanf("%d",&k); for(i=0;i<k;i++) { scanf("%d %d",&n,&
2022-03-09 19:00:44
1183
原创 SDUT ACM OJ PTA 实验三 递推
A-马拦过河卒#include <stdio.h>int main(){ int i,j,n,m,g[20][20],f[20][20],x,y; scanf("%d %d %d %d",&n,&m,&x,&y); for(i=0;i<=n;i++) for(j=0;j<=m;j++) { g[i][j]=0; f[i][j]=0;
2022-03-09 18:55:10
838
2
原创 SDUT ACM OJ PTA 实验二链表
A :顺序建立链表#include<stdio.h>#include<stdlib.h>struct node{ int data; struct node *next;}*head,*tail,*p,*q;int main (){ head=(struct node *)malloc(sizeof(struct node)); head->next=NULL; tail=head; int n,i;
2022-02-07 20:57:49
1323
2
原创 SDUT ACM OJ PTA 实验一 结构体、共用体和枚举
A - 检查宿舍卫生#include<stdio.h>struct dormitory_scores{ int a,b,c,d,e,sum;}ds;int main(){ int n,max=-1,k=0; scanf("%d",&n); while(n--) { scanf("%d %d %d %d %d",&ds.a,&ds.b,&ds.c,&ds.d,&ds.e); ds.sum=ds.a+ds.b+ds.c+
2022-01-25 01:43:09
1465
原创 SDUT ACM OJ C语言实验大一
link.实验一link. 实验二link. 实验三link. 实验四link. 实验五link. 实验六link. 实验七link. 实验八link. 实验九
2021-08-30 00:18:46
1287
原创 SDUT ACM OJ 实验九 字符串应用
提交题目记得选择c不然gets函数会报ceA - C语言实验——字符编码#include<stdio.h>int main(){ int i; char a[5]; gets(a); printf("password is "); for(i=0;a[i]!='\0';i++) { printf("%c",a[i]+4); }}B - C语言实验——保留字母#include<stdio.h>int main(){ int i,j; c
2021-08-30 00:09:38
1698
2
原创 SDUT ACM OJ 实验八 指针应用
A - 小泉的难题#include<stdio.h>void f(int *q,int n){ int i,j,t; for(i=0;i<n-1;i++) { for(j=i+1;j<n;j++) { if(*(q+i)>*(q+j)) { t=*(q+i); *(q+i)=*(q+j);
2021-08-29 23:43:08
651
4
原创 SDUT ACM OJ 实验七 函数应用
A - C语言实验——计算表达式#include <stdio.h>#include<math.h>float f(double x,int n){ double i,t=0; for(i=1;i<=n;i++) {x=sqrt(x+i);t+=x;} return x; }int main(){ double x,i; int n; scanf("%lf%d",&x,&
2021-08-26 22:20:38
949
原创 SDUT ACM OJ 实验六 二维数组
A - C语言实验——求一个3*3矩阵对角线元素之和#include<stdio.h>int main(){ int z[3][3],i,j,n; for(i=0;i<3;i++) { for(j=0;j<3;j++) { scanf("%d",&z[i][j]); } } n=z[0][2]+z[1][1]+z[2][0]; printf("%d",
2021-08-26 22:00:31
714
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人