文档库 最新最全的文档下载
当前位置:文档库 › 中间代码生成实验报告

中间代码生成实验报告

中间代码生成实验报告
中间代码生成实验报告

一、实验目的

通过在实验二的基础上,增加中间代码生成部分,使程序能够对实验二中的识别出的赋值语句,if语句和while语句进行语义分析,生成四元式中间代码。

二、实验方法

实验程序由c语言完成,在Turboc 2.0环境中调试通过。

语义分析程序的基本做法是对文法中的每个产生式分别编写一个语义分析子程序,当程序语法部分进行推倒或规约时,就分别调用各自的语义分析程序。当语法分析结束时,语义分析也就结束了。

在本实验程序中,当语法分析部分识别出语法正确的句子时,就进入content函数(当语法分析识别出不正确的句子时,不进入content函数,也就是不进行语义分析),然后根据句子的类型进行分类,进入不同的语义处理部分。

对于赋值语句,关键是产生正确的处理算术表达式E的四元式。

程序中的ec函数的功能就是产生算术表达式的四元式,在ec函数中使用了两个栈idshed,opshed,分别是算术表达式的数据栈和符号栈。每次提取一个数字和一个算符,然后将算符与与栈顶算符进行优先级比较,优先级高则将单前数字和算符进栈,低或者相等的话则将当前栈顶元素进行合并,产生四元式。直至整个算术表达式结束。其中还有一些细节问题,具体的做法可以参看程序。

对于实验给定的if语句的文法格式,条件判断式C只中可能是>或者<=两种关系,不可能是布尔表达式,这样程序就简单的多了。

通过ec函数可以产生条件判断式C中的E的四元式,然后只要加

上转向四元式就可以了。本实验程序中只给出真出口的转向四元式,没有给出假出口的转向四元式,这在实际中是不可以的,但在本实验中,实际上是对每条独立的语句进行语法分析,给出假出口转向四元式实际上意义不大,而且假出口转向语句的转移目标必须要到整个语句分析结束以后才可以知道,这样就要建立栈,然后回填,这样会使程序复杂很多,所以没有加上假出口转向四元式。

对于while语句,具体的做法和if语句差不多,所不同的是当while语句结束时,要多出一条无条件转向四元式,重新转到条件判断式C的第一条四元式。当要产生无条件转向四元式时,它的转向目标C的第一条四元式已经产生了,所以具体的做起来是不太困难的。只要记下当前while中的C的第一条四元式的位置,填上就可以了。

整个程序的结束是当读入“. ”时,程序就中止。

程序中还有很多细节问题,具体的可以后面的附录:程序的完整代码。

三、测试程序

ff:=6+6*6-;

if sl>89+56*67

then f:=7*7+4;

ff:=6+6*6-6%4+8;

if sl+78*76>89*56+67

then while a-7>98+45*45 do f:=7*7+4;

.

四、运行结果

首先对测试程序进行语法分析,识别出正确的句子,当识别出正确的句子时,就对当前句子进行语义分析,而语法不正确的句子不进行语义分析。

ff:=6+6*6- Error(4):Except ID or NUM

; Error(2):Syntax error

if sl>89+56*67 then f:=7*7+4; success!!!

(1) [ *, 56, 67, T1 ]

(2) [ +, 89, T1, T2 ]

(3) [j>, sl, T2, (4) ]

(4) [ *, 7, 7, T3 ]

(5) [ +, T3, 4, T4 ]

(6) [ :=, T4, -, f ]

ff:=6+6*6-6%4+8; success!!!

(7) [ *, 6, 6, T5 ]

(8) [ +, 6, T5, T6 ]

(9) [ %, 6, 4, T7 ]

(10) [ -, T6, T7, T8 ]

(11) [ +, T8, 8, T9 ]

(12) [ :=, T9, -, ff ]

if sl+78*76>89*56+67 then while a-7>98+45*45 do f:=7*7+4;

success!!!

(13) [ *, 78, 76, T10 ]

(14) [ +, sl,T10, T11 ]

(15) [ *, 89, 56, T12 ]

(16) [ +,T12, 67, T13 ]

(17) [j>, T11, T13, (18) ]

(18) [ -, a, 7, T14 ]

(19) [ *, 45, 45, T15 ]

(20) [ +, 98,T15, T16 ]

(21) [j>, T14, T16, (22) ]

(22) [ *, 7, 7, T17 ]

(23) [ +,T17, 4, T18 ]

(24) [ :=, T18, -, f ]

(25) [j, _, _, (18)]

. Error(2):Syntax error

五、实验小结

终于完成了编译原理的三次实验,这几次实验使我们更彻底地巩固了编译原理。从詷法分析到语法分析直到这次的中间代码都是看似简单的基础知识,却花了不少时间对课本多次反复研究、请教学习,进行深层次地探讨才找出编程时出现的种种问题。还有很多程序方面很细节的问题,很容易被突略,却往往又是关键。

总地来说,虽然实验做得很辛苦,但真的可以从实验当中学习到很多,认识到很多。并对编译理解也透彻了许多,比较清晰地掌握了编译程序的原理和方法。

附录:

#include

#include

#include

#define reser 20

char *charstring="abcdefghijklmnopqrstuvwxyz";

char *numstring="0123456789";

char *strstring="abcdefghijklmnopqrstuvwxyz0123456789";

char reserve[reser][10];

char idshed[40][10],opshed[40][10];

char token[15],id[15],sym[15];

char line[80],tempp[240];

char ch,ch1,temp,tem;

char tx[10];

char tn[4],signt1[20],signt2[20],ju[20];

int cc,ii,k,num,kind,t,e4=0,e3=0,judge=1,row1=0;

int startc,idsh=0,opsh=0,tt=1,nn=1,signwh,over=0,adds=0,whs=0,pp=0;

int li=0;

char filename[15];

FILE *fp;

void getch(){

if(li==0) {

if (cc==ii){

cc=1; ii=0;

if (row1==1) fseek(fp,-1,1); /*读行首字符将指针退回一格,若是整个文本的开头,则不需要*/

line[0]=fgetc(fp);

row1=1;

while(((temp=fgetc(fp))!='\n') && (temp!=EOF))

{ line[cc]=temp;

cc++;

tempp[pp]=temp;

pp++;

}

line[cc]=' '; /*将缓冲带后加上一个空字符,以便行和行之间号区分*/

cc++;

tempp[pp]=' ';

pp++;

while(((temp=fgetc(fp))=='\n') && (temp!=EOF)); /* 跳过空行*/

line[cc]='\0';

}

tem=line[ii];

ii++;

ch=tem;

}

else{

ch=tempp[pp];

pp++;

}

}

void getnbc(){

getch();

while (ch==' ')

getch();

if (ch=='{')

{

do

{getch();}

while( ch=='}');

getnbc();

}

}

void retract(){

ii--;

}

void ret(){

pp--;

}

int jchar(char ch){ /* 判断ch是不是字母*/

if(strchr(charstring,ch)==0)

return 0;

else return 1;

}

