10.10 dos实验
一、 实验目的
(1)认识DOS;
(2)掌握命令解释程序的原理;
(3)掌握简单的DOS调用方法;
(4)掌握C语言编程初步。
二、 实验内容和要求
编写类似于DOS,UNIX的命令行解释程序
(1)自行定义系统提示符
(2)自定义命令集(8-10个)
(3)用户输入HELP以查找命令的帮助
(4)列出命令的功能,区分内部还是外部命令
(5)用户输入QUIT退出
(6)内部命令有dir, cd, md,rd, cls, date, time, ren, copy等。
根据要求,完成设计、编码、测试工作。
三、 实验方法、步骤及结果测试
3.主要程序段及其解释:
#include<stdio.h>
#include<string.h>
void main() /*主函数*/
{
char *b[]={"dir","cd","md","rd","cls","date","time","ren","copy","help", "quit"}; /*指针数组存储关键字*/
int pan(char ch1[],char *j[]);
char a[],*p=a;
printf("欢迎来到dos系统\n");
printf("quit :退出 help:显示所有功能\n");
c1: printf("请输入命令:");
scanf("%s",a);
pan(p,b); /*函数调用*/
if(strcmp(a,b[])!=) /*比较输入的字符串是否quit结束命令*/ goto c1;
else printf("out of work!!\n");
}
int pan(char ch1[],char *j[]) /*子函数*/
{
int i;
for( i=;i<;i++)
if(strcmp(ch1,j[i])==) /*比较输入的字符串与数组的关键字是否相等*/
{
switch(i)
{
case :printf("command name is dir.\nIt's function is list file.\nIt's an internal command.\nVolume in drive K gas no label.\nVolume Serial Number is 60F0-6C24\n\n");break;
case :printf("command name is cd.\nIt's function is change directory.\nIt's an internal command.\n");break;
case :printf("command name is md.\nIt's function is creat a new directory.\nIt's an internal command.\n");break;
case :printf("command name is rd.\nIt's function is delete a directory which is empty.\nIt's an internal command.\n");break;
case :printf("command name is cls.\nIt's function is clean screen\nIt's an internal command.\n");break;
case :printf("command name is date.\nIt's function is show date.\nIt's an internal command.\n");break;
case :printf("command name is time.\nIt's function is shio time.\nIt's an internal command.\n");break;
case :printf("command name is ren.\nIt's function is rename a file.\nIt's an internal command.\n");break;
case :printf("command name is copy.\nIt's function is copy files.\nIt's an internal command.\n");break;
case :printf("dir\tcd\tmd\trd\tcls\ndate\ttime\tren\tcopy\nEnter \" quit\" to quit this program!!\n");break;
case :printf("Thanks for using it,bye!!\n");break;
}
return ;}
printf("No this one!!\nNot a internal commal.\n");return ;
}
四、运行结果截图及分析


