【www.guakaob.com--自考】
计算机软件基础实践心得篇一
《计算机软件基础实践报告》
计算机软件实践报告
题 目 处理机调度
专 业 电子工程
班 级 电子1班
学生姓名 钟涛 指导教师 冯建群
二0一四 年 十 月
实验名称:处理机调度
一 实验内容
选择一个调度算法,实现处理机调度。
二 实验目的
多道系统中,当就绪进程数大于处理机数时,须按照某种策略决定哪些进程优先占用处理机。本实验模拟实现处理机调度,以加深了解处理机调度的工作。
三 实验题目
设计一个按优先权调度和时间片轮转算法实现处理机调度的程序。
四 基本思想
先选择时间片的个数和每个时间片需要的时间,正在运行的进程每运行一秒其优先权数目加一,即其优先权减小。每个时间片运行结束后,选择进入时间片进程优先权数目最小的进程,开始下一个时间片的运行。如果有进程运行结束,则离开,再在就绪队列中选择优先权数目最小的进程进入。在运行期间,如果有新的进程来到,按优先权大小放入就绪队列中。
五 算法分析
定义一个结构体,此包含了PCB的信息:
struct PCB
{
char PID[5]; /*进程名*/
int needtime; /*要求运行的时间*/
int cputime; /*已运行时间*/
int priority; /*优先权(越小越高)*/
int starttime; /*进入就绪队列的时间*/
int overtime; /*运行完成的时间*/
int state; /*状态:1就绪2运行3完成*/
struct PCB *next;
};
子函数struct PCB *create(int num,int n)用来建立一个按优先级大小排列的就绪进程链表和一个按时间先后循序排列的将进入就绪进程的链表。
main()函数中用一while循环输出进入时间片的进程状态。
六 流程图
七 算法描述
#define NULL 0
#define LEN sizeof(struct PCB)
#include"stdio.h"
#include"stdlib.h"
struct PCB
{
char PID[5]; /*进程名*/
int needtime; /*要求运行的时间*/
int cputime; /*已运行时间*/
int priority; /*优先权(越小越高)*/
int starttime; /*进入就绪队列的时间*/
int overtime; /*运行完成的时间*/
int state; /*状态:1就绪2运行3完成*/
struct PCB *next;
};
struct PCB *create(int num,int n)
/*创建进程,并将进程按优先级顺序插入队列中*/
{
struct PCB *head,*p,*p1,*p2;
int i;
head=NULL; /*头指针指零*/
for(i=1;i<=num;i++) /*循环建立所有进程*/
{
printf("请输入第%d个进程的信息\n",i);
p=(struct PCB *)malloc(LEN); /*开辟一个空间*/
printf("进程名:"); /*输入进程名*/
scanf("%s",p->PID);
printf("要求运行的时间:"); /*输入要运行的时间*/
scanf("%d",&p->needtime);
p->cputime=0; /*占用处理机的时间赋为零*/
printf("优先权:"); /*输入优先权*/
scanf("%d",&p->priority);
if(n==1)
p->starttime=0; /*进入就绪队列的时间赋为零*/ else
{
printf("进入就绪队列时间:"); /*输入进入就绪队列的时间*/ scanf("%d",&p->starttime);
}
p->overtime=-1; /*运行没有结束所以运行完成的时间赋为-1*/
p->state=1; /*状态赋为就绪状态*/
p1=head; /*p1指针指向头指针*/
if(head==NULL) /*如果头指针为零将头指针指向新建立的进程*/ {head=p;head->next=NULL;}
else /*头指针不为零的情况*/
{
if(n==1)
while(p1!=NULL&&p->priority>p1->priority) /*查找插入点*/
{p2=p1;
p1=p1->next;
}
else
while(p1!=NULL&&p->starttime>p1->starttime) /*查找插入点*/
{p2=p1;
p1=p1->next;
}
if(head==p1) /*优先权的值最小作为表头*/
{p->next=head;p2=head=p;}
else /*否则的话插入*/
{p2->next=p;p->next=p1;}
}
}
return(head);
}
void main()
{
char now[5];
int cho,num,num1,timepiece,time,i,j,k,flag,choo,clock=0;
struct PCB *head,*head1,*over,*later,*l,*l1,*l2,*p,*p0,*p1,*p2,*q,*q1,*q2,*q3; over=NULL;
printf("初始化进程...\n");
printf("输入总的就绪进程数:");
scanf("%d",&num);
head=create(num,1); /*建立就绪进程的链表*/
printf("输入将会就绪的进程数:");
scanf("%d",&num1); /*建立将会进入就绪进程的链表*/
later=create(num1,2);
printf("cpu是否开始运行:1是 2不是--");
scanf("%d",&cho);
if(cho==1) /*处理机开始进行调度*/
{
printf("现在的时间是:");
scanf("%s",now);
计算机软件基础实践心得篇二
《计算机软件基础实验报告》
《计算机软件基础》
实验报告
姓名:
学号: 班级: 专业: 学院:
2013年12月
实验一 线性表的插入和删除
一、实验目的
1. 熟悉C++上机环境;
2. 掌握线性表的基本操作:查找、插入、删除等运算在链接存储结构上的运算。
二、实验内容
【任务一】 阅读理解
阅读后面的程序,并将其输入到计算机中,调试成功,运算出结果。这个程序中我们创建了一个整数类型的升序单,演示了单链表的创建、输出和删除操作。
【任务二】 完善功能
构造函数node *insert (node *head,int num),实现把一个节点插入链表,仍保持链表上各节点的升序关系,并在主函数中完成对你所添加函数的测试。
三、算法描述
建立含有若干个元素的升序单链表,对其进行插入、删除等操作,并将结果在屏幕上输出。 // 实验一线性表
#include "stdafx.h"
const int SIZE0=2;
const int STEP=1;
struct List{
int *A,len,size; List(){ A=(int *)malloc(SIZE0*sizeof(int)); if(!A)exit(1); len=0; size=SIZE0; } ~List(){ delete[size]A; } int GetLen(); void Output(); int Insert(int loc,int x); int Delete(int loc,int &y); int Geti(int loc,int &y); List(int *p,int n); void StraightInsertSort(); void BinaryInsertSort(); void BubbleSort(); int Patation(int low,int up); void QuickSort(int low,int high); void SelectSort(); void Shift_down(int heapsize,int index); void DeleteNodeofHeap(int heapsize,int index); void createHeap(); - 1 -
void HeapSort(); void ShellInsert(int dk); void ShellSort(int *delta,int t);
};
List::List(int *p,int n)
{
A=new int[n];
for(int i=0;i<n;i++)A[i]=p[i];
len=size=n;
};
//简单选择排序
void List::SelectSort()
{
}
//将当前A[0]~A[heapsize-1]构成的完全二叉树中下标为index的结点A[index] //在其子树T中进行下移,使T成为大头堆 O(log2(heapsize))
void List::Shift_down(int heapsize,int index)//大头堆
{
int max,temp,i=index,j=2*i+1;
while(j<heapsize)
{
} } max=j; if(j+1<heapsize && A[j+1]>A[j]) max=j+1; //左右子树均存在 if(A[i]<A[max]) { temp=A[i];A[i]=A[max];A[max]=temp; i=max;j=2*i+1; int i,j,temp,max; for(i=len-1;i>0;i--) { max=0; for(j=1;j<=i;j++) } if(A[j]>A[max])max=j; temp=A[i];A[i]=A[max];A[max]=temp; cout<<"第"<<len-i<<"趟的结果为...\n"; this->Output();cout<<endl; } else break;
//删除当前A[0]~A[heapsize-1]构成的大头堆中下标为index的结点A[index], //将其与A[heapsize-1]交换,并将A[0]~A[heapsize-2]调整为大头堆
- 2 -
void List::DeleteNodeofHeap(int heapsize,int index)
{
};
void List::createHeap() //生成大头堆 O(len)
{
int i,j,max,temp; for(i=len/2-1;i>=0;i--) { } max=j=2*i+1; if(j+1<len && A[j]<A[j+1])max=j+1; if(A[i]<A[max]) { temp=A[i];A[i]=A[max];A[max]=temp;} int temp=A[index]; A[index]=A[heapsize-1]; A[heapsize-1]=temp; Shift_down(heapsize-1,index); //cout<<"delete...\n"; //this->Output();cout<<endl;
//cout<<"createHeap()...\n";
//this->Output();cout<<endl;
};
//堆排序 O(len*log2(len))
void List::HeapSort()
{
int i;
createHeap();
for(i=len;i>1;i--)DeleteNodeofHeap(i,0);
};
void List::ShellInsert(int dk)//升序
{
//
int i,j,temp; for(i=dk;i<len;i++) { temp=A[i]; for(j=i-dk;j>=0;j=j-dk) { if(A[j]>temp)A[j+dk]=A[j]; else break; }; A[j+dk]=temp; }; this->Output(); - 3 -
// cout<<endl;
};
void List::ShellSort(int *delta,int t)
{
int k;
for(k=0;k<t;k++)ShellInsert(delta[k]);
};
int List::Patation(int low,int up)//划分,升序
{
int pivot,mid,temp;
//先选择枢轴 if(up-low>1) { mid=(low+up)/2; if(A[mid]<A[up] && A[mid]>A[low] || A[mid]<A[low] && A[mid]>A[up]) {pivot=A[low];A[low]=A[mid];A[mid]=pivot;} else if(A[up]<A[mid] && A[up]>A[low] || A[up]<A[low] && A[up]>A[mid]) {pivot=A[low];A[low]=A[up];A[up]=pivot;} }; //========== temp=A[low]; //cout<<"temp="<<temp<<endl; while(up>low) { while(up>low) { if(A[up]>=temp) up--; else {A[low]=A[up];break;} }; while(up>low) { if(A[low]<=temp)low++; else {A[up]=A[low];break;} }; }; //cout<<"up="<<up<<"low="<<low<<endl; A[up]=temp; //this->Output();
return(up);
}
void List::QuickSort(int low,int high)
{
- 4 -
计算机软件基础实践心得篇三
《计算机软件基础实验报告》
石 家 庄 铁 道 大 学
实 验 报 告
课程名称 计算机软件基础 建筑与艺术 学院(系) 1102-1 班
试验者姓名 学号 实验日期 年月日
评分 教师签名
1
2
3
4
5
计算机软件基础实践心得篇四
《计算机软件基础实验报告》
课程名称:计算机软件基础
实验项目:
1.最简单的C程序
2.C程序的选择结构
3.C程序的循环结构
4.C程序的函数
5.C程序的指针
6.数据结构初步
实验一、最简单的C程序
一、 实验目的
(1)理解常用运算符的意义。
(2)掌握c 语言表达是的运算规则。
二、实际设备及器材
计算机
三、实验内容
(1)整数除的危险性
分析三个表达式的值,再设计程序测试,进行比较和分析。
int a=5,b=7,c=100,d,e,f;
d=a/b*c;
e=a*c/b;
f=c/b*a;
d=0,e=71,f=70.
程序测试:
#include<stdio.h>
int main()
{
int a=5,b=7,c=100,d,e,f;
d=a/b*c;
e=a*c/b;
f=c/b*a;
printf("% d,% d,%d\n",d,e,f);
}
结果:
(1) 分析下面程序
是比较x++与++x之间的区别。
例如:
#include<stdio.h>
int main()
{
int a=5,b=8;
printf("a++=%d\n",a++);
printf("a=%d\n",a);
printf("++b=%d\n",++b);
printf("b=%d\ny",b);
} 运行结果:
由上述程序可以看出,x++是先使用x在使x+1,而++x是先使x+1在使用x。
(2) 分析下列表达式的值
测试程序:
#include<stdio.h>
int main()
{
int a,b,c,d,e,f;
scanf("a=%d,b=%d\n",a,b);
c=b+a+++a;
d=b+(a++)+a;
e=b+a+(++a);
f=b+a+++a++;
printf("c=%,d=%d,e=%d,f=%d\n",c,d,e,f);
}
四、思考题
1. 整数除的危险性
2.C语言的运算规则
实验二、C语言选择结构
一、实验目的
(1)掌握分支程序的基本结构。
(2)掌握分支程序的测试与调试方法。
二、实际设备及器材
计算机
三、实验内容
(1)观察图3.1所示分支算法。
图见书
要求:编写一个 C语言程序,要求使用上述分支结构,并使其能接受由
键盘输入的a,b,x。
编写程序如下:
#include<stdio.h>
main()
{
int a,b,x;
scanf("%d,%d,%d",&a,&b,&x);
if(a>1 && b==0)
x=x*a;
if(a==2 || x>1)
x=x+2;
printf("%d,%d,%d",a,b,x);
} 运行结果:能够达到要求!
(2)语句覆盖测试
设计一组a,b,x,是程序中的所有语句都能至少执行一遍,目的是测试这些语句能否正确执行。要求这组数据量最少。
编写程序如下:
#include<stdio.h>
main()
{
int a,b,x;
scanf("%d,%d,%d",&a,&b,&x);
a=a+1;
b=a+b;
x=a*b;
printf("%d,%d,%d",a,b,x);
} 运行结果:每个语句都能够正常运行!
(3)分支覆盖测试
设计一组a,b,x,使程序中的每个分支都能至少执行一遍,目的是测试这些分支能否正确执行。要求这组数据量最少。
编写程序如下:、
#include<stdio.h>
main()
{
int a,b,x;
scanf("%d,%d,%d",&a,&b,&x);
if(a>1 && b==0)
x=x*a;
if(a==2 || x>1)
x=x+2;
printf("%d,%d,%d",a,b,x);
} 运行结果:每个分支能够正确执行!
(2) 条件覆盖测试
设计一组a,b,x,使程序中的每个条件都能至少执行一遍,目的是测试这些条件能否正确执行。要求这组数据量最少。
编写程序如下:
#include<stdio.h>
main()
{
int a,b,x;
scanf("%d,%d,%d",&a,&b,&x);
if(a>1 && b==0)
x=x*a;
if(a==2 || x>1)
x=x+2;
printf("%d,%d,%d",a,b,x);
} 运行结果:每个条件都正确执行了!
(5)修改上面的程序以使操作者知道这些语句、分支或条件已被执行 提示:在恰当的位置插入输出语句。
修改程序如下:
#include<stdio.h>
main()
{
int a,b,x;
scanf("%d,%d,%d",&a,&b,&x);
if(a>1 && b==0)
x=x*a;
printf("%d\n",x);
if(a==2 || x>1)
x=x+2;
printf("%d\n",x);
printf("%d,%d,%d",a,b,x);
} 运行结果:由运行结果知这些语句、分支或条件已被执行!
(3) 进一步的测试问题
从键盘输入三个数,用以代表3条线段的长度。先编写一个程序,判断由着3条线段所组成的三角形的类型——不等边三角形、等腰三角形、等边三角形、直角三角形或不能构成三角形。画出这个问题的流程图,设计程序,并未该程序分别设计语句覆盖、分支覆盖、条件覆盖的测试用例。为检测测试用例的好坏,可人为的设置一些错误。
编写程序如下:
#include<stdio.h>
main()
{
int a,b,c,max,m,x,y,z;
scanf("%d,%d,%d",&a,&b,&c);
max=b;
if(a>=max) max=a;
if(c>=max) {max=c;}
m=a+b+c-max;
x=a^2+b^2;
y=a^2+c^2;
z=b^2+c^2;
if((m>max)&&(a!=0) && (b!=0) && (c!=0))
{
if((x==(c^2))||(y==(b^2))||(z==(a^2)))
printf("此三角形为直角三角形!");
if(a==b==c)
printf("此三角形为等边三角形!");
计算机软件基础实践心得篇五
《计算机软件基础上机实验报告》
计算机软件技术基础实验报告(一)
班级通信1001 姓名 吴焱锋 学号 2010001263 实验时间 2010-10-14 成绩_______
实验名称:线性表的插入与删除
实验程序:
#include <stdio.h>
#include <stdlib.h>
#define maxsize 100
void creat_sqlist(int list[],int *p_n) //定义创建线性表函数
{
int i;
printf("请输入list表的长度:\n");
scanf("%d",p_n);
printf("请输入%d个数据:\n",*p_n);
for(i=0;i<*p_n;i++)
scanf("%d",&list[i]);
}
void print_sqlist(int list[],int n)
{
int i;
printf("表内的数据为: ");
for(i=0;i<n;i++)
printf("%d ",list[i]);
printf("\n");
}
int sq_insert(int list[],int *p_n,int i,int x)
{
int j;
if(i<0||i>*p_n) return(1);
if(*p_n==maxsize) return(2);
for(j=*p_n;j>i;j--)
list[j]=list[j-1];
list[i]=x;
(*p_n)++;
return 0;
}
int sq_delete(int list[],int *p_n,int i)
{
int j;
if(i<0||i>=*p_n)
return(1);
for(j=i+1;j<*p_n;j++)
list[j-1]=list[j];
(*p_n)--; //定义输出线性表函数 //定义插入函数 //定义删除函数
return 0;
}
int main(void)
{
int list[maxsize],n=0,i,x;
creat_sqlist(list,&n); //调用创建线性表函数
print_sqlist(list,n); //调用输出线性表函数
printf("请输入插入数据的位置以及待插入的数据:\n");
scanf("%d%d",&i,&x);
sq_insert(list,&n,i,x); //调用插入函数
print_sqlist(list,n);
printf("请输入删除数据的位置:\n");
scanf("%d",&i);
sq_delete(list,&n,i); //调用删除函数
print_sqlist(list,n);
return 0;
}
实验结果:
班级通信1001 姓名 吴焱锋 学号 2010001263 实验时间 2010-10-14 成绩_______
实验名称:入栈和出栈
实验程序:
#include<stdio.h>
int main()
{
int s[15]={12,2,9,3,15,5,11,4,7},x=88,i,b=9,y;
int *top=&b;
printf("栈内元素为:\n"); //输出栈内元素
for(i=0;i<*top;i++)
printf("%d\t",s[i]);
printf("\n");
if(*top==15) //栈空间已满,上溢错误
{
printf("stack-overflow\n");
return;
}
*top=*top+1; //栈顶指针进一
s[*top-1]=x; //将新元素x插入到栈顶指针位置
printf("栈内元素为:\n"); //输出栈内元素
for(i=0;i<*top;i++)
printf("%d\t",s[i]);
printf("\n");
y=s[*top-1];
*top=*top-1;
printf("栈内元素为:\n"); //输出栈内元素
for(i=0;i<*top;i++)
printf("%d\t",s[i]);
printf("\n");
printf("退出的元素为:%d\n",y);
return;
}
班级通信1001 姓名 吴焱锋 学号 2010001263 实验时间 2010-10-21 成绩_______
实验名称:下三角矩阵的压缩存储
实验程序:
#include<stdio.h>
int main()
{
int a[15]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
int i,j;
for(i=1;i<=5;i++)
for(j=1;j<=5;j++)
{
if (i>=j)
printf("%d\t",a[i*(i-1)/2+j-1]); //一维数组中第i*(i-1)/2+j-1个数输出
为矩阵中的元素a(ij)
else
printf("%d\t",0);
if (j==5)
printf("\n");
}
return 0;
}
实验结果:
班级通信1001 姓名 吴焱锋 学号 2010001263 实验时间 2010-10-21 成绩_______
实验名称:对分搜索
实验程序:
#include <stdlib.h>
#include <stdio.h>
int bserch(int*v,int n,int x)
{
int i,j,k;
i=1;j=n;
while(i<=j)
{
k=(i+j)/2;
if(v[k-1]==x)
return(k);
if(v[k-1]>x) j=k-1;
else i=k+1;
}
return(-1);
}
int main()
{
int a[11]={1,2,3,4,5,6,7,8,9,10,11};
int p;
p=bserch(a,11,6);
printf("%d\n",p);
}
计算机软件基础实践心得篇六
《计算机软件基础实验报告》
计算机软件基础实验报告
学院:
班级:
学号:
姓名:
已知一个一维数组
Date{3,8,1,5,7,10}
(1) 求X=5这个数位于数组的第几个位置? 解:#include<stdio.h>
int main()
{
int i,m=0;
int a[6]={3,8,1,5,7,10};
printf("原数列为:");
for(i=0;i<6;i++)
printf("%d ",a[i]);
for(i=0;i<6;i++)
if(a[i]==5)
m=i;
printf("\n");
printf("x=5的位置为%d",m+1);
printf("\n");
return 0;
}
(2) 用冒泡法将原数组从小到大排列。 解:int main()
{
int i,j,b,p=1,n;
int a[6]={3,8,1,5,7,10};
for(i=1;i<6;i++)
for(j=0;j<6-i;j++)
{
if(a[j]>a[j+1])
{
n=a[j];
a[j]=a[j+1];
a[j+1]=n;
}
printf("第%d次排序为:",p++);
for(b=0;b<6;b++){ printf("%d",a[b]); }
printf("\n");
}
printf("排序过的数列为:"); for(i=0;i<6;i++)
printf("%d ",a[i]); printf("\n");
return 0;
}
计算机软件基础实践心得篇七
《计算机软件基础实验报告》
计算机软件基础(二)
实验报告
实验一
DOS和WINDOWS95系统的基本操作
一、实验要求和目的
1.熟悉MS-DOS环境。 2.掌握常用DOS命令的基本操作。
二、软硬件环境
1.硬件环境:微机CPU 486以上,500MB以上硬盘,32M以上内存; 2.软件环境:装有MASM 5.0、DEBUG、LINK和EDIT等应用程序。
三、实验涉及的主要知识单元
DOS的功能和组成:
DOS的主要功能是管理磁盘文件,管理显示器、键盘、磁盘驱动器、打印机等各种设备,负责监视计算机及执行的处理过程,以便有效地利用系统资源,方便用户使用。从内部来看,DOS是完成各种功能的一组程序。版本不同,程序的数日也不同,但组成DOS的最主要的程序有四个,即命令处理模块(COMMAND.COM)、磁盘操作管理模块(MS-DOS.SYS)、输入输出接口模块(10.SYS)和一个引导程序。存放DOS程序模块的磁盘称为DOS系统盘。
DOS提供了多条操作命令,对一般用户最常用的是有关文件操作、文件目录操作、磁盘操作和若干系统命令。
DOS的人机界面采用的是命令行方式。
DOS的启动:DOS的启动就是从系统盘上把DOS装入内存并执行的过程。 启动MS-DOS应用程序,有三种方法:
第一种方法:从“开始”菜单启动MS-DOS操作系统。步骤为:
1.在Windows XP界面状态,单击“开始”|“运行”命令,如图2-1-1所示。
图1-1 “运行”命令条
2.在“运行”对话框中键入“cmd”,如图2-1-2所示,单击“确定”按钮。
图1-2 “运行”对话框
3.操作系统界面随即进入MS-DOS模式。如图2-1-3所示。
图 1-3 “运行”对话框
第二种方法:单击“开始”|“程序”|“附件”|“命令提示符”命令即可启动MS-DOS操作系统。
第三种方法:在“我的电脑”或“资源管理器”中,一级一级打开驱动器和文件夹,直至找到需要运行的MS-DOS操作系统,双击启动程序文件。 常用的DOS命令详解
1、 列目录命令DIR
格式:DIR [盘符][路径][文件名] [/P][/W][/S][/A]
说明:(1)[盘符][路径][文件名] 用于指定需要查看的目录项,如果省略,则查看当前盘当前目录。此命令文件名参数中允许使用通配符;
(2)/P参数表示:显示满一屏暂停显示,然后击任意键继续;
/W参数表示:多列显示,每行5个,只显示出文件名和扩展名; /S参数表示:显示出指定目录中的各文件项及其子目录中的文件;
/A参数表示:按文件属性来选择显示
注:dos中通配符由“*”、“?”,其中“*”代表任意长度的字符串,“?”代表任意的一位字符。
例如:
dir /a 列当前目录所有文件(含隐含及系统文件)
dir /ah 列隐含文件(包含子目录(隐含的) dir /a-h
dir /as 列系统文件 dir /a-s
dir /ad 列子目录 dir /a-d
dir /o 按字母顺序
dir /B 只显示文件名与扩展名
2、 建立子目录命令MD
格式:MD [盘符][路径]<新子目录名>
说明:(1)[盘符][路径]为可选项,表示指定的盘符和路径,缺省该项时表示在当前驱动器、当前目录下建立子目录。 新子目录名由用户任意指定,但书写格式必须符合文件名的书写规定。
(2)一个MD命令只能建一个子目录,建立多个子目录必须多次使用MD命令。 必须先建立父目录(上一级目录)才能建立子目录(下一级目录)。 路径既可以是绝对路径,也可以是相对路径。路径总长度不能超过63个字符(包括 “\”)。
(3)如发现要建立的子目录已存在或磁盘已满则给出提示: Unable to create directory
3、 改变当前目录命令CD
格式:CD [盘符][路径]
例如:
cd A:\ 将A盘的当前目录改为根目录
cd A:\xx 将A盘的当前目录改为子目录xx下
cd ..\98 先返回父目录,再进入父目录下的98子目录
cd ..返回到父目录(注:"."代表当前目录 ".."代表父目录)
cd\98 进入根目录下的98子目录
4、 删除子目录命令RD
格式:RD [盘符][路径]<被删子目录>
说明:RD命令只能删除空目录
5、 文件内容显示命令TYPE
格式:TYPE [盘符][路径]<文件名>
说明:(1)文件如有扩展名,必须写入命令中;
(2)文件名中不允许使用通配符;
(3)只能显示用ASCII组成的文件,显示其他类型文件,其结果不能辨认。通常情况下,扩展名为.TXT、.BAT、.SYS的文件是由ASCII码组成的。
6、 删除文件命令DEL
格式:DEL [盘符][路径]<文件名>
说明:省去盘符、路径时,在当前目录下查找要删除的文件。 本命令不能删除隐含文件、子目录。允许使用通配符,但应十分谨慎,以免错删了有用的文件。
7、 文件复制命令COPY
格式(1):文件复制:COPY [/A][/B][源盘符][路径]<源文件名>[/A][/B][目标盘符][路径]<目标文件名>[/A][/B][/V]
说明:本命令格式把源文件的内容复制到目标文件。 缺省目标文件名,表示与源文件名相同。 源文件和目标文件在同一目录下时,不能同名。复制可在系统设备之间进行。 /A参数表示按文本文件方式复制。/B参数表示按二进制文件方式复制。/A,/B参数不能同时使用。/A或/B参数可放在文件名前或后,其作用域是遇到另一个/A或/B参数位置。通常/A或/B参数很少使用,在复制文件时,缺省值为/A。 /V参数对目标文件作校验检查。所有文件若有扩展名时,命令中必须给出。
格式(2):文件合并:COPY [/A][/B][源盘符][路径]<源文件名1>[/A][/B]+[源盘符][路径]<源文件名2>[/A][/B][+...][目标盘符][路径]<目标文件名>[/A][/B][/V]
说明:本命令格式把两个或两个以上的源文件合并成一个目标文件. 各参数说明与复制文件相同. 目标文件名缺省时,用源文件1的名字作目标文件名. /A,/B参数省略时,约定为/A.
例如:
copy w1.wps con/b 可以将wps文件在屏幕上显示,而不必进入wps状态(注:
"prn "为打印机, "null"为空设备,con 为显示器)
copy ..\98 将父目录下的98子目录下的所有文件全拷到当前子目录 copy .\97 当当前目录下的97子目录下文件全部拷到当前目录
copy . c:\ 将当前目录下的所有文件拷到c盘根目录(注:. 意味着 *.* 文件) copy nul a.abc 将a.abc 文件清空(文件长度改为0)
copy 文件名+con 向文本文件中追加命令或内容
copy con abc.txt 创建文本文件abc(注:在当前状态下输入文本文件内容,输
入完成后按F6存盘退出或按组合键Ctrl+Z保存且退出)
copy con prn 检测打印机的开关
8、 文件更名命令REN
格式:REN [盘符][路径]<旧文件名><新文件名>
说明:本命令并不生成新的目标文件,只是把原有文件更名. 命令格式中<新文件名>之前不能出现盘符、路径。 旧文件名前的盘符、路径缺省时,在当前目录下查找要更名的文件。 文件如有扩展名,必须在命令中给出。 允许使用通配符,但新旧文件名中的通配符必须匹配。
9、 清除屏幕命令CLS
格式:CLS
四、实验内容与步骤
对目录的操作:
1、显示或改变当前目录。
作业1:显示当前目录文件清单。
操作命令:
输入命令后的屏幕截图:
注意:DIR命令是最常用的DOS命令之一,通过与一些参数的联合使用,可以根据要求显示相应的结果。继续下面的练习,理解各条命令的含义:
(1)dir/p (2)dir/w (3)dir/*.doc (4)DIR/*.*
2、改变当前目录
作业2:
(1)从当前目录返回上一级目录。
操作命令:
输入命令后的屏幕截图:
(2)从当前目录返回根目录:
操作命令:
输入命令后的屏幕截图:
(3)改变当前目录转至C:\windows子目录。
操作提示:
输入命令后的屏幕截图:
3、建立/删除子目录。
作业3:
(1)在C盘根目录下,建立一个名为“APPLE”子目录。
操作命令:
输入命令后的屏幕截图:
(2)删除“APPLE”子目录。
操作命令:
输入命令后的屏幕截图:
注意:* 删除目录时,其下不得再有子目录和文件,既目录为空。
* 根目录不能被删除。
对文件的操作
1、建立新文件。
作业4:在“APPLE”子目录下,使用COPY命令建立文本文件。
操作步骤:
(1)使用COPY建立一个文本文件。
操作命令:
输入命令后的屏幕截图:
2、合并文件
作业5:使用COPY命令合并以上两个文件,新文件命名为“THREE.TXT”,使用TYPE命令查看文件的正文内容。
操作命令:
输入命令后的屏幕截图:
3、复制文件
作业6:复制文件THREE.TXT至D盘根目录下。
操作命令:
输入命令后的屏幕截图:
4、更改文件名
作业7:使用REN命令将文件“THREE.TXT”改名为“FOUR.TXT”。
操作命令:
输入命令后的屏幕截图:
5、删除文件
作业8:删除THREE.TXT文件
操作命令:
输入命令后的屏幕截图:
五、思考题
1当一个进程独占处理器顺序执行时,具有两个特性是什么?
封闭性和再可现性。
2简述操作系统在计算机系统中的作用?
操作系统在计算机系统占有核心地位,可以说一台没有安装操作系统的计算机,就像是一个没有了灵魂的躯体一样毫无用处。它的主要作用是:用于连接用户和计算机内部各个硬件间的一座桥梁。
计算机软件基础实践心得篇八
《计算机软件基础二实践报告》
计算机软件基础二实践报告
共计五个实践报告,请同学们认真抄好,在12月25号之前由班长收集起交到我办公室(J021004),并附班级自考实践电子名单。
实践报告一:
实践报告二
实践报告三
计算机软件基础实践心得篇九
《计算机软件基础实验报告》
北京联合大学
实验报告
课程(项目)名称: 顺序表的实现和应用
学 院: 专 业:
班 级: 学 号:
姓 名: 成 绩:
2011年 月 日
一、任务与目的
1.实验目的
(1)掌握顺序表的概念。
(2)熟练掌握线性表的顺序存储结构。
(3)熟练掌握线性表在顺序存储结构上的运算。
(4)了解测试的思想。
2.实验内容
(1)编写程序实现顺序表的基本操作。这些操作包括:
a)初始化顺序表操作,SList InitSList();
b)创建原始表操作,void CreateSList(SeqList &L);该操作要求输入一批原始数据,建立初始的线性表。如,输入 1 3 5 7 9 -1(回车),-1表示输入结束。则生成如下的顺序表。
c)和顺序表的长度。
d)求顺序表长度操作,int GetLength(SeqList &L);
e)获得顺序表第i个元素的操作,DataType GetData(SeqList &L, int i);
f)在位置i处添加元素操作,int InsertSList(SeqList &L, int i, DataType x); g)删除操作位置i处元素操作,int DeleteSList (SeqList &L, int i)
说明:关键字 typedef :是C语言中用来声明自定义数据类型,配合各种原有数据类型来达到简化编程的目的的类型定义关键字。
如: typedef 自定义基本数据类型的语句,
typedef int datatype ; /*该语句表示将int 类型自定义为datatype类型*/
int a ; datatype a; /*两个语句等价*/
如: typedef 自定义结构体类型的语句,
typedef struct SList
{
DataType data[MAXSIZE];
int last;
}SeqList;
struct SList L; 和 SeqList L; 两语句完全等价。方便了结构体类型的使用。 书上的例子将大多数使用了typedef,请大家理解其用法。
文件后面给出框架代码,供参考。
(2)利用顺序表的基本操作完成下面功能
a)己知顺序表中的元素非递减有序排列,编写算法删除顺序表中值相同的多余的元素。例如:删除前顺序表为:1 3 3 5 6 7 7 8 9 9
删除后顺序表为:1 3 5 6 7 8 9
b)编写算法,在非递减有序的顺序表中,插入一个给定的元素,插入后该顺序表仍然递增有序。
有序表中的数据为:12,16,24,33,45,66,68,89
需要进行测试的插入数据分别是:9,13,25,33,88,91
二、条件
Visual C++6.0
三、内容与步骤
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define max 100
#define DataType int
typedef struct
{
DataType data[max];
int last;
}SeqList;
SeqList InitSList()
{
}
SeqList Input(SeqList L)
{
}
SeqList L; L.last=-1; return L; L.last=-1; int a=0; printf("\n请输入第%d个数据(输入-1结束输入):",L.last+2); scanf("%d",&a); while(a!=-1) { L.data[L.last+1]=a; printf("第%d个数据为:%d\n",L.last+2,L.data[L.last+1]); L.last++; printf("\n请输入第%d个数据(输入-1结束输入):",L.last+2); scanf("%d",&a); } return L;
void Display(SeqList L)
{
int i; char c; for(i=0;i<L.last+1;i++) { printf("第%d个数据:\t",i+1); printf("%d\n",L.data[i]); } printf("\n按任意键返回上层"); scanf("%c",&c); scanf("%c",&c);
}
int GetLenght(SeqList L)
{
}
int GetData(SeqList L)
{
char c; printf("当前顺序表长度为:"); printf("%d\n\n",L.last+1); printf("\n按任意键返回上层"); scanf("%c",&c); scanf("%c",&c); return L.last+1; int a; char b; printf("要获取第几个元素?(输入-1返回上层)"); scanf("%d",&a); while(a!=-1) { if(a<1||a>L.last+1) { } else printf("输入错误!请从新输入(输入-1返回上层):"); scanf("%d",&a);
} } } printf("元素获取成功!\n\n"); printf("输入任意键返回上层"); scanf("%c",&b); scanf("%c",&b); return L.data[a-1];
SeqList Delete(SeqList L)
{
int a,i; char b,p; for(i=0;i<L.last+1;i++) { } printf("第%d个数据:\t",i+1); printf("%d\n",L.data[i]); printf("要删除第几个元素?(输入-1返回上层)"); scanf("%d",&a); while(a!=-1) { if(a<1||a>L.last+1) { } else { printf("是否删除第%d个元素%d? Y/N\n\n",a,L.data[a-1]); scanf("%c",&p); scanf("%c",&p); while(p!='Y'&&p!='y'&&p!='N'&&p!='n') {
个元素%d? printf("输入错误!请从新输入:"); scanf("%d",&a); printf("输入错误!是否删除第%d
Y/N\n\n",a,L.data[a-1]);
scanf("%c",&p); scanf("%c",&p);
}
计算机软件基础实践心得篇十
《计算机软件基础实验报告大综合(上)》
计算机软件实验报告一 顺序表的基本操作
班级:学号:姓名:_________ 2012153_________ __
一、实验目的:
1、熟悉编程环境
2、实现线性表的顺序存储; 3、实现线性表的插入、打印操作
二、实验要求:
1、编写函数,实现顺序表的插入操作 2、编写函数,实现顺序表的打印操作 3、编写测试以上函数的测试程序:
(1)建立一个至少包含10个随机整数元素的顺序表; (2)在该表中第7个位置上插入整数5;
(3)输出插入前后的顺序表的元素:每输出5个元素换行
三、实验程序及分析
#include <stdio.h>
#define maxlen 100 100
typedef int datatype; struct sqlisttp {datatype elem[maxlen]; int last; };
typedef struct sqlisttp SEQLIST;
void insert(SEQLIST v,int i,datatype x); void print(SEQLIST v);
void insert(SEQLIST v,int i,datatype x) {int k; if(i<1||i>v.last+1) printf("位置不合法!\n"); else if(v.last>=maxlen-1) printf("数据空间已满!\n"); else {for(k=v.last;k>=i;k--) v.elem[k+1]=v.elem[k]; v.elem[i]=x; v.last++; }
//头文件声明
//定义线性表可能最大长度,这里假设//定义类型
//函数声明 //函数声明
//定义插入函数(insert函数)
//插入位置的合法性判断
print(v); }
void print(SEQLIST v) //定义输出顺序表函数(print函数) {int i; for(i=1;i<=v.last;i++) {printf("%6d",v.elem[i]); if(i%5==0) printf("\n"); //控制换行,这里控制每五个换一次行 } printf("\n"); }
main() {int i;
SEQLIST v; v.last=0;
printf("***请输入10个数据(以空格间隔,回车结束输入)***:\n"); for(i=1;i<=10;i++) {scanf("%d",&v.elem[i]); //键盘输入十个任意整数 v.last++; }
{int n;
printf("原始数据:\n"); //输出从键盘输入的原始数据 for(n=1;n<=v.last;n++) {printf("%6d",v.elem[n]); if(n%5==0) printf("\n"); //控制换行 }
printf("\n"); }
printf("插入后的新数据:\n"); insert(v,7,5); //调用上面定义好的插入函数在第7个位
置上插入整数5
getch(); }
上一篇:专业自学学习心得