int jnum(char ch){ /* 判断ch是不是数字*/ if(strchr(numstring,ch)==0)

return 0;

else return 1;

}

int jstr(char ch){ /* 判断ch是不是字母或数字*/ if(strchr(strstring,ch)==0)

return 0;

else return 1;

}

void advance()

{

getnbc();

kind=0;

if (jchar(ch)==1)

{

k=0;

do {

if(k<15)

{ token[k]=ch; k++;}

getch(); }

while(jstr(ch)==1);

if (li==0)

retract();

else ret();

token[k]='\0'; /*截去token中的无用字符*/ strcpy(id,token);

for(t =0;t<=20;t++)

{if(strcmp(reserve[t],id)==0)

break;}

if ( t<=20 ) kind=t ;

else kind=21;

strcpy(sym,id);

}

else

if (jnum(ch)==1)

{

k=0;

do{

if ( k<15 ) {

token[k]=ch; k++;}

getch();

}

while( jstr(ch)==1);

if (li==0)

retract();

else ret();

kind=22;

token[k]='\0';

strcpy(sym,token);

}

else

{

if(ch=='.') kind=26;

k=0;

do{

sym[k]=' '; k++;

}while(k!=15);

sym[0]=ch;

sym[1]='\0';

}

}

void error(int n){

judge=0; /*出错退出,将judge=0*/

switch(n){

case 0:{printf(" Error(0):Expect ':' \n"); break;}

case 1:{printf(" Error(1):Expect '=' \n"); break;}

case 2:{printf(" Error(2):Syntax error \n");break;}

case 3:{printf(" Error(3):Except Operater \n");break;} case 4:{printf(" Error(4):Except ID or NUM \n");break;} case 5:{printf(" Error(5):Except ';' \n");break;}

case 6:{printf(" Error(6):Except '<' or '>'\n");break;}

case 7:{printf(" Error(7):Except '=' \n" );break;}

case 8:{printf(" Error(8):Except 'then' \n");break;}

case 9:{printf(" Error(9):Except Condition Expression\n ");break;}

case 10:{printf(" Error(10):Except 'do' ");break;}

default:

; }

}

void e(){

advance();

if((strcmp(sym,"+")==0)||(strcmp(sym,"-")==0)||(strcmp(sym,"*")==0)||(strcmp(s ym,"%")==0))

{ printf("%s",sym);

advance();

if((kind==21) || (kind==22)){ /* kind为21,22分别表示的是标志符和数字*/ printf("%s",sym);

e();}

else { e4=1 ;error(4);} } /*出错退出,e4=1*/

}

void c(){

advance();

if((kind==21) || (kind==22)){

printf("%s",sym);

e();

if(e4==1); /*e4的作用是判断程序从e()中是不是出错退出*/ else {

if(strcmp(sym,">")==0){

printf("%s",sym);

advance();

if((kind==21) || (kind==22)) {

printf("%s",sym);

e();

}else{error(4);}

}

else {

if(strcmp(sym,"<")==0){

printf("%s",sym);

advance();

if(strcmp(sym,"=")==0){

printf("%s",sym);

advance();

if((kind==21) || (kind==22)){

printf("%s",sym);

e();}else{error(4);}

} else{error(7);}

} else{error(6);}

}}}

else{e3=1; error(9);} /*出错退出,e3=1*/

}

void statement(){

if(judge==1) /*judge的作用为判断程序是不是出错退出,若是,则无需advance()*/

advance();

switch (kind){

case 21:{ /* id */

printf("%s",sym);

advance();

if(strcmp(sym,":")==0)

{ printf("%s",sym);

advance();

if(strcmp(sym,"=")==0){

printf("%s",sym);

advance();

if((kind==21) || (kind==22)){

printf("%s",sym);

e();

if(e4==1) ;

else{

if(strcmp(sym,";")==0)

{printf("%s",sym);

judge=1;

printf(" success!!!\n");

startc=1;

}

else error(5); }

e4=0; /*将e4重新置为0,以免对下面程序有影响*/ }

else error(4);

} else{ error(1);}

} else { error(0);

}

break;

}

case 8:{ printf("%s ",sym); /* if */

c();

if(e4==1);

else{ if(e3==1); /*e3的作用是判断程序从c()中是不是出错退出*/ else{

if(strcmp(sym,"then")==0){

printf(" %s ",sym);

statement();

}else{error(8);}

}

e3=0; /*将e3重新置为0,以免对下面程序有影响*/

}

e4=0;

break;

}

case 19:{ /* while */

printf("%s ",sym);

c();

if(e4==1);

else{ if(e3==1);

else{

if(strcmp(sym,"do")==0){

printf(" %s ",sym);

statement();

}else{error(10);}

}

e3=0;

}

e4=0;

break;

}

default: { printf("%s ",sym);

error(2);

judge=1;

break;} }

}

void pushid(){

strcpy(idshed[idsh],sym);

idsh++;

}

void pushop(){

strcpy(opshed[opsh],sym);

opsh++;

}

void gen(char op[10],char a[10],char b[10]){

printf("(%d) [ %2s,%3s,%3s, T%d ]\n",nn,op,a,b,tt);

tt++;

nn++;

itoa(tt-1,tn,10);

strcpy(tx,"T");

strcat(tx,tn);

}

void ec(){

advance();

pushop();

advance();

pushid();

if((strcmp(opshed[opsh-1],"*")==0)||(strcmp(opshed[opsh-1],"%")==0))

{

gen(opshed[opsh-1],idshed[idsh-2],idshed[idsh-1]);

opsh--;

idsh=idsh-1;

strcpy(idshed[idsh-1],tx);

} else{

if((strcmp(opshed[opsh-1],"+")==0)||(strcmp(opshed[opsh-1],"-")==0))

{ adds=1;

if((strcmp(opshed[opsh-2],"+")==0)||(strcmp(opshed[opsh-2],"-")==0))

{

gen(opshed[opsh-2],idshed[idsh-3],idshed[idsh-2]);

strcpy(idshed[idsh-2],tx);

}

} }

advance();

if((strcmp(sym,"+")==0)||(strcmp(sym,"-")==0)||(strcmp(sym,"*")==0)||(strc

mp(sym,"%")==0))

{

if (li==0)

retract();

else ret();

ec(); }

}

