C
zhuhezhang
这个作者很懒,什么都没留下…
展开
-
linux环境下,基于机器学习算法 KNN 的 MPI 并行分类器
目录1.题目2.使用说明3.总体设计4.使用到的MPI库函数5.详细设计6.结果分析7.源码1.题目基于KNN算法的分类器假如你有一个朋友一直使用在线约会网站寻找合适自己的约会对象。尽管约会网站会推荐不同的人选,但她没有从中找到喜欢的人。经过一番总结,她发现曾交往过三种类型的人:1、不喜欢的人2、喜欢的人3、很喜欢的人尽管发现了上述规律,你的朋友依然无法将约会网站推荐的匹配对象归入恰当的分类。朋友希望我们的分类软件可以更好的帮助她将匹配对象划分到确切的分类中。根据她的要求,收集了多条数据,数据原创 2021-03-10 23:25:36 · 652 阅读 · 0 评论 -
linux环境下,模拟百度网盘上传、下载文件
目录1.题目2.运行截图3.总体设计4.详细设计5.源码5.1服务端5.2客户端1.题目1)模仿百度网盘实现一个文件上传、下载、浏览的终端网盘;2)能够实现文件和目录的存储;3)在终端下运行服务器和客户端,不对GUI做要求;4)以用户的形式组织用户数据,不同用户“登录”可以访问相应的数据;5)同一用户可以在不同位置进行登录,并且需要考虑访问冲突的问题:即用户在写一个文件的时候,该文件不能被伤处;6)浏览方法的显示参考下面的方式进行显示,同时需要根据参数选择显示文件的属性;7)写一个测试程序模原创 2021-03-10 23:14:22 · 4719 阅读 · 4 评论 -
linux环境下,实现公共聊天室功能
1.题目1、实现公共聊天室的程序,在此环境下允许多个用户同时进行聊天;2、实现点到点的聊天应用,在此环境下应实现某一用户到另外一个用户的聊天功能;3、在图形界面的环境下进行实现(不做图形界面的要求);4、允许多个用户同时进行聊天(聊天室环境下);5、以unix或类unix的C程序完成上述功能;6、Server端应该是充分并发的;二、运行截图三、总体设计本程序分为服务端和客户端,其中公共聊天室的功能需要客户端和服务端都打开,而双人聊天室只需要打开客户端即可,并不需要服务端,通信协议都是采用原创 2021-03-10 21:22:06 · 3274 阅读 · 19 评论 -
编译运行UDP client/sever,然后利用send()和recv()分别代替sendto()和recvfrom()
目录1.题目12.题目23.源码3.1服务端3.2客户端1.题目1编译运行UDP client/sever(https://www.geeksforgeeks.org/udp-server-client-implementation-c/),最好在不同的机器上运行,也可以在Linux上安装Linux虚拟机,或者买树莓派,并用wireshark抓包。运行环境是在windows下的Ubuntu虚拟机和树莓派虚拟机。在一开始指定服务器的IP地址之后客户端接受的数据后面会出现乱码,而服务端则没有出现。对比两个原创 2021-03-10 15:20:32 · 408 阅读 · 1 评论 -
利用linux socket tcp 尝试发送长数据,在写的过程中,调用close,看看没发完的数据是否会继续发送;close之后TCP连接是否会断开
目录1.题目及解答2.源码2.1服务端2.2客户端1.题目及解答利用linux socket tcp 尝试发送长数据,在写的过程中,调用close,看看没发完的数据是否会继续发送;close之后TCP连接是否会断开,用两种方式查看,(1)netstat命令,(2)wireshark抓包工具,查看发送的数据能不能被抓到,查看三次握手和四次挥手发生的时间,(3)TCP client端的IP和port是由谁创建的?是多少?修改的代码如所示:主要是用来交互信息的那部分,在客户端中初始化一段长数据,然后在写的过原创 2021-03-10 15:16:31 · 422 阅读 · 0 评论 -
linux环境下,写一个TCP SERVER,TCP CLIENT,并且完成通讯
server#include <stdio.h> #include <netdb.h> #include <netinet/in.h> #include <stdlib.h> #include <string.h>#include <unistd.h> #include <sys/socket.h> #include <sys/types.h> #define MAX 80 #define P原创 2021-03-10 00:01:58 · 407 阅读 · 1 评论 -
linux环境下,比较多进程/线程的大数加法运算时间
目录1.题目2.实验结论3.源码1.题目从一加到一亿(足够大),分别用一个进程、两个进程、四个进程、一个进程的两个线程、一个进程的四个线程来完成加法。使用多进程加的时候意味着每个进程加一部分,怎么把各个部分的数值合起来。并且对比五个结果是否相同、统计五个程序计算分别花了多少时间。2.实验结论总结:通过五个程序各执行三次,计算计算时间平均值,可以大致了解到最快的是四个进程的,最慢的是四个线程的。3.源码https://github.com/Zhuhezhang/com-threads-p原创 2021-03-09 23:57:23 · 387 阅读 · 0 评论 -
linux环境下,实现火车售票系统
1.作业题目1、实现火车售票系统,火车车次、价格、余票、中途站点、票价等信息以文件的形式存储;2、服务端可以实现车次增加、价格调整;3、客户端实现车次查询、余票数目查询及购买操作;4、客户端与服务器端以多进程方式实现,即服务端应是一个进程多线程;客户端是多个进程;客户端程序可以执行多次从而产生多个进程;5、每来一个客户端请求,服务端应产生一个线程处理该请求;6、对于购票操作应实现线程间的同步; 7、服务端应能以格式化文件与终端形式输出余票信息、客户端查询日志等信息;该功能以多进程的方式进行实现原创 2021-03-09 23:45:24 · 1990 阅读 · 0 评论 -
linux环境下,写一个产生僵尸进程的程序,并利用ps命令确认已产生僵尸进程
1.程序设计利用fork函数产生一个子进程,当进程号小于0时报错,否则当进程号等于0时进入子进程输出它里面的内容“子进程已执行完毕并退出”,否则进入父进程执行,会让父进程休眠60s,保证子进程先于父进程执行结束,使子进程成为僵尸进程。同时父进程睡眠60s使能够有足够的时间来查看当前进程状态,以验证是否产生僵尸进程。2.运行分析如下图所示:由于僵尸进程的状态为Z,所以编译程序无错误之后利用命令ps aux | grep -w ‘Z’ (若只输入ps aux则输出显示所有进程)来输出显示当前系统所有进程状原创 2021-03-09 23:38:50 · 2339 阅读 · 4 评论 -
linux环境下,写一个程序,运用fork函数创建进程
写一个程序,运用fork函数创建进程,分别在child和parent process中输出自己的pid。要求分别用write和printf输出,并且在执行的时候分别用重定向到文件和直接输出到终端的形式,观察输出结果并解释差异的原因。1.设计思路定义globvar和buf两个外部变量,然后利用write(STDOUT_FILENO, buf, sizeof(buf)-1) != sizeof(buf)-1输出buf内容至屏幕,并且由于sizeof()会计算包括终止符null的长度,所以为了避免输出它,故将原创 2021-03-09 23:33:25 · 2074 阅读 · 2 评论 -
linux环境下,写一个程序递归遍历指定路径的所有文件和目录,并列出文件的属性
同样利用主函数形参argv引进所要递归查看的路径。声明一个文件句柄以及dirent结构体指针名为ent存放readdir函数的返回值。利用opendir函数打开所要操作的路径并保存返回的dirent结构体指针。当读取目录不为空时利用if((!strncmp(ent->d_name,".",1)) || (!strncmp(ent->d_name,"…",2))) 把当前目录.,上一级目录…及隐藏文件都去掉,避免死循环遍历目录。然后利用dirent结构体里面的参数d_type判断该文件是目录还是文原创 2021-03-09 23:02:23 · 804 阅读 · 0 评论 -
linux环境下,写一个程序模仿cp的操作
由主函数形参argv引进所要复制的文件名和接受复制内容的文件名,利用open函数分别以只读的方式打开第一个文件和以读写、没有目标文件则创建、允许所有用户执行所有操作的方式打开第二个文件,并分别保存两个文件的文件描述符,然后利用read函数读取第一个文件内容并保存到数组buf上,接着利用write函数将buf上的内容写进第二个文件即可,最后再利用close函数关闭两个文件。//模仿cp操作复制文件#include<fcntl.h>#include<unistd.h>#inclu原创 2021-03-09 23:00:04 · 1116 阅读 · 0 评论 -
linux环境下,利用fcntl函数获取file descriptor并进行修改
同样的首先利用函数open以只读的方式打开一个文件并保存返回的文件描述符,利用fcntl函数的复制文件描述符模式,返回当前可用文件描述符的最小数值并打印出来,为了防止文件描述符为6的被使用,然后首先利用close函数关闭文件描述符为6的文件,然后再将目前的这个文件描述符修改为6,并通过输出来验证是否修改成功。//利用函数fcntl修改文件描述符#include <stdio.h>#include <unistd.h>#include <fcntl.h>int原创 2021-03-09 22:57:22 · 159 阅读 · 1 评论 -
linux环境下,利用fcntl函数获取file status flags并进行修改
首先利用函数open以只读的方式打开一个文件并保存返回的文件描述符,利用fcntl函数获取当前文件状态标志,并利用if验证其是否为只读,然后利用flag |= O_APPEND将文件状态标志flag修改为O_APPEND(追加),再而利用其作为函数fcnt的第三个参数将文件状态标志修改,最后再利用if语句验证当前文件状态标志即可。//利用函数fcntl修改文件状态标志#include <stdio.h>#include <unistd.h>#include <fcntl原创 2021-03-09 22:36:08 · 304 阅读 · 1 评论 -
教师信息管理系统
目录1.题目2.总体设计3.系统详细设计4.源码1.题目教师信息包括:记录编号、教师工号、姓名、出生日期(年、月)、学院、住址,联系方式功能要求:从教师信息文件中读取已有的教师信息,并实现屏幕显示。能通过教师工号对已有的教师信息进行修改,要求工号不能修改,其他信息内容都可改,修改的结果保存至教师信息文件。实现对教师信息的统计(分学院统计教师数量)并排序显示。实现对教师信息的查询显示(查询条件分为工号、出生年、学院)。新教师信息的添加并保存至教师信息文件。教师信息的删除,根据工号,删除指定原创 2021-03-07 12:35:07 · 3550 阅读 · 0 评论 -
创建文件,对文件进行打开、关闭、读写等基本操作
文件读写:创建文件,对文件进行打开、关闭、读写等基本操作。题目描述:1、有n个学生,每个学生有3门课程的成绩,从键盘输入n个学生的学号、姓名、成绩等数据,并保存在“stu”文件中。2、从文件中读入学生数据(包括学号、姓名、3门课程成绩),计算出平均成绩,将原有数据和计算出的平均成绩存放在磁盘文件“stu”中。3、能在屏幕上输出文件中所有数据。算法描述:本题运用模块化设计来实现功能。首先定义一个结构体用来存储学生信息,然后就是定义的各个函数的声明。通过主函数定义一个结构数组以及调用各个函数。然后是从原创 2021-03-07 12:34:17 · 939 阅读 · 0 评论 -
编写程序,完成找零钱任务
编写程序,完成找零钱任务。题目描述:我们知道人民币有1、2、5、10、20、50、100这几种面值。现在给你n(1≤n≤250)元,让你计算换成用上面这些面额表示且总数不超过100张,共有几种。比如4元,能用4张1元、2张1元和1张2元、2张2元,三种表示方法。输入:输入有多组,每组一行,为一个整合n。输入以0结束。输出:输出该面额有几种表示方法。样例输入:14样例输出:13算法描述:运用for循环依次算出输入多个面额的表示方法。首先算出该输入面额分别用100,50,20,10,5原创 2021-03-07 12:33:57 · 1789 阅读 · 0 评论 -
定义结构体变量,创建链表,对链表进行简单的基本操作
定义结构体变量,创建链表,对链表进行简单的基本操作,完成以下任务要求。题目描述:1、有n个学生,每个学生的数据包括学号、姓名、性别、年龄、班级等信息,从键盘输入n个学生的数据并以链表方式存储(单向、双向不限)。2、根据输入要求,在原有学生数据中任意位置插入一个新学生数据。3、根据输入要求,在原有学生数据中删除任意学号的学生数据。4、能输出所有学生信息。算法描述:首先定义一个结构体,里面包含一个指向下一个结构的结构指针(Student *next),接着在主函数里面定义多个结构指针:Studen原创 2021-03-07 12:33:14 · 637 阅读 · 0 评论 -
输入任意个整数,将它们从小到大排序后输出,并给出现每个元素在原来序列中的位置
题目描述:输入任意个整数,将它们从小到大排序后输出,并给出现每个元素在原来序列中的位置。要求:使用指针变量实现,查找资料,应用经典排序算法之一求解。输入:输入数据有一行整数,用空格分开。输出:输出数据有两行,第一行为排序后的序列,第二行为排序后各个元素在原来序列中的位置。样例输入:1 2 3 5 4 6 8 9 10 7样例输出:1 2 3 4 5 6 7 8 9 101 2 3 5 4 6 10 7 8 9算法描述:运用数组同时输入多个数字,并运用指针存储它们对应的位置,然后利用冒泡排序原创 2021-03-06 21:24:25 · 7370 阅读 · 0 评论 -
编程求解数塔问题
编程求解数塔问题。题目描述:有如下所示的数塔,从顶层走到底层,若每一步只能走到相邻的结点,则经过的结点的数字之和最大是多少?要求:程序每次运行可对任意多个数塔进行求解。提示:这是一个经典的动态规划问题。查找动态规划算法资料设计程序。算法描述:首先输入数塔个数以及数塔大小,把数塔看作一个二维数组,然后定义一个三维数组再利用for循环便可实现同时输入多个数塔的功能。利用语句for(int i=size-2;i>=0;i--) { for(int j=0;j<=i;原创 2021-03-06 21:18:25 · 1759 阅读 · 0 评论 -
求函数的值
编写程序,求函数的值。题目描述:输入x,求以下分段函数的值输入:输入数据有多组,第一行为数据组数t,接下来有t行,每行为一个整数x。输出:每组输出占一行,即f(x)的值,如果是整数直接输出该整数,否则保留2位小数。样例输入:202样例输出:01.41提示:判断一个实数是否是整数形式,用fabs(y-(int)y)<1e-6算法描述:运用条件语句依次判断输入多组x的范围,然后再求出对应的分段函数的值。//输入x,求分段函数的值#include <stdio.h>#原创 2021-03-06 21:14:59 · 2445 阅读 · 0 评论 -
给出一串字符,要求统计出里面的字母、数字、空格以及其他字符的个数
题目描述:给出一串字符,要求统计出里面的字母、数字、空格以及其他字符的个数。字母:A, B, …, Z、a, b, …, z组成数字:0, 1, …, 9空格:" "(不包括引号),剩下的全为其他字符。输入:测试数据可以有多组。每组数据为一行(长度不超过10000)。数据输入至文件结束EOF(键盘上按下ctrl-z)为止。输出:每组输入对应一行输出。样例输入:A0Are you ok? 样例输出:第1行 字母1 数字1 空格1 其他1第2行 字母8 数字0 空格2 其他1算法描述:首原创 2021-03-06 21:07:39 · 3522 阅读 · 0 评论 -
编程实现对任意字符串的加密处理
题目描述:编程实现对任意字符串的加密处理。通讯中为了保密,常常将明文信息转换成密文之后再进行传输。有一种比较简单的加密方法如下:1、小写字母与数字有对应关系:abc—2,def—3,ghi—4,jkl—5,mno—6,pqrs—7,tuv—8,wxyz—9;2、数字和其他的符号都不做变换;3、大写字母转换成小写字母后往后移一位,如:字母X加密后变成y;Z加密后变成a;输入:输入是一个明文,长度不超过100个字符,输入直到文件结尾。输出:输出加密后的密文。样例输入:YUANzi1987样例输出:原创 2021-03-06 21:03:59 · 1830 阅读 · 0 评论 -
求出任意个整数中的最大值
编写程序,求出任意个整数中的最大值题目描述:求n个整数中的最大值。输入:输入数据有2行,第一行为n(1<=n<=10),第二行是n个整数。输出:输出n个整数中的最大值。样例输入:51 2 3 4 5样例输出:5提示:不能只考虑几个整数的情况,考虑100个、1000个甚至上万个整数怎么求最大值的通用性求解方法算法描述:利用数组同时输入多个数字,然后通过一个for循环依次比较出数组里面的最大值并在最后输出它。//求任意个整数中的最大值#include<stdio.h>原创 2021-03-06 21:02:51 · 2975 阅读 · 0 评论 -
打印数字图形
编写程序,打印数字图形。题目描述:从键盘输入一个整数n(1≤n≤9),打印出指定的数字图形输入:正整数n(1≤n≤9)。输出:指定数字图形。样例输入:5样例输出:11211232112343211234543211234321123211211算法描述:该功能运用多个for循环实现一行一行地输出结果。//打印数字图形#include <stdio.h>int main(void){ int n, i, j; scanf("%d", &n原创 2021-03-06 21:01:28 · 579 阅读 · 0 评论 -
输入三个字符后,按各字符的ASCII码从小到大的顺序输出这三个字符
编程实现以下功能:题目描述:输入三个字符后,按各字符的ASCII码从小到大的顺序输出这三个字符。输入:输入数据有多组,每组占一行,有三个字符组成,之间无空格。输出:对于每组输入数据,输出一行,字符中间用一个空格分开。样例输入:qweasdzxc样例输出:e q wa d sc x z算法描述:在while循环里面运用文件结束符实现多行输入,然后运用条件语句依次判断出每行三个字符按照ASCII码排序出来的大小关系。//输入三个字符后,按各字符的ASCII码从小到大的顺序输出这三个字符原创 2021-03-06 20:45:49 · 15056 阅读 · 3 评论 -
编写程序,判断任意一个年份是不是闰年
编写程序,判断任意一个年份是不是闰年。题目描述:符合以下条件之一的年份即为闰年:1.能被4整除而不能被100整除(如2100年就不是闰年)。2.能被400整除。输入:输入第一行有一个整数n,表示下面有n组数据。下面的n行,每行包括有一个整数a(0<a<10000)表示年份输出:对每组数据输出一行如果可以是闰年输出 Yes,否者输出 No样例输入:220082007样例输出:YesNo算法描述:运用数组同时输入一个或多个年份,然后运用year[i] % 4 == 0)原创 2021-03-06 20:42:44 · 7467 阅读 · 0 评论 -
对一个三位整数的数字进行重组,使其在所有可能的数值中最大
编写程序,实现以下功能:对一个三位整数的数字进行重组,使其在所有可能的数值中最大。题目描述:输入一个三位整数,再把它的次序打乱重新组合一个新的三位整数,使其值最大。输入:输入数据有多组,每组占1行,每行为一个三位正整数。输出:每组输出占1行,每行为一个正整数,即次序打乱重新组合一个新的三位整数。样例输入:123231样例输出:321321解题思路:运用求余运算符%依次求出所需要的重组的三位数的个十百位,然后通过条件判断出三个数的大小关系,最后输出重组后的最大数。//对一个或多个三位正原创 2021-03-06 20:15:54 · 5817 阅读 · 0 评论