水题一道,废话不多说,直接贴代码#include<stdio.h>#include<string.h>int main(){ int a[ 105],n; int sum,i,j; while( scanf( "%d",&n)&&n!=0){ sum=0; memset( a,-1,sizeof( a)); for( i=0;i<n;i++) scanf( "%d",&a[ i]); sum+=a[ 0]*6+5; for( i=0;i<n&&a[ i+1]!=-1;i+ Read More
今天解了一道杭电上的1006题:http://acm.hdu.edu.cn/showproblem.php?pid=1006 题目的大体意思就是讲,时钟上的时针、分针、秒针都想远离彼此,当三种针间的角度差都至少是给定的D角度时,称为happytime,最后需要输出一天内happytime所占的比例。解决该题的基本思想就是进行12小时即720分钟的happytime的暴力搜索,算出的总秒数除以720*60即最后的比例。 1、最开始拿到这个问题的时候,感觉有点无从下手,因为三种针每秒都在动着,我们可以选择一个标准,就是12时为0度,三种针的角速度都可以求出:时针:1/120 度/秒,分针:0.1. Read More
在进行虚拟机的学习之前,先引入操作系统里边的模块化方法——分层法。 分层法,即操作系统分成若干层,最底层为硬件,最高层为用户接口,高层是以底层为基础的,可以利用底层的功能和服务。第一层能先进行调试而不用考虑其它的部分,因为它只用到了基本的硬件,接着进行第二层调试,如此下来,如果发现某一次调试有错误,那么错误一定在该层,分层法简化了系统的设计和实现。 延续这种分层法的逻辑思想,我们定义了虚拟机。虚拟机的基本思想是单个计算机的硬件抽象为多个虚拟执行部件,从而造成一种“幻觉”,仿佛每个执行环境都是在属于自己的计算机上运行一样,每个进程都有自己的处理器和(虚拟)内存。那么我们为什么要创建虚拟机呢?最. Read More
首先让我们来看看《维基百科》中对系统调用的解释:系统调用,又名系统呼叫,是指运行在使用者空间的程序向操作系统内核请求更高权限的服务。来让我举个例子,看看系统调用和我们的紧密联系。假使现在你要编一个从一个文件读取信息并复制到另一个文件的程序,首先你必须要知道这两个文件的名称从而准确定位,一种比较常见的形式就是程序对用户有所提示,然后得到两个文件名。对于GUI(图形用户界面),这就需要产生很多的系统调用,程序的提示显示在屏幕上就是一种系统调用,当然,如果你有鼠标的话,你完全可以通过它来选择源文件而不必输入名字,显然,伴随着这一过程的仍然是I/O系统调用。得到了两个文件名之后,接下来就是打开输入文件 Read More
今天进行了《操作系统概念》的学习,就现在的计算机体系结构分类有了比较明确地认识。 我们可以根据一台计算机内所拥有的CPU数量来进行分类:单处理器系统,多处理器系统和集群系统。 顾名思义,单处理器系统就是指计算机内的通用处理器数量为1,注意,这里是“通用处理器",当然不是只有一个”处理器“。若只有一个处理器负责全部的工作的话,那么它所承受的压力将是巨大的,所以在”单处理系统“中,也存在各式各样的专用处理器,服务于不同的较为底层的设备,如磁盘(磁盘微处理控制器接受来之CPU的一系列请求,执行其自己的的磁盘队列和调度算法、键盘(键盘微处理器将击键转化为代码传送给CPU)、图形控制器。这些专 Read More
开了操作系统这门课,而且我们老师极力强调作为一名科班出身的程序员,熟悉Linux对我们是极有好处的。 满怀着对Linux的崇敬之意,今天在我的64位WIN7上用VMware装了一个Fedora版本的Linux系统,本来想装cent OS的,结果不知道为啥我的机子不支持,所以就先熟悉一下Fedora了,装好后有一种沸腾的感觉,感觉一扇大门就此对我打开!!!^ _ ^(小激动了,莫见笑) 先了解了Linux的发展历史,总所周知,Linux是一种Unix-like操作系统,而Unix的前身是由贝尔实验室的Ken Thompson利用组译语言写成的,后来在1971年到1973年间由Dennis Ri. Read More
1、产生死锁的四个必要条件并举个例子说明死锁的产生首先我们要明白死锁的定义,死锁是两个或多个进程对资源的需求引起的冲突,可以做个比喻,就像一根独木桥上有两个人迎面走,相遇时,都在等着对方让路,但是谁也不同意退回去让对方先走,导致谁也到不了对岸。两个人就是两个程序,他们都占有桥这个资源不愿放手,于是便一直处于等待状态。死锁的产生有四个必要条件:①互斥使用(资源独占),任意时间内进程对其占有的资源有排他控制性,其它申请的进程必须等待②非剥夺控制,除非是进程自动放弃对资源的占有,否则其他进程无法强制使其释放,即使它处于阻塞态③零散请求,即进程可根据自己的需求在不同的时间发出申请,而不必集中在一起申请 Read More
1、进程有哪三种基本状态,各状态之间如何转换? 进程分为以下三种状态:①运行态:进程获得资源,并占有CPU,处理机执行当前程序。②就绪态:进程等待系统为其分配CPU③阻塞态:指进程因某个事件而暂停运行,如为等待I/O设备或者等待使用某个资源。CPU空闲时,系统将选择一个处于就绪态的程序占有CPU从而进入运行态,而当时间片用完之后,处于运行态的程序就会进入就绪态,而若处于运行态的程序需要等待I/O输入的话,就会进入阻塞态,而当等待完毕之后,阻塞态就会变成就绪态。2、进程的特征有哪些?并发性:可以多个进程并发执行同一段代码动态性:进程存在一定的生命期,有不同状态间的转换独立性:每一个进程都是独立的 Read More
今天拉了一天肚子,快虚脱了,还要忙着复习最后两科,(明天考完就解放了,O(∩_∩)O哈哈~)。只写了分数记录系统输入函数,明天考完试后再添加输出和注释。代码如下: 1 #include"iostream" 2 using namespace std; 3 #include<string> 4 #include<fstream> 5 #include<iomanip> 6 7 struct school 8 { 9 string name; 10 int number; 11 int sores; 12 int male; 13 int.. Read More
今天考完数电回来接着昨天的写,昨天只用伪随机数列探测法建立了哈希表,今天完成查找功能。但是对于两个key值相等的名字,却没找到好的解决方法。仍然存在很大的bug,有时间再修改 。代码如下: 1 #include<iostream> 2 using namespace std; 3 4 #define M 47//取模值为47 5 6 typedef struct Name 7 {//定义结构体储存名字 8 char *py; 9 int key; 10 }*NameList; 11 12 typedef struct HASH 13 { 14 ... Read More