void content(){

int reu;

reu=nn;

switch(kind)

{ case 21:{

advance();

advance();

advance();

pushid();

advance();

if((strcmp(sym,"+")==0)||(strcmp(sym,"-")==0)||(strcmp(sym,"*")==0)||(strcm p(sym,"%")==0))

{

if (li==0)

retract();

else ret();

ec();

if (adds==1)

gen(opshed[opsh-1],idshed[idsh-2],idshed[idsh-1]);

printf("(%d) [ :=, %s, -, %s ]\n",nn,tx,idshed[0]);

nn++;

idsh=0;

opsh=0;}

else{

printf("(%d) [ :=, %s, -, %s ]\n",nn,idshed[1],idshed[0]);

nn++;}

break;}

case 8:{

idsh=0;

opsh=0;

advance();

pushid();

advance();

if((strcmp(sym,"+")==0)||(strcmp(sym,"-")==0)||(strcmp(sym,"*")==0)||(strcm p(sym,"%")==0))

{

if (li==0)

retract();

else ret();

ec();

if(adds==1)

gen(opshed[opsh-1],idshed[idsh-2],idshed[idsh-1]);

adds=0;

strcpy(signt1,tx);

idsh=0;

opsh=0;}

else{

strcpy(signt1,idshed[0]);

}

if(strcmp(sym,">")==0)

strcpy(ju,"j>");

else{

strcpy(ju,"j<=");

advance();

}

opsh=0;

advance();

pushid();

advance();

if((strcmp(sym,"+")==0)||(strcmp(sym,"-")==0)||(strcmp(sym,"*")==0)||(strcm p(sym,"%")==0))

{

if (li==0)

retract();

else ret();

ec();

if (adds==1)

gen(opshed[opsh-1],idshed[idsh-2],idshed[idsh-1]);

adds=0;

strcpy(signt2,tx);

idsh=0;

opsh=0;}

else{

strcpy(signt2,idshed[0]);

}

printf("(%d) [%s, %s, %s, (%d) ]\n",nn,ju,signt1,signt2,nn+1);

nn++;

advance();

idsh=0;

opsh=0;

if(kind==21) pushid();

content();

break;}

case 19:{

idsh=0;

opsh=0;

advance();

pushid();

advance();

if((strcmp(sym,"+")==0)||(strcmp(sym,"-")==0)||(strcmp(sym,"*")==0)||(strcm

p(sym,"%")==0))

{

if (li==0)

retract();

else ret();

ec();

if(adds==1)

gen(opshed[opsh-1],idshed[idsh-2],idshed[idsh-1]);

adds=0;

strcpy(signt1,tx);

idsh=0;

opsh=0;}

else{

strcpy(signt1,idshed[0]);

}

if(strcmp(sym,">")==0)

strcpy(ju,"j>");

else{

strcpy(ju,"j<=");

advance();

}

idsh=0;

opsh=0;

advance();

pushid();

advance();

if((strcmp(sym,"+")==0)||(strcmp(sym,"-")==0)||(strcmp(sym,"*")==0)||(strcm p(sym,"%")==0))

{

if (li==0)

retract();

else ret();

ec();

if (adds==1)

gen(opshed[opsh-1],idshed[idsh-2],idshed[idsh-1]);

adds=0;

strcpy(signt2,tx);

idsh=0;

opsh=0;}

else{

strcpy(signt2,idshed[0]);

}

printf("(%d) [%s, %s, %s, (%d) ]\n",nn,ju,signt1,signt2,nn+1);

nn++;

advance();

idsh=0;

opsh=0;

if(kind==21) pushid();

content();

printf("(%d) [j, _, _, (%d)]\n",nn,reu);

nn++;

break; }

default:{

break; }

}

}

main(){

strcpy(reserve[8],"if");

strcpy(reserve[19],"while");

strcpy(reserve[4],"do");

strcpy(reserve[16],"then");

printf("Please Input Source Program Filename:");

scanf("%s",filename);

fp=fopen(filename,"r");

cc=0;ii=0;ch='\0';

while (kind!=26) /*kind==26为读到了'.',程序结束*/

{

startc=0;

pp=0;

statement();

li=1;

if(startc==1){

pp=0;

advance(); pushid();

content(); }

li=0;

}

}

数电实验一:倒计时定时器、BCD代码转换器(实验报告)

数电实验1实验报告 项目一:倒计时定时器 1、设计修改方案 (1)加入分频网络 分频采用74290芯片10分频级联,由于试验箱自身晶振提供50MHZ的时钟信号,所以需要利用分频分出500HZ用于扫描网络,分出1HZ用于计时器 (2) 首先用74244 过7446 接入8位数码管的a至g

(3)实现60秒以内任意输入 在十位和各位的74192计数器的指数端连接4个拨码开关,这样就可以随意输入倒计时的初始数值 2、实验数据及仿真分析 (1)完整电路图(附后) (2)仿真波形 不接数码管译码器的数字结果:初始值为78 可以看到十位数字从设定的7逐次递减为6、5、4…..,而各位在十位减1的周期内由9、8、7…逐次减为0。符合倒计时定时器的要求。且在计数减为00时,停止计时,指示灯由低电平转为高电平。 接译码器后数码管段选模拟波形:初始值78

根据7段数码管的亮灭规律也可以看出,个位十位轮流显示,十位1、2、3号管亮显示为数字“7”,各位7段数码管全亮显示数字“8”,随后十位“7”在一段时间内不变,各位从数字“7”显示到数字“0(除7以外其他段数码管亮)”。说明两位数码管显示正确。 (3)硬件测试 管脚分配如下: 由于拨码开关一共8个,置数开关S1,暂停开关S2占去两个,就只剩下6个拨码开关用来控制设置初始值。由于要求60S以内,所以十位最高位和次高位默认接地,这样十位最多只能到6,各位4位个再用4个拨码开关进行控制,既可以完成60S以内任意数字设为初始计数值。另外将计数停止口led1接13管脚,若计数结束,则红色LED灯全亮。 硬件测试: 将电路按上述管脚分配拷入试验箱,拨码开关全关闭时,最左边两位数码管亮并显示两个数字“0”。十位两位拨码开关拨为“10”,十位显示为4,各位的4位拨码开关拨为“0101”,各位显示数字“5”,此时计数器显示初始值为“45”,将S1分配的置数开关(右数第一个)由0拨为1,计时器从45变为44、43、42、41、40、39、38…..倒计时正常,将S2分配的暂停开关(右数第二个)由0拨为1,计时器停止到24不动,拨回后则继续由24开始倒计时。当倒计时计数器最终由6、5、4…变为0时,数码管两位00保持不变,计时停止,同时彩灯矩阵中所有红色LED亮起,提示倒计时结束。此时将置数开关拨回关(即0状态),从新用拨码开关设定新的初始值,数码管则显示新的初始值(27),开始计时后同样从27开始记到0为止,红色LED灯亮,停止计数。 由此可以验证,本项目“倒计时定时器”严格满足题目要求,功能正确~ 3、故障分析及解决方案 本项目在设计和测试过程中经理到了3次大的改动,正如前述的修改方案,其中后 次改动分别由于2个比较重要的问题。由于在设计时并没有注意是数码管的共阳极问题,所有各位和十位分别接入两个7448之后引出了14根数码管输出,而实际共阳极数码管只有8段输入。但这个故障较容易解决,换用PPT上老师提供的数码管扫描电路后,问题就解决了。第二个大的故障在于任意设置初始值时,置入的数跟实际拨码开关的表示不相同,后经过检查,是因为在分配管脚的时候几个拨码开关的管脚接串了,中间少接了一个。另外,还有一个小插曲,就是我所用的试验箱,最右边两个数码管貌似坏了,引用后也亮,开始还以为电路不对,之后试了试发现用最左边两个数码管就可以了~