当打开运行界面时,就出现
欢迎来到dos系统
quit :退出 help:显示所有功能
请输入命令:
然后当你输入各种命令就会出现相应的字符串
输入help就会出现所有命令
输入quit就会退出界面。
四、实验心得
通过这个简单地编写dos系统的程序,让我更加清楚更更加了解操作系统这门课,虽然程序很简单,功能也很简单,不过对我们来说挺有意义的。最开始学习操作系统这门课的时候,说实在的,对操作系统这个概念很模糊,觉得很抽象。然后后来慢慢学习之后发现挺有趣的,还可以自己编写简单的dos系统,给了我一些信心。
10.10 dos实验的更多相关文章
- MYSQL错误1130:ERROR 1130: Host 10.10.36.115 is not allowed to connect to this MySQL server
解决远程连接mysql错误1130代码的方法 在用远程连接Mysql服务器的数据库,不管怎么弄都是连接不到,错误代码是1130,ERROR 1130: Host 10.10.36.115 is no ...
- 【转】windows环境下安装win8.1+Mac OS X 10.10双系统教程
先要感谢远景论坛里的各位大神们的帖子 没有他们的分享我也不能顺利的装上Mac OS X 10.10! 写这篇随笔主要是为了防止自己遗忘,同时给大家分享下我的经验. 本教程适用于BIOS+MBR分区的 ...
- XCode6.3上使用opencv教程(MacOSX 10.10)
OpenCV 是一个基于(开源)发行的跨平台计算机视觉库,可以运行在Linux.Windows和Mac OS操作系统上.它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Pyth ...
- 多位数每一位个系数:个位num%10;十位num/10%10.......
请输出满足这样条件的五位数. 个位=万位 十位=千位 个位+十位+千位+万位=百位 思路: 1.定义一个要操作的五位数变量num 2.求出每一位个系数 个:num%10 十:num/10%10 百:n ...
- 在Mac OS X Yosemite 10.10.3 中搭建第一个 ASP.NET 5 Web 项目
终于有时间在 Mac 上安装一下 ASP.NET 5,网上有许多教程,但是多数的时间比较早了,版本不是最新,搭着 Build 2015 的春风,我也实践一下 Mac OS X 上的 ASP.NET 5 ...
- 虚拟机(VMware12 pro)安装Mac OS 10.10
下载VMware12pro,Mac OS 10.10.ios,虚拟机破解: 在虚拟机中创建新虚拟机://http://cdnnn.07net01.com/linux/2016/01/1130384.h ...
- [MAC]用beamoff给VMware的Mac OS X 10.10.x加速
MAC OS X 10.10.x Yosemite在VMWare中实在是太慢了,卡出翔!好在高人多,请装beamoff!详见:https://github.com/JasF/beamoff.git C ...
- [MAC]OS X Mavericks 10.9.5 / 10.10.2 VMWare vmdk镜像,解压就能用!
用起来是比VirtualBox好使很多: 1.鼠标很灵敏,不像Vbox那么飘 2.显卡有驱动,VM可以配置显示器尺寸,完美支持网络.语音.视频,直接搞全屏,还能看电影 3.USB设备支持热插拔 4.支 ...
- thinkpad e450 win7黑苹果macos 10.10.5(网/显/声卡驱动)安装成功
首先上图: 过程: 1.使用变色龙安装macos 10.10.5懒人版黑苹果 2.使用Haswell破解内核替换,成功进入系统 2.5.使用Hackintosh Vietnam Tool 1.9.6以 ...
- windows环境下安装win8.1+Mac OS X 10.10双系统教程
首先要感谢远景论坛里的各位大神们的帖子 没有他们的分享我也不能顺利的装上Mac OS X 10.10! 写这篇随笔主要是为了防止自己遗忘,同时给大家分享下我的经验. 本教程适用于BIOS+MBR分区 ...
随机推荐
- 对话框Dialog
QMainWindow QMainWindow是 Qt 框架带来的一个预定义好的主窗口类. 主窗口,就是一个普通意义上的应用程序(不是指游戏之类的那种)最顶层的窗口.通常是由一个标题栏,一个菜单栏,若 ...
- Extjs中自定义事件
//Ext中所谓的响应事件,响应的主要是组件中已经定义的事件(通过看api各组件的events可以找到) //主要作用就是利用on调用各组件的事件处理函数,然后在函数中作用户想要的操作 ...
- HDU5002 Tree(LCT)
今天做了一道LCT模板题之后忽然间好像记起来LCT的模板怎么用了,于是就把上次网络赛的一道LCT补一下.典型的删边,加边操作,还有路径加和路径set为一个数.维护的是路径第二大以及它有多少个,后来想想 ...
- 【剑指offer】和为S的连续整数序列
找到所有和为S的连续整数序列,序列长度>=2 我的思路:数学法,限定首元素范围,计算序列长度. 书上解法:用small和big两个游标记录序列的开始和结束位置,调整游标. 我的解法: /* 直 ...
- PATH环境变量和CLASSPATH环境变量详解
大凡装过JDK的人都知道要安装完成后要设置环境变量,可是为什么要设置环境变量呢?环境变量有什么作用? 1)PATH详解: 计算机安装JDK之后,输入“javac”“java”之类的命令是不能马上被计算 ...
- POJ 1947 Rebuilding Roads(树形DP)
题目链接 题意 : 给你一棵树,问你至少断掉几条边能够得到有p个点的子树. 思路 : dp[i][j]代表的是以i为根的子树有j个节点.dp[u][i] = dp[u][j]+dp[son][i-j] ...
- Js之DOM(一)
----------------------------------------------------------------------------------------------第一部分 D ...
- C#中毫米与像素的换算方法
C#中以像素作为尺寸单位,像素是一种相对的尺寸概念,与毫米的转换与当前显示器的分辨率有关.在不同分辨率下转换的系数不同. 借助GDI可以完成毫米至像素的转换. public static double ...
- lintcode: 最长连续序列
最长连续序列 给定一个未排序的整数数组,找出最长连续序列的长度. 说明 要求你的算法复杂度为O(n) 样例 给出数组[100, 4, 200, 1, 3, 2],这个最长的连续序列是 [1, 2, 3 ...
- Linux系统新手学习的11点建议
随着Linux应用的扩展许多朋友开始接触Linux,根据学习Windwos的经验往往有一些茫然的感觉:不知从何处开始学起.这里介绍学习Linux的一些建议. 一.从基础开始:常常有些朋友在Linux论 ...