网络攻防实验报告

实验报告模板

【实验目的】(简要描述实验目的) 采用免杀、混淆等技术的恶意代码有可能突破安全软件的防护而运行在目标主机中。即使用户感受到系统出现异常,但是仅仅通过杀毒软件等也无法检测与根除恶意代码,此时需要用户凭借其它系统工具和对操作系统的了解对恶意代码手工查杀。本实验假设在已经确定木马进程的前提下,要求学生借助进程检测和注册表检测等系统工具,终止木马进程运行,消除木马程序造成的影响,从而实现手工查杀恶意代码的过程。 【实验结果及分析】(需要有结果截图) 一、恶意代码手工查杀实验 1、虚拟机快照 为防止虚拟机破坏后无法恢复,应先将干净的虚拟机进行快照设置。点击菜单“虚拟机”“快照”“拍摄快照”,创建一个干净的虚拟机快照。 2.创建被感染的系统环境 由于恶意代码采用了免杀技术,因此能够成功绕过防病毒等安全软件检测,等用户感到系统异常时,通常恶意代码已经在主机系统内加载运行。为了尽量模拟一个逼真的用户环境,我们在搭建好的虚拟机中运行木马宿主程序 “radar0.exe”。运行完后,可以看见,“radar0.exe”自动删除。

3.木马进程的定位 用户对系统的熟悉程度决定了发现系统异常继而查找恶意代码的早晚。在本例中,明显可以感受到系统运行速度变慢,打开任务管理器,可以观察到有一个“陌生”的进程(非系统进程或安装软件进程)“wdfmgr.exe”占用CPU比率很高。 为了确定该进程为木马进程,可以通过查找该进程的静态属性如创建时间、

开发公司、大小等,以及通过对该进程强制终止是否重启等现象综合判断。在本例中,“Wdfmgr.exe”为木马radar.exe运行后新派生的木马进程。 4.记录程序行为 打开工具“ProcMon.exe”,为其新增过滤规则“Process Name”“is”“wdfmgr.exe”,然后开始监控。点击“Add”将过滤规则加入,可以看到ProcMon开始监控“wdfmgr.exe”进程的行为。需要注意的是,有时为了保证观察到的行为完备性,会先启动ProcMon工具,然后再启动被监控进程。 为了分别观察该进程对文件系统和注册表的操作,点击菜单 “Tools”“File Summary”,观察对文件系统的修改。

游程编码实验报告

重庆交通大学信息科学与工程学院综合性设计性实验报告 专业:通信工程专业11级 学号:631106040222 姓名:徐国健 实验所属课程:移动通信原理与应用 实验室(中心):信息技术软件实验室 指导教师:李益才 2014年5月

一、题目 二值图像的游程编码及解码 二、仿真要求 对一幅图像进行编码压缩,然后解码恢复图像。 三、仿真方案详细设计 实验过程分为四步:分别是读入一副图象,将它转换成为二进制灰度图像,然后对其进行游程编码和压缩,最后恢复图象(只能恢复为二值图像)。 1、二值转换 所谓二值图像,就是指图像上的所有像素点的灰度值只用两种可能,不为“0”就为“1”,也就是整个图像呈现出明显的黑白效果。 2、游程编码原理 游程编码是一种无损压缩编码,对于二值图有效。游程编码的基本原理是:用一个符号值或串长代替具有相同值的连续符号,使符号长度少于原始数据的长度。据进行编码时,沿一定方向排列的具有相同灰度值的像素可看成是连续符号,用字串代替这些连续符号,可大幅度减少数据量。游程编码分为定长行程编码和不定长行程编码两种类型。游程编码是连续精确的编码,在传输过程中,如果其中一位符号发生错误,即可影响整个编码序列,使行程编码无法还原回原始数据。 3、游程编码算法 一般游程编码有两种算法,一种是使用1的起始位置和1的游程长度,另一种是只使用游程长度,如果第一个编码值为0,则表示游程长度编码是从0像素的长度开始。这次实验采

用的是前一种算法。两种方法各有优缺点:前一种存储比第二种困难,因此编程也比较复杂。而后一种需要知道第一个像素值,故压缩编码算法中需给出所读出的图的第一个像素值。 压缩流程图: 解压流程图:

程序设计实验报告

学生实验报告 院系:测绘学院 专业班级:测绘13级3班 学号:2013305517 学生姓名:王泽 指导教师:郭辉老师 2016年05月20日

安徽理工大学实验报告 实验课程名称:数据结构与软件开发上机实验 开课院系及实验室:测绘学院红楼二楼机房 实验1 编程基本知识练习 实验目的: 通过该实验课内容的练习,学生应掌握VB 编程的基本语法、变量的定义、数组(动态数组)的定义、VB 语言中子过程与函数的定义以及文本文件的读写等知识。 实验内容: 1)变量的定义动态数组的定义与应用; 2)矩阵的加、减、乘运算(定义Sub()子过程或Function()来实现); 3)数据文件的建立、数据的读取与写入。 实验步骤: 1.编辑界面 1.1 打开VB 编程工具,进入编程主界面。

1.2 在窗体上新建“读入数据”和“输出数据”两个按钮。 1.3 双击“窗体”进入代码输入界面,进行代码编辑。 2.用VB 编写的源代码 2.1 矩阵基本运算源码详见附录一。 (1)两矩阵相加 (2)两矩阵相减 (3)矩阵转置 (4)两矩阵相乘 (5)矩阵求逆 2.2 文本文件(本实验中data.txt)的读取源代码 (1)建立文本文件并输入数据 在桌面上新建一“data.txt” ( 文本文件路径为C:\Users\ WH\Desktop\练习\data.txt”)。输入以下内容: 6,7,4,0.005 A,35.418 B,45.712 C,25.270

D,24.678 在桌面上新建一“result.txt” ( 文本文件路径为C:\Users\ WH\Desktop\练习\result.txt”)。(2)从文本文件中读数据 Dim linedata as string, m_GaochaN as integer,m_Pnumber as integer,m_knPnumber as integer,M as Double,k1 as integer 'linedata 为存储文本文件一行信息的字符串变量 Dim a() as String,H() as Double 'a()为存储点名,H()存储高程 Open“C:\Users\ WH\Desktop\练习\data.txt”For Input As #1 Line Input #1, linedata k = Split(linedata, ",") m_GaochaN = Val(k(0)) m_Pnumber = Val(k(1)) m_knPnumber = Val(k(2)) M = CDbl(k(3)) For k1 = 1 To m_knPnumber Line Input #1, linedata k = Split(linedata, ",") a(k1)= k(0) GetstationNumber (a) H(k1) = CDbl(k(1)) Next Close #1 (3)将读入点名存储到点名数组中,且返回该点名所对应编号 Function GetstationNumber(name As String) Dim i As Integer For i = 1 To m_Pnumber If P_Name(i) <> "" Then '将待查点名与已经存入点名数组的点比较 If P_Name(i) = name Then GetstationNumber = i Exit For End If Else '待查点是新的点名,将新点名放到P_Name 数组中 P_Name(i) = name GetstationNumber = i Exit For End If Next i End Function (4)从文本文件中写数据(将从data.txt 读入的数据,写入到result.txt 文件中) Open“C:\Users\ WH\Desktop\ 练习\result.txt” For Output As #1 outstring = outstring + str(m_GaochaN) +","

实验三 代码转换

电工电子实验中心 实验报告 课程名称:计算机硬件技术基础实验名称:代码转换 姓名:学号: 评定成绩:审阅教师:实验时间:2017.05.02 南京航空航天大学

— 一、实验目的要求 1) 掌握 ASCII 码转换的基本方法。 2) 学会 INT21 功能调用, 掌握人机对话的设计方法。 3) 进一歩熟悉 Tddebug 调试环境和 Turbo Debugger 的使用。 二、实验任务 从键盘输入小写字母(最多 20 个),以“.”号作为结束标志, 将其变换成相应的大写字母输岀在屏幕上。 三、实验代码 CRLF MACRO MOV DL, 0DH MOV AH, 02H INT 21H MOV DL, 0AH ;宏定义回车,换行 MOV AH, 02H INT 21H ENDM DATA SEGMENT MES1 DB 'PLEASE INPUT THE SMALL LETTER,ENDED WITH ".":$' MES2 DB 'THE CAPTAL LETTER IS:$' SMALL DB 50 ;?预留键盘输入缓冲区长度为50个 DB 0 ;?预留实际键盘输入字符数的个数 DB 50 DUP(0) CAPITAL DB 50 DUP('$') ;?预留大写字母缓冲区长度为50个 DATA ENDS STACK1 SEGMENT STACK DB 100 DUP (0) STACK1 ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK1 START PROC FAR PUSH DS MOV AX, 0 PUSH AX

网络防御实验报告

网络防御实验报告 学院计算机学院 专业网络工程 班级1班 姓名刘小芳 学号41009040127 - 2013年12月30日

一.实验题目 网络防御实验 二.实验环境 PC 机一台; 操作系统:win7 物理地址:EO-E9-A5-81-A5-1D IP地址:192.168.1.102 三.实验目的 掌握有关网络防御的基本原理和方法; 四.常见网络防御方法 10.1物理层 10.2网络层 路由交换策略 VLAN划分 防火墙、隔离网闸 入侵检测 抗拒绝服务 传输加密 10.3系统层 漏洞扫描 系统安全加固 10.4应用层 防病毒 安全功能增强 10.5管理层 独立的管理队伍 统一的管理策略 五、实验方法概述 前面设计了网络攻击实验,现在在前面的基础上完成网络攻击的防御,主要模仿现在常用的网络防御手段,如防火墙等。 六.概述: 1.恶意代码及黑客攻击手段的三大特点: 传播速度惊人:“大型推土机”技术(Mass rooter),是新一代规模性恶意代码具备的显著功能。 这些恶意代码不仅能实现自我复制,还能自动攻击内外网上的其它主机,并以受害者为攻击源继续攻击其它网络和主机。 以这些代码设计的多线程和繁殖速度,一个新蠕虫在一夜之间就可以传播到互联网的各个角落。

2.受害面惊人:许多国家的能源、交通、金融、化工、军事、科技和政府部门等关键领域的信息化程度逐年提高,这些领域的用户单位的计算机网络,直接或间接地与Internet有所联系。 各种病毒、蠕虫等恶意代码,和各种黑客攻击,通过Internet为主线,对全球各行业的计算机网络用户都造成了严重的影响。 3穿透深度:蠕虫和黑客越来越不满足于攻击在线的网站,各种致力于突破各种边界防线的攻击方式层出不穷。 一个新的攻击手段,第一批受害对象是那些24小时在线的网站主机和各种网络的边界主机; 第二批受害对象是与Internet联网的,经常收发邮件的个人用户; 第三批受害对象是OA网或其它二线内网的工作站; 终极的受害对象可能会波及到生产网络和关键资产主机。 4.网络攻击的动机 偷取国家机密 商业竞争行为 内部员工对单位的不满 对企业核心机密的企望 网络接入帐号、信用卡号等金钱利益的诱惑 利用攻击网络站点而出名 对网络安全技术的挑战 对网络的好奇心 5.攻击的过程 预攻击攻击后攻击

浙江大学Linux程序设计实验报告

Linux程序设计实验报告1 ——操作系统基本命令使用 一、实验目的 1.通过对Emacs、vi、vim、gedit文本编辑器的使用,掌握在Linux环境下文本文件的编辑方法; 2.通过对常用命令mkdir、cp、cd、ls、mv、chmod、rm等文件命令的操作,掌握Linux操作系统中文件命令的用法。 二、实验任务与要求 1.emacs的使用,要求能新建、编辑、保存一个文本文件 2.vi或vim的使用,要求能新建、编辑、保存一个文本文件 3.gedit的使用,要求能新建、编辑、保存一个文本文件 4.掌握mkdir、cd命令的操作,要求能建立目录、进入与退出目录 5.掌握cp、ls、mv、chmod、rm命令的操作,要求能拷贝文件、新建文件、查看文件、文件重命名、删除文件等操作。 三、实验工具与准备 计算机PC机,Linux Redhat Fedora Core6操作系统 四、实验步骤与操作指导 任务1.学习emacs的使用,要求能新建、编辑、保存一个文本文件 (1)启动emacs (2)输入以下C程序 (3)保存文件为kk.c (4)用emacs打开文件kk.c (5)修改程序 (6)另存为文件aa.txt并退出。 任务2.vi或vim的使用,要求能新建、编辑、保存一个文本文件 (1)点击”应用程序”→ “附件”→“终端”,打开终端,在终端输入命令: [root@localhost root]#vi kk.c 按i键,进入插入状态。 (2)输入以下C程序 #include int main( ) {

printf(“Hello world!\n”); return 0; } 此时可以用Backspace、→、←、↑、↓键编辑文本。 (3)保存文件为kk.c 按Esc键,进入最后行状态,在最后行状态输入:wq保存文件,退出vi。 (4)用vi打开文件kk.c,输入命令: [root@localhost root]#vi kk.c (5)修改程序为: #include int main( ) { printf(" Hello world!\n"); printf("*****************\n"); return 0; } (6)按Esc键,进入最后行状态,在最后行状态输入:wq aa.txt保存文件,如图1所示,另存为文件aa.txt并退出vi。。 图1 程序编辑环境 任务3.gedit的使用,要求能新建、编辑、保存一个文本文件 (1)启动gedit,点击”应用程序”→ “附件”→“文本编辑器”,打开文本编辑器,如图所示。

网络安全防护检查报告模板

编号: 网络安全防护检查报告 数据中心 测评单位: 报告日期:

目录 第1章系统概况 ......................................................................... 错误!未定义书签。 网络结构 ............................................................................. 错误!未定义书签。 管理制度 ............................................................................. 错误!未定义书签。第2章评测方法和工具 ............................................................. 错误!未定义书签。 测试方式 ............................................................................. 错误!未定义书签。 测试工具 ............................................................................. 错误!未定义书签。 评分方法 ............................................................................. 错误!未定义书签。 符合性评测评分方法 ................................................. 错误!未定义书签。 风险评估评分方法 ..................................................... 错误!未定义书签。第3章测试内容 ......................................................................... 错误!未定义书签。 测试内容概述 ..................................................................... 错误!未定义书签。 扫描和渗透测试接入点 ..................................................... 错误!未定义书签。 通信网络安全管理审核 ..................................................... 错误!未定义书签。第4章符合性评测结果 ............................................................. 错误!未定义书签。 业务安全 ............................................................................. 错误!未定义书签。 网络安全 ............................................................................. 错误!未定义书签。 主机安全 ............................................................................. 错误!未定义书签。 中间件安全 ......................................................................... 错误!未定义书签。 安全域边界安全 ................................................................. 错误!未定义书签。 集中运维安全管控系统安全 ............................................. 错误!未定义书签。 灾难备份及恢复 ................................................................. 错误!未定义书签。 管理安全 ............................................................................. 错误!未定义书签。 第三方服务安全 ................................................................. 错误!未定义书签。第5章风险评估结果 ................................................................. 错误!未定义书签。 存在的安全隐患 ................................................................. 错误!未定义书签。

二进制码转换为BCD码实验报告

实验二二进制码转换为BCD码 一、实验目的 1、掌握数码转换基本方法,加深对数码的理解。 2、用于十进制BCD码显示。 二、实验内容 将AX的内容转换为十进制BCD码。 三、实验程序框图 四、实验步骤 脱机模式: (1)在P、态,按SCAL键,输入2CE0,按EXEC键。 (2)复位RST键,由于AX中给定数为0FFFF,查瞧BCD码结果保留在4100H~4104H单元中,故其值应为06、05、05、03、05。 联机模式: (1)在PC机与实验系统联机状态下,运行该实验程序,可用鼠标左键单击菜单栏“文件”或工具栏“打开图标”,弹出“打开文件”的对话框,然后打开8kAsm文件夹,点击S2、ASM文件,单击“确定”即可装入源文件,再单击工具栏中编译,即可完成源文件自动编译、装载目标代码功能,再单击“调试”中“连续运行”或工具图标运行,即开始运行程序。 (2)复位“系统复位”键,由于AX中给定数为0FFFF,查瞧BCD码结果保留在4100H~4104H

单元中,故其值应为06、05、05、03、05。 注:操作过程参照“实验一二进制多位加法运算”。 五、实验程序清单 X:\DICE-8086K3微机原理与接口实验箱CDROM\CODE\86kasm\S2、ASM ;将AX拆为5个BCD码,并存入Result开始的5个单元 DATA SEGMENT AT 0 ;S2、ASM,BIN-->BCD ORG 4000H RESULT DB 5 DUP(?) DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA ORG 2CE0H START PROC NEAR MOV AX, DATA MOV DS, AX MOV DX,0000H MOV AX, 65535 MOV CX, 10000 DIV CX MOV RESULT, AL ; 除以 10000, 得WAN位数 MOV AX,DX MOV DX,0000H MOV CX, 1000 DIV CX MOV RESULT+1, AL ; 除以 1000, 得QIAN位数 MOV AX,DX MOV DX,0000H MOV CX, 100 DIV CX MOV RESULT+2, AL ; 除以 100, 得BAI位数 MOV AX,DX MOV DX,0000H MOV CX, 10 DIV CX MOV RESULT+3, AL ; 除以 10, 得SHI位数 MOV RESULT+4, DL ; 得GE位数 JMP $ CODE ENDS END START

实验1-木马病毒攻防

南昌航空大学实验报告 二〇一三年十一月八日 课程名称:信息安全实验名称:实验1木马攻击与防范 班级:xxx 姓名:xxx 同组人: 指导教师评定:签名: 一、实验目的 通过对木马的练习,使读者理解和掌握木马传播和运行的机制;通过手动删除木马,掌握检查木马和删除木马的技巧,学会防御木马的相关知识,加深对木马的安全防范意识。 二、实验原理 木马的全称为特洛伊木马,源自古希腊神话。木马是隐藏在正常程序中的具有特殊功能的恶意代码,是具备破坏、删除和修改文件、发送密码、记录键盘、实施DOS攻击甚至完全控制计算机等特殊功能的后门程序。它隐藏在目标计算机里,可以随计算机自动启动并在某一端口监听来自控制端的控制信息。 1.木马的特性 木马程序为了实现其特殊功能,一般应该具有以下性质: (1)伪装性(2)隐藏性(3)破坏性(4)窃密性 2.木马的入侵途径 木马入侵的主要途径是通过一定的欺骗方法,如更改图标、把木马文件与普通文件合并,欺骗被攻击者下载并执行做了手脚的木马程序,就会把木马安装到被攻击者的计算机中。木马也可以通过Script、ActiveX及ASP、CGI交互脚本的方式入侵,攻击者可以利用浏览器的漏洞诱导上网者单击网页,这样浏览器就会自动执行脚本,实现木马的下载和安装。木马还可以利用系统的一些漏洞入侵,获得控制权限,然后在被攻击的服务器上安装并运行木马。3.木马的种类 (1)按照木马的发展历程,可以分为4个阶段:第1代木马是伪装型病毒;第2代木马是网络传播型木马;第3代木马在连接方式上有了改进,利用了端口反弹技术,例如灰鸽子木马;第4代木马在进程隐藏方面做了较大改动,让木马服务器端运行时没有进程,网络操作插入到系统进程或者应用进程中完成,例如广外男生木马。 (2)按照功能分类,木马又可以分为:破坏型木马;密码发送型木马;服务型木马;DOS 攻击型木马;代理型木马;远程控制型木马。 4.木马的工作原理 下面简单介绍一下木马的传统连接技术、反弹端口技术和线程插入技术。 (1)木马的传统连接技术;C/S木马原理如图1-1所示。第1代和第2代木马都采用的是C/S连接方式,这都属于客户端主动连接方式。服务器端的远程主机开放监听端目等待外部的连接,当入侵者需要与远程主机连接时,便主动发出连接请求,从而建立连接。 (2)木马的反弹端口技术;随着防火墙技术的发展,它可以有效拦截采用传统连接方式。但防火墙对内部发起的连接请求则认为是正常连接,第3代和第4代“反弹式”木马就是利用这个缺点,其服务器端程序主动发起对外连接请求,再通过某些方式连接到木马的客户端,如图1-2和图1-3所示。

实验二M精编B程序设计含实验报告

实验二M精编B程序设 计含实验报告 The following text is amended on 12 November 2020.

实验二 MATLAB 程序设计 一、 实验目的 1.掌握利用if 语句实现选择结构的方法。 2.掌握利用switch 语句实现多分支选择结构的方法。 3.掌握利用for 语句实现循环结构的方法。 4.掌握利用while 语句实现循环结构的方法。 5.掌握MATLAB 函数的编写及调试方法。 二、 实验的设备及条件 计算机一台(带有以上的软件环境)。 M 文件的编写: 启动MATLAB 后,点击File|New|M-File ,启动MATLAB 的程序编辑及调试器 (Editor/Debugger ),编辑以下程序,点击File|Save 保存程序,注意文件名最好用英文字符。点击Debug|Run 运行程序,在命令窗口查看运行结果,程序如有错误则改正 三、 实验内容 1.编写求解方程02=++c bx ax 的根的函数(这个方程不一定为一元二次方程,因c b a 、、的不同取值而定),这里应根据c b a 、、的不同取值分别处理,有输入参数提示,当0~,0,0===c b a 时应提示“为恒不等式!”。并输入几组典型值加以检验。 (提示:提示输入使用input 函数) 2.输入一个百分制成绩,要求输出成绩等级A+、A 、B 、C 、D 、E 。其中100分为A+,90分~99分为A ,80分~89分为B ,70分~79分为C ,60分~69分为D ,60分以下为E 。 要求:(1)用switch 语句实现。 (2)输入百分制成绩后要判断该成绩的合理性,对不合理的成绩应输出出错信息。 (提示:注意单元矩阵的用法) 3.数论中一个有趣的题目:任意一个正整数,若为偶数,则用2除之,若为奇数,则与3相乘再加上1。重复此过程,最终得到的结果为1。如: 21 21 421 运行下面的程序,按程序提示输入n=1,2,3,5,7等数来验证这一结论。 请为关键的Matlab 语句填写上相关注释,说明其含义或功能。 4. y

智慧政务网络恶意代码攻击检测报告

X区智慧政务网络恶意代码攻击检测报告

目录 1概述 (2) 2检测结果汇总 (3) 3感染威胁详情 (4) 3.1木马感染情况 (4) 3.1.1木马主要危害 (4) 3.1.2木马感染详情 (4) 3.1.3木马描述及解决方案 (6) 3.2僵尸网络感染情况 (8) 3.2.1僵尸网络主要危害 (8) 3.2.2僵尸网络感染详情 (9) 3.2.3僵尸程序描述及解决方案 (10)

1 概述 当前木马和僵尸网络攻击已经成为互联网安全安的主要威胁,由于其涉及很多经济、政治等因素,致使这些恶意威胁发展变化非常迅速,传统的安全防御手段难以及时检测、定位、清除这类恶意威胁。上海市X区非常重视内部网X全,采用多种安全防范设备或措施提升整体信息安全水平,为检测内部木马等恶意攻击行为威胁,在网络中部署了一套僵尸木马网络攻击行为预警系统。 上海X信息安全技术有限公司是一家专门从事网络恶意攻击行为研究的高新企业,在恶意代码检测领域正在开展专业的探索和研究。目前在上海市X区智慧政务网络中部署有一台网络恶意代码攻击检测系统,通过旁路镜像的方式接入上海市X区智慧政务网络中,当前系统旁路挂载在机房外网交换机上,流量在300 Mb/s。当前部署的网络恶意代码攻击检测系统能够7*24监测网络中的流量并记录X区智慧政务网络内的业务服务器所感染的网站后门、木马或僵尸网络等恶意代码的情况。

2 检测结果汇总 自2013年7月8日到2013年8月8日,这一段时间内,共检测到僵尸程序攻击9352次,木马攻击3666次,网站后门攻击174次。 目前X 区智慧政务网络威胁以僵尸网络程序攻击、木马攻击为主,并且检测到9352次僵尸网络攻击行为,需要尽快对这些木马、僵尸程序进行处理,以防止机密数据失窃密。如下为所有内网络内部攻击行为分布图,通过图可以直观看出,僵尸程序、木马攻击行最为严重。 政务网络恶意代码攻击趋势图 1000 2000300040005000600070008000900010000僵尸程序攻击 木马攻击 网站后门攻击 9352 3666 174

实验二二进制码转换为bcd码实验报告终审稿)

实验二二进制码转换为 B C D码实验报告 公司内部档案编码:[OPPTR-OPPT28-OPPTL98-OPPNN08]

实验二二进制码转换为BCD码 一、实验目的 1、掌握数码转换基本方法,加深对数码的理解。 2、用于十进制BCD码显示。 二、实验内容 将AX的内容转换为十进制BCD码。 三、实验程序框图 四、实验步骤 脱机模式:

(1)在P.态,按SCAL键,输入2CE0,按EXEC键。 (2)复位RST键,由于AX中给定数为0FFFF,查看BCD码结果保留在4100H~4104H单元中,故其值应为06、05、05、03、05。 联机模式: (1)在PC机和实验系统联机状态下,运行该实验程序,可用鼠标左键单击菜单栏“文件”或工具栏“打开图标”,弹出“打开文件”的对话框,然后打开8kAsm文件夹,点击文件,单击“确定”即可装入源文件,再单击工具栏中编译,即可完成源文件自动编译、装载目标代码功能,再单击“调试”中“连续运行”或工具图标运行,即开始运行程序。 (2)复位“系统复位”键,由于AX中给定数为0FFFF,查看BCD码结果保留在4100H~4104H单元中,故其值应为06、05、05、03、05。 注:操作过程参照“实验一二进制多位加法运算”。 五、实验程序清单 X:\DICE-8086K3微机原理与接口实验箱CDROM\CODE\86kasm\ ;将AX拆为5个BCD码,并存入Result开始的5个单元 DATA SEGMENT AT 0 ;,BIN-->BCD ORG 4000H RESULT DB 5 DUP() DATA ENDS CODE SEGMENT

计算机病毒实验报告

计算机病毒实验报告 ——windows病毒实验 姓名:张艳秋 学号:081300607 班级:信安0802 指导老师:韦俊银 实验日期:2011.5.27

实验内容 1.PE文件感染实验(选) 2.暴风一号病毒 3.VBS病毒产生 4.宏病毒实验(选)

PE文件感染实验 实验目的 了解pe病毒的感染过程 实验环境 硬件设备 PC机一台(建议虚拟机) 软件工具 Office Word 2007 实验步骤 一:参照病毒感染PE文件的7个步骤,记录病毒是如何感染文件(文字和截屏形式) 病毒感染文件过程(以感染文件ebookcode.exe为例): 重定位,获得所有API地址: …… 通过软件Stud_PE可查看可执行文件ebookcode.exe的结构可查看文件内容: 1.判断目标文件开始的两个字节是否为“MZ”:

2.判断PE文件标记“PE”: 3.判断感染标记,如果已被感染过则跳出继续执行宿主程序,否则继续: 4.读取IMAGE_FILE_HEADER的NumberOfSections域,获得Data Directory (数据目录)的个数,(每个数据目录信息占8个字节): 5.得到节表起始位置。(数据目录的偏移地址+数据目录占用的字节数=节表起始位置):

6.得到节表的末尾偏移(紧接其后用于写入一个新的病毒节信息)节表起始位置+节的个数*(每个节表占用的字节数28H)=节表的末尾偏移 7.开始写入节表,感染文件: 二:在掌握Stud_PE工具的基础上,比较文件感染前后有哪些变化。 感染前:

感染后: 由上两图可以看出,感染前后有4处发生了变化: 1:PE文件头中入口点: 感染病毒后ebookedit.exe程序的入口点变成了病毒文件的入口点 2:PointerToRawData域值,即该文件的偏移量发生了变化; 3:imag的大小发生了变化; 4:sections的数量发生了变化。 由.exe文件感染前后变化可知,PE病毒感染过程即在文件中添加一个新节,

C程序设计上实验报告(完整版)

C语言程序设计上机实验报告 学院:机械工程学院 班级:机自161213 姓名:刘昊 学号:20162181310 实验时间:2017年3月6号 任课老师:张锐

C语言程序设计上机实验报告 实验一 一、实验名称: C程序的运行环境和运行C程序的方法 二、实验目的:了解在C编译系统上如何编辑、编译、连接和运行一个C 程序 三、实验内容: (1). 输入并运行一个简单的C程序。 (2). 设计程序,对给定的两个数求和。 (3). 设计程序,对给定的两个数进行比较,然后输出其中较大的数。 四、源程序代码: 代码1: 运行结果1:

程序分析1: 该程序用来判断所输入的整数是否为一个素数,如果一个数能被除了1和它本身整除,还能被其它数整除,那么它就不是一个素数,因此,用for 循环来进行整除过程的简写。 代码2: 运行结果2:

程序分析2: 简单的使用printf()和scanf()函数进行简单的数据运算。代码3: 运行结果3:

程序分析3: 使用if语句进行判断。 五.实验总结 C语言程序设计上机实验报告 实验二 一、实验名称:顺序结构程序设计 二、实验目的:正确使用常用运算符(算术运算符、赋值运算符)的用法, 熟练掌握算术运算符及其表达式,逻辑运算符和逻辑表达式。 三、实验内容: (1). 编写程序,实现小写字母转大写。

(2). 编写程序,实现输入两个不同类型数据后,经过适当的运算(加、减、乘、除)后输出。 (3). 编写程序,计算三角形面积、立方体的体积和表面积、圆的面积和周长。 (4). 编写程序,实现单字符getchar和putchar输入输出。 (5). 编写程序,实现十进制、八进制、十六进制不同数制的输出。 四、源程序代码 代码1: 运行结果1: 程序分析1:

防火墙实验报告 2

计算机安全实验报告 实验题目:天网防火墙windows安全设置专业/班级:计科一班 学号:110511407 姓名:李冲 指导教师:张小庆

一天网防火墙技术 1 实验题目简述 个人防火墙是防止电脑中的信息被外部侵袭的一项技术,在系统中监控、阻止任何未经授权允许的数据进入或发出到互联网及其他网络系统。个人防火墙产品如著名Symantec公司的诺顿、Network Ice公司的BlackIce Defender、McAfee公司的思科及Zone Lab的free ZoneAlarm 等,都能帮助用户的系统进行监控及管理,防止特洛伊木马、spy-ware 等病毒程序通过网络进入电脑或向外部扩散。 这些软件都能够独立运行于整个系统中或针对个别程序、项目,所以在使用时十分方便及实用。本次试验采用天网个人防火墙SkyNet FireWall进行个人防火墙简单的配置应用。 2.实验目标和意义 实验的目标是在于熟悉个人防火墙的配置与应用,以便更加保证个人电脑的网络安全,避免恶意用户以及程序的入侵。防治安全威胁对个人计算机产生的破坏。 3.实验原理和实验设备 3.1 实验原理 随着计算机技术的迅速发展,在计算机上处理的业务也由基于单机的数学运算、文件处理,基于简单连接的内部网络的内部业务处理、办公自动化等发展到基于复杂的内部网、企业外部网、全球互联网的企业级计算机处理系统和世界范围内的信息共享和业务处理。在系统处理能力提高的同时,系统的连接能力也在不断的提高。但在连接能力信息、流通能力提高的同时,

基于网络连接的安全问题也日益突出,因此计算机安全问题,应该像每家每户的防火防盗问题一样,做到防范于未然。防火墙则是一个安全策略的检查站。所有进出的信息都必须通过防火墙,防火墙便成为安全问题的检查点,使可疑的访问被拒绝于门外。 防火墙对流经它的网络通信进行扫描,这样能够过滤掉一些攻击,以免其在目标计算机上被执行。防火墙还可以关闭不使用的端口。而且它还能禁止特定端口的流出通信,封锁特洛伊木马。最后,它可以禁止来自特殊站点的访问,从而防止来自不明入侵者的所有通信。 例如,防火墙可以限制 TCP、UDP协议及TCP协议允许访问端口范围,当不符合条件时,程序将询问用户或禁止操作,这样可以防止恶意程序或木马向外发送、泄露主机信息。并且可以通过配置防火墙IP规则,监视和拦截恶意信息。与此通知,还可以利用IP规则封杀指定 TCP/UDP端口,有效地防御入侵,如139漏洞、震荡波等。 3.1 实验设备 Window 7 天网个人防火墙2010版 4.实验步骤 4.1 实验步骤 第一步:局域网地址设置,防火墙将会以这个地址来区分局域网或者是INTERNET的IP来源。设置如图3-1.

高级程序设计实验报告

高级程序设计 实验报告 班级 学号: 姓名: 实验名称: 指导老师: 日期:

实验十一文件和流I/O 一、实验题目:文件和流I/O 二、实验内容: 1.掌握磁盘的基本操作 2.掌握目录的基本操作 3.文件的基本操作 4.文本文件的读取和写入 5.字符串的读取和写入 6.二进制文件的读取和写入I 7. 二进制文件的读取和写入2 三、主要程序代码: 1. using System; using System.IO; using System.Collections.Generic; using System.Text; namespace实验1 { class Test { public static void Main() { DriveInfo[] allDrives = DriveInfo.GetDrives(); foreach (DriveInfo d in allDrives) { Console.WriteLine("Drive {0}", https://www.wendangku.net/doc/df3059164.html,); Console.WriteLine(" File type: {0}", d.DriveType); if (d.IsReady == true) { Console.WriteLine(" Volume label: {0}", d.VolumeLabel); Console.WriteLine(" File system: {0}", d.DriveFormat); Console.WriteLine(" Available space to current user:{0, 15} bytes",d.AvailableFreeSpace); Console.WriteLine("Total available space: {0, 15} bytes",d.TotalFreeSpace); Console.WriteLine( " Total size of drive: {0, 15} bytes ", d.TotalSize); } } Console.ReadKey();

相关文档