欢迎来到一句话经典语录网
我要投稿 投诉建议
当前位置:一句话经典语录 > 心得体会 > r语言的实验心得体会

r语言的实验心得体会

时间:2017-09-16 16:55

c语言实验报告心得

c语言实验心得:1、只有频繁用到或对运算速度要求很高的变量才放到data区内,如for循环中的计数值。

2、其他不频繁调用到和对运算速度要求不高的变量都放到xdata区。

3、常量放到code区,如字库、修正系数。

4、逻辑标志变量可以定义到bdata中。

在51系列芯片中有16个字节位寻址区bdata,其中可以定义8*16=128个逻辑变量。

这样可以大大降低内存占用空间。

定义方法是: bdata bit LedState;但位类型不能用在数组和结构体中。

5、data区内最好放局部变量。

因为局部变量的空间是可以覆盖的(某个函数的局部变量空间在退出该函数是就释放,由别的函数的局部变量覆盖),可以提高内存利用率。

当然静态局部变量除外,其内存使用方式与全局变量相同;6、确保程序中没有未调用的函数。

在Keil C里遇到未调用函数,编译器就将其认为可能是中断函数。

函数里用的局部变量的空间是不释放,也就是同全局变量一样处理。

这一点Keil做得很愚蠢,但也没办法。

7、如果想节省data空间就必须用large模式。

将未定义内存位置的变量全放到xdata区。

当然最好对所有变量都要指定内存类型。

8、使用指针时,要指定指针指向的内存类型。

在C51中未定义指向内存类型的通用指针占用3个字节;而指定指向data区的指针只占1个字节;指定指向xdata区的指针占2个字节。

如指针p是指向data区,则应定义为: char data *p;。

还可指定指针本身的存放内存类型,如:char data * xdata p;。

其含义是指针p指向data区变量,而其本身存放在xdata区。

以前没搞过C51,大学时代跟单片机老师的时候也是捣鼓下汇编,现在重新搞单片机,因为手头资料不多,找到一些C51的程序,发现里面有这些关键字,不甚明了,没办法只好找了下,发现如下描述:从数据存储类型来说,8051系列有片内、片外程序存储器,片内、片外数据存储器,片内程序存储器还分直接寻址区和间接寻址类型,分别对应code、data、xdata、idata以及根据51系列特点而设定的pdata类型,使用不同的存储器,将使程序执行效率不同,在编写C51程序时,最好指定变量的存储类型,这样将有利于提高程序执行效率(此问题将在后面专门讲述)。

与ANSI-C稍有不同,它只分SAMLL、COMPACT、LARGE模式,各种不同的模式对应不同的实际硬件系统,也将有不同的编译结果。

在51系列中data,idata,xdata,pdata的区别data:固定指前面0x00-0x7f的128个RAM,可以用acc直接读写的,速度最快,生成的代码也最小。

idata:固定指前面0x00-0xff的256个RAM,其中前128和data的128完全相同,只是因为访问的方式不同。

idata是用类似C中的指针方式访问的。

汇编中的语句为:mox ACC,@Rx.(不重要的补充:c中idata做指针式的访问效果很好) xdata:外部扩展RAM,一般指外部0x0000-0xffff空间,用DPTR访问。

pdata:外部扩展RAM的低256个字节,地址出现在A0-A7的上时读写,用movx ACC,@Rx读写。

这个比较特殊,而且C51好象有对此BUG,建议少用。

但也有他的优点,具体用法属于中级问题,这里不提。

三、有关单片机ALE引脚的问题 单片机不访问外部锁存器时ALE端有正脉冲信号输出,此频率约为时钟振荡频率的1\\\/6.每当访问外部数据存储器是,在两个机器周期中ALE只出现一次,即丢失一个ALE脉冲.这句话是不是有毛病.我觉得按这种说法,应该丢失3个ALE脉冲才对,我一直想不通是怎么回事,希望大虾们帮帮我.小弟感激涕零.答:其他所有指令每6个机器周期发出一个ALE,而MOVX指令占用12个机器周期只发出一个ALE 四、如何将一个INT型数据转换成2个CHAR型数据

经keil优化后,char1=int1\\\/256,char2=int1%256或char1=int1>>8,char2=int1&0x00ff效率是一样的。

五、在KEIL C51上仿真完了,怎样生成HEX文件去烧写

右键点项目中Target 1,选第二个,在OUTPUT中选中CREAT HEX 六、typedef 和 #define 有何不同?? typedef 和 #define 有何不同》》》 如typedef unsigned char UCHAR ;#define unsigned char UCHAR ;typedef命名一个新的数据类型,但实际上这个新的数据类型是已经存在的,只不过是定义了一个新的名字.#define只是一个标号的定义.你举的例子两者没有区别,但是#define还可以这样用#define MAX 100#define FUN(x) 100-(x)#define LABEL等等,这些情况下是不能用typedef定义的 七、请问如何设定KELC51的仿真工作频(时钟) 用右键点击左边的的target 1,然后在xtal一栏输入 八、不同模块怎样共享sbit变量,extern不行? 把SBIT定义单独放到一个.H中,每个模块都包含这个.h文件 九、C51中对于Px.x的访问必须自己定义吗

是的。

如sbit P17 = 0x97;即可定义对P1.7的访问 十、SWITCH( )语句中表达式不可以是位变量对吗

可以用位变量:#include#includevoid main(){bit flag;flag=0;switch(flag){case '0':{printf(0\\\ );break;}case '1':{printf(1\\\ );break;}default:break; }}bit 变量只有两种状态,if 语句足够啦,!!! 十一、const常数声明占不占内存 const 只是用来定义“常量”,所占用空间与你的定义有关,如:const code cstStr[] = {abc};占用代码空间;而如:const char data cstStr[] = {abc};当然占用内存空间。

另外,#define 之定义似乎不占用空间。

十二、philips的单片机P89C51RD+的扩展RAM在C51中如何使用

试一试将auxr.1清0,然后在c语言中直接声明xdata类型的变量 十三、BUG of Keil C51 程序中用如下语句:const unsigned char strArr[] = {数学};结果发现strArr[] 内容为 {0xCA,0xD1,0xA7},真奇怪

凡是有0xfd,则会通通不见了,所以只能手工输入内码了,例如 uchar strArr[]={0xCA,0xfd,0xd1,0xa7}(用Ultraedit会很方便)。

十四、Keil C51中如何实现代码优化

菜单Project下Option for target Simulator的C51.看到Code optimization了吗

十五、请教c的

和 ~ 符号有甚区别

是逻辑取反,~是按位取反。

十六、c51编程,读端口,还要不要先输出1

我怎么看到有的要,有的不要,请高手给讲讲,到底咋回事

谢了要输出1的,除非你能保证之前已经是1,而中间没有输出过其他值。

十七、当定时器1(T1)用于产生波特率时,P3^5还是否可以用作正常的I\\\/O口呢

p3.5完全可以当普通的io使用 十八、C51中 INT 转换为 2个CHAR

各位高手:C51中 INT 转换为 CHAR 如何转换诸如:X = LOW(Z);Y = HIGH(Z);答: x=(char)z;y=(char)(z>>8); 十九、如果我想使2EH的第7位置1的话,用位操作可以吗

现在对位操作指令我一些不太明白请各位多多指教:如 SETB 07H 表示的是20H.7置1,对吗

(我在一本书上是这么看到的)那么如果我想使2EH的第7位置1的话,象我举的这个例子怎么表示呢

谢谢

SETB 77Hsetb (2eh-20h)*8+7 20h-2fh每字节有8个可位操作(00h-7fh),其它RAM不可位直接操作 二十、char *addr=0xc000 和char xdata *addr=0xc000有何区别

char *addr=0xc000;char xdata *addr=0xc000;除了在内存中占用的字节不同外,还有别的区别吗?char *addr=0xc000; 是通用定义,指针变量 addr 可指向任何内存空间的值;char xdata *addr=0xc000; 指定该指针变量只能指向 xdata 中的值;后一种定义中该指针变量(addr)将少占用一个存储字节。

uchar xdata *addr=0xc000;指针指向外ram;如果:data uchar xdata *addr=0xc000;指针指向外ram但指针本身存在于内ram(data)中以此类推可以idata uchar xdata *addr=0xc000;pdata uchar xdata *addr=0xc000;data uchar idata *addr=0xa0;......... 二十一、while(p1_0)的执行时间

假设,P1_0为单片机P1口的第一脚,请问,while(P1_0){P1_0=0;}while(!P1_0){P1_0=1;}以上代码,在KEIL C中,需要多长时间,执行完。

能具体说明while(P1_0)的执行时间吗

仿真运行看看就知道了,我仿真了试了一下,约14个周期 二十二、怎样编写C51的watchdog程序

各位大虾,我用KEIL C51 编写了一个带外部开门狗的程序,可程序无法运行起来,经过查找,发现程序在经过C51编译后,在MAIN()函数的前部增加了一端初始化程序,等到进入主程序设置开门狗时,开门狗已经时间到,将我的程序复位了,请问我怎样才能修改这一端初始花程序,使他一运行,就设置开门狗

可以在startup.a51中加入看门狗刷新指令,当然用汇编,然后重新编译startup.a51,将他和你的程序连接即可。

新的startup.a51会自动代替系统默认的启动模块。

二十三、keil C51 怎样把修改的startup.a51 加到工程文件中 直接加入即可注意不要改动?STACK,?C_START,?C_STARTUP等符号。

startup.a51直接加入项目,不用修改也可。

可在内面自己修改汇编的一些限制或堆栈指针。

二十四、关于波特率的设置 我在设定串口波特率时发现一个问题:在晶体震荡器为11.0592MHz时,若设9600BPS的话,TH1=0XFD,TL1=0XFD,而要设19200BPS的话,TH1、TL1有否变化,如果没变,为什么

如果变了,又为什么

(因为我看书上俩个是一样的),希望大家点拨。

答:当电源控制寄存器(PCON)第BIT7(SMOD)为1时波特率加倍。

TH1和TL1的值不变. 二十五、如何在C中声明保留这部分RAM区不被C使用

我不知道在C源程序中怎么控制这个,但在汇编程序中加入下面一段就行:DSEG AT 20HAA: DS 10这样C51就不会占用20H--29H了或者在c51里这样定义:uchar data asm_buff[10] _at_ 0x20; 二十六、问浮点运算问题 我在用C51时发现它对传递浮点参数的个数有限制,请问:1)参数是以全局变量的形式传递的,请问以全局变量的形式传递的参数也有限制吗

2)这种传递浮点参数的限制有多少呢

3)float*float的结果是float类型还是double类型?能否直接赋值给float类型的变量

答:由于KEIL C51的参数传递是通过R0-R7来传递的,所以会有限制。

不过KEIL提供了一个编译参数,可以支持更多参数的传递。

具体的内容见KEIL的PDF文档。

我建议你把多个要传递的参数定义到指针或结构体中去,传递参数通过指针或结构进行,这样好一些。

第3个问题回答是YES,你自己试试不就知道了。

二十七、如何在某一个地址定义ram 用_at_ 命令,这样可以定位灵活一点的地址uchar xdata dis_buff[16] _at_ 0x6020 ;\\\/\\\/定位RAM将dis_buff[16]定位在0x6020开始的16个字节 二十八、keil c中,用什么函数可以得到奇偶校验位

例如32位数据,将四个字节相互异或后检查P即可,若耽心P被改变,可用内嵌汇编。

#include unsigned char parity(unsigned char x){x^=x;if(P)return(1);else return(0);}unsigned char parity2(unsigned int x){#pragma asmmov a,r7xrl ar6,a#pragma endasmif(P)return(1);else return(0);}

C语言实验报告总结

你只需要按那个模版就行,那些内容就改成你的作业 班级: 学号: 姓名:实验9 指针 一、实验目的(1)掌握指针概念,并定义与使用它。

(2)使用数组的指针和指向数组的指针变量。

(3)使用字符串的指针和指向字符串的指针变量。

二、实验内容1. 将一个3*3的矩阵转置,用函数实现。

2. 有n个人围成一圈,顺序排号。

从第一个人开始报数(1~3),凡报到3的人退出,问第几号的人能留下。

三、实验环境 硬件:(1)学生用微机 (2)多媒体实验教室 软件:(1)Windows XP 中文操作系统 (2)VC++ 6.0 四、实验结果程序1:#includevoid main(){ void move(int *pointer); int a[3][3],*p,i; printf(input marix:\\\ ); for(i=0;i<3;i++) scanf(%d %d %d,&a[i][0],&a[i][1],&a[i][2]); p=&a[0][0]; move(p); printf(matrix:\\\ ); for(i=0;i<3;i++) printf(%d %d %d\\\ ,a[i][0],a[i][1],a[i][2]);}void move(int *pointer){ int i,j,t; for(i=0;i<3;i++) for(j=i;j<3;j++) { t=*(pointer+3*i+j); *(pointer+3*i+j)=*(pointer+3*j+i); *(pointer+3*j+i)=t; }}程序2:#includevoid main(){ int i,k,m,n,num[50],*p; printf(input num of person:); scanf(%d,&n); p=num; for(i=0;i

C语言实训心得

源程序:#include stdio.h \\\/*I\\\/O函数*\\\/#include stdlib.h \\\/*其它说明*\\\/#include string.h \\\/*字符串函数*\\\/#include conio.h \\\/*屏幕操作函数*\\\/#include mem.h \\\/*内存操作函数*\\\/#include ctype.h \\\/*字符操作函数*\\\/#include alloc.h \\\/*动态地址分配函数*\\\/#include dos.h#define N 4 \\\/*定义常数*\\\/typedef struct z1 \\\/*定义数据结构*\\\/{ char no[12]; char name[20]; int score[N]; float sum; float average; int order; struct z1 *next;}STUDENT;\\\/*以下是函数原型*\\\/STUDENT *init(); \\\/*初始化函数*\\\/STUDENT *create(); \\\/*创建链表*\\\/STUDENT *delete(STUDENT *h); \\\/*删除记录*\\\/void print(STUDENT *h); \\\/* 显示所有记录*\\\/void lookup(STUDENT *h); \\\/*查找*\\\/void save(STUDENT *h); \\\/*保存*\\\/STUDENT *load(); \\\/*读入记录*\\\/void computer(STUDENT *h); \\\/*计算总分和均分*\\\/STUDENT *Modify(STUDENT *h); \\\/*修改记录*\\\/void append(); \\\/*追加记录*\\\/STUDENT *sort(STUDENT *h); \\\/*按总分排序*\\\/STUDENT *index(STUDENT *h); \\\/*按学号排序*\\\/int menu_select(); \\\/*菜单函数*\\\/\\\/******主函数开始*******\\\/main(){ int i; STUDENT *head; \\\/*链表定义头指针*\\\/ printf(\\\ \\\ \\\ \\\ \\\ \\\ \\\ \\\ \\\ ); printf( * * ******* * ***** ***** * * ******* \\\ ); printf( * * * * * * * ** * * * \\\ ); printf( * * * * ******* * * * * * *** * ******* \\\ ); printf( * * * * * * * * * * * * * \\\ ); printf( * * ******* ******* ***** * *** * * * ******* \\\ ); printf(\\\ ); printf(\\\ ); printf(\\\ ); sleep(2); head=init(); \\\/*初始化链表*\\\/ clrscr(); \\\/*清屏*\\\/ for(;;) \\\/*无限循环*\\\/ { switch(menu_select()) \\\/*调用主菜单函数,返回值整数作开关语句的条件*\\\/ { \\\/*值不同,执行的函数不同,break 不能省略*\\\/ case 0:head=init();break; \\\/*执行初始化*\\\/ case 1:head=create();break; \\\/*创建链表*\\\/ case 2:print(head);break; \\\/*显示全部记录*\\\/ case 3:head=delete(head);break; \\\/*删除记录*\\\/ case 4:lookup(head);break; \\\/*按名字查找记录*\\\/ case 5:save(head);break; \\\/*保存文件*\\\/ case 6:head=load(); break; \\\/*读文件*\\\/ case 7:computer(head);break; \\\/*计算总分和均分*\\\/ case 8:head=Modify(head); break; \\\/*修改记录,一般会插在表尾*\\\/ case 9:head=sort(head);break; \\\/*按部分排序*\\\/ case 10:append();break; \\\/*追加记录*\\\/ case 11:head=index(head);break; \\\/*按学号排序*\\\/ case 12: exit(0); \\\/*如菜单返回值为14程序结束*\\\/ } }}\\\/*菜单函数,返回值为整数*\\\/menu_select(){ char *menu[]={***************MENU***************, \\\/*定义菜单字符串数组*\\\/ 00. init list, \\\/*初始化*\\\/ 01. Enter list, \\\/*输入记录*\\\/ 02. print list , \\\/*显示单链表中所有记录*\\\/ 03. Delete a record from list, \\\/*从表中删除记录*\\\/ 04. Search record on name, \\\/*按照姓名查找记录*\\\/ 05. Save the file, \\\/*将单链表中记录保存到文件中*\\\/ 06. Load the file, \\\/*从文件中读入记录*\\\/ 07. compute the score, \\\/*计算所有学生的总分和均分*\\\/ 08. Modify an information , \\\/*修改某学号的信息*\\\/ 09. sort to make new file, \\\/*排序*\\\/ 10. append record to file, \\\/*追加记录到文件中*\\\/ 11. index on nomber, \\\/*按学号排序*\\\/ 12. Quit}; \\\/*退出*\\\/ char s[3]; \\\/*以字符形式保存选择号*\\\/ int c,i; \\\/*定义整形变量*\\\/ gotoxy(1,1); \\\/*移动光标*\\\/ textcolor(YELLOW); \\\/*设置文本显示颜色为黄色*\\\/ textbackground(BLUE); \\\/*设置背景颜色为蓝色*\\\/ gotoxy(10,2); \\\/*移动光标*\\\/ putch(0xc9); \\\/*输出左上角边框┏*\\\/ for(i=1;i<44;i++) putch(0xcd); \\\/*输出上边框水平线*\\\/ putch(0xbb); \\\/*输出右上角边框 ┓*\\\/ for(i=3;i<20;i++) { gotoxy(10,i);putch(0xba); \\\/*输出左垂直线*\\\/ gotoxy(54,i);putch(0xba); } \\\/*输出右垂直线*\\\/ gotoxy(10,20);putch(0xc8); \\\/*输出左上角边框┗*\\\/ for(i=1;i<44;i++) putch(0xcd); \\\/*输出下边框水平线*\\\/ putch(0xbc); \\\/*输出右下角边框┛*\\\/ window(11,3,53,19); \\\/* 制作显示菜单的窗口,大小根据菜单条数设计*\\\/ clrscr(); \\\/*清屏*\\\/ for(i=0;i<16;i++) \\\/*输出主菜单数组*\\\/ { gotoxy(10,i+1); cprintf(%s,menu[i]); } textbackground(BLACK); \\\/*设置背景颜色为黑色*\\\/ window(1,1,80,25); \\\/*恢复原窗口大小*\\\/ gotoxy(10,21); \\\/*移动光标*\\\/ do{printf(\\\ make by wenwei);

printf(\\\ Enter you choice(0~13):); \\\/*在菜单窗口外显示提示信息*\\\/

scanf(%s,s); \\\/*输入选择项*\\\/

c=atoi(s); \\\/*将输入的字符串转化为整形数*\\\/

}while(c<0||c>14); \\\/*选择项不在0~14之间重输*\\\/ return c; \\\/*返回选择项,主程序根据该数调用相应的函数*\\\/}STUDENT *init(){ clrscr(); return NULL;}\\\/*创建链表*\\\/STUDENT *create(){ int i; int s; STUDENT *h=NULL,*info; \\\/* STUDENT指向结构体的指针*\\\/ clrscr(); for(;;) { info=(STUDENT *)malloc(sizeof(STUDENT)); \\\/*申请空间*\\\/ if(!info) \\\/*如果指针info为空*\\\/ { printf(\\\ out of memory); \\\/*输出内存溢出*\\\/ return NULL; \\\/*返回空指针*\\\/ } inputs(enter no:,info->no,11); \\\/*输入学号并校验*\\\/ if(info->no[0]=='@') { clrscr();break; } \\\/*如果学号首字符为@则结束输入,清屏后返回*\\\/ inputs(enter name:,info->name,15); \\\/*输入姓名,并进行校验*\\\/ printf(please input %d score \\\ ,N); \\\/*提示开始输入成绩*\\\/ s=0; \\\/*计算每个学生的总分,初值为0*\\\/ for(i=0;iscore[i]); \\\/*输入成绩*\\\/ if(info->score[i]>100||info->score[i]<0) \\\/*确保成绩在0~100之间*\\\/ printf(bad data,repeat input\\\ ); \\\/*出错提示信息*\\\/ }while(info->score[i]>100||info->score[i]<0); s=s+info->score[i]; \\\/*累加各门课程成绩*\\\/ } info->sum=s; \\\/*将总分保存*\\\/ info->average=(float)s\\\/N; \\\/*求出平均值*\\\/ info->order=0; \\\/*未排序前此值为0*\\\/ info->next=h; \\\/*将头结点做为新输入结点的后继结点*\\\/ h=info; \\\/*新输入结点为新的头结点*\\\/ clrscr(); } return(h); \\\/*返回头指针*\\\/}\\\/*输入字符串,并进行长度验证*\\\/inputs(char *prompt, char *s, int count){ char p[255]; do{ printf(prompt); \\\/*显示提示信息*\\\/ scanf(%s,p); \\\/*输入字符串*\\\/ if(strlen(p)>count)printf(\\\ too long! \\\ ); \\\/*进行长度校验,超过count值重输入*\\\/ }while(strlen(p)>count); strcpy(s,p); \\\/*将输入的字符串拷贝到字符串s中*\\\/}\\\/*输出链表中结点信息*\\\/void print(STUDENT *h){ int i=0; \\\/* 统计记录条数*\\\/ STUDENT *p; \\\/*移动指针*\\\/ clrscr(); \\\/*清屏*\\\/ p=h; \\\/*初值为头指针*\\\/ printf(\\\ \\\ \\\ *********************************STUDENT************************************\\\ ); printf(|rec|nO | name | sc1| sc2| sc3| sc4| sum | ave |order|\\\ ); printf(|---|----------|---------------|----|----|----|----|--------|--------|-----|\\\ ); while(p!=NULL) \\\/*只要p不是尾结点,就输出记录*\\\/ { i++; printf(|%3d|%-10s|%-15s|%4d|%4d|%4d|%4d| %6.2f | %6.2f | %3d |\\\ , i, p->no,p->name,p->score[0],p->score[1],p->score[2],p->score[3],p->sum,p->average,p->order); p=p->next; } printf(***********************************end**************************************\\\ ); getch(); \\\/*输入任一键返回主菜单*\\\/ clrscr(); \\\/*清屏*\\\/}\\\/*删除记录*\\\/STUDENT *delete(STUDENT *h){ STUDENT *p,*q; \\\/*p为查找到要删除的结点指针,q为其前驱指针*\\\/ char s[12]; \\\/*存放学号*\\\/ char *pass=wenwei28;char a[20],b=NULL;int i=0;clrscr();printf(Input your password:);while((i<20)&&(b!='\\\\r')){ b=getch(); \\\/*无回显输入*\\\/ if(b==8) { if(i>0) {a[--i]=NULL;

putchar(8); \\\/*退格键*\\\/

putchar(' '); \\\/*以空格代替*\\\/

putchar(8);

} else putchar(7); \\\/*没有任何字符的退格,响铃警告*\\\/ } else if(b!='\\\\r') { a[i++]=b; \\\/*只要不是退格和回车就接受*\\\/ putchar('*'); } else {a[i]=NULL; break; \\\/*密码输入完了,记得加个NULL到后面*\\\/

}} if(strcmp(a,pass)!=0){clrscr();

printf(Password is mistake Tow seconds to return!);

sleep(2);clrscr();return h;

} else {printf(Password is OK! Welcome to come!); sleep(3);

} clrscr(); \\\/*清屏*\\\/ printf(please deleted no\\\ ); \\\/*显示提示信息*\\\/ scanf(%s,s); \\\/*输入要删除记录的学号*\\\/ q=p=h; \\\/*给q和p赋初值头指针*\\\/ while(strcmp(p->no,s)&&p!=NULL) \\\/*当记录的学号不是要找的,或指针不为空时*\\\/ { q=p; \\\/*将p指针值赋给q作为p的前驱指针*\\\/ p=p->next; \\\/*将p指针指向下一条记录*\\\/ } if(p==NULL) \\\/*如果p为空,说明链表中没有该结点*\\\/ { printf(\\\ list no %s student\\\ ,s);sleep(2);clrscr();return h;} else \\\/*p不为空,显示找到的记录信息*\\\/ { printf(*********************************have found********************************\\\ ); printf(|no | name | sc1| sc2| sc3| sc4| sum | ave |order|\\\ ); printf(|------------|---------------|----|----|----|----|--------|--------|-----|\\\ ); printf(|%-12s|%-15s|%4d|%4d|%4d|%4d| %6.2f | %6-5.2f | %3d |\\\ , p->no, p->name,p->score[0],p->score[1],p->score[ q=p; \\\/*保存当前结点的指针,作为下一结点的前驱*\\\/ p=p->next; \\\/*指针后移,新读入数据链到当前表尾*\\\/ } q->next=NULL; \\\/*最后一个结点的后继指针为空*\\\/ fclose(fp); \\\/*关闭文件*\\\/ printf(---You have success read data from file!!!---\\\ ); getch(); \\\/*按任意键返回主菜单*\\\/ clrscr(); return h; \\\/*返回头指针*\\\/}\\\/*成绩统计*\\\/void computer(STUDENT *h){ STUDENT *p,*t,*q; \\\/*定义移动指针*\\\/ float saverage[N]={0}; \\\/*均分初值为0*\\\/ int i; clrscr(); for (i=0;iscore[i]; \\\/*累加总分*\\\/ j++; \\\/*统计记录条数*\\\/ p=p->next; \\\/*指针后移*\\\/ h; \\\/*返回头指针 就知道这么多了,我不太懂咯~~~~心得就不来写了,自己写哈

~

~

焊接基本技巧的心得体会

R语回归分析R简介R语析一个简单性模型总结与展望作业yrty1R简介1.S语言与R2.R的安装与运行3.R程序包的安装及4.R语言中的几点注意事项yrty2S语言与RR是一个有着强大统计分析及作图功能的软件系统R语言可以看作是贝尔实验室开发的S语言的一种实现或形式S语言主要内含在S-PLUS软件中,可将R和S-PLUS视为S语言的两种形式S\\\/S-PLUS方面的文档都可以直接用于Ryrty3R的安装与运行R的安装:从网址下载R的安装程序和R程序包(R下载地址:),单击downloadR单击Windows,在单击base单击DownloadR2.11.1forWindowsyrty4R程序包的安装(1)菜单方式:联网条件下,按程序包安装程序包选择CRAN镜像服务器选择程序包(2)命令方式:install.packages(“PKname”)(3)本地安装:下载需要的程序包及与之关联的程序包,再用“程序包”菜单中的“用本机的zip文件安装程序包”yrty5R程序包的使用除R的标准程序包外,新安装的程序包使用前必须载入,两种载入方式:(1)菜单方式:通过“程序包”菜单中的“载入程序包”,再从已有程序包中选定需要的一个加载;(2)命令方式:在命令提示符后键入>libiary(“PKname”)#或libiary(„PKname‟),libiary(PKname)yrty6R语言中的

R语言生成随机数问题

四天的实习,我着实替己捏了一把汗,因为我在实习中了所有可能遇问题,如果从学习的角度来说,遇到更多的问题还是很幸运的

实习时我们虽然用的是比较新的机箱,但是问题往往隐藏在那华丽的机箱内部;我们从第一天一开始启动机子,困难就用蓝屏来刁难我们,我们但并没有被困难吓到,而是开始了攻克难关的艰难旅程。

我们从显卡开始检查,经由CPU,显示器,内部连线,再到电源逐一进行检测,我们各尽所能,努力寻找问题所在,哲言说的好“努力一定会有结果,但结果未必是好结果”,现实是残酷的,我们最终还是“抱着希望去,带着失望来”一切措施都实施了,但是问题依然未被解决,连同组的同学都对我投来了失望的目光,我也自感失望,因为平时他们是比较信任我的,为了能够解决问题,我们请教了所有能够请教的同学,我们每次都是失望而归,最后我们只能求助于老师了,老师经过一番研究发现:这台主机主板根本不通电,即使看起来外表很是诱人。

结果让我们很是失望,我们最后只能对那新机子说拜拜啦

另外,我感觉组装实习对我的帮助很大,平日里的理论学习只是纸上谈兵,并不能很好的掌握计算机组装的实际情况,而且也容易产生反感,但是只有结合实践的组装学习,才容易被接受,被吸收被理解,只有自己实实在在的摸过,自己才敢说自己掌握了多少东西。

总之,经过这次实习,我掌握了书本上没有的一些东西,让我受益匪浅

学习网络安全的小结(心得体会)

由于现在家用电脑所使用的操作系统多数为Windows XP 和Windows 2000 pro(建议还在使用98的朋友换换系统,连微软都放弃了的系统你还用它干嘛

)所以后面我将主要讲一下基于这两个操作系统的安全防范。

个人电脑常见的被入侵方式 谈到个人上网时的安全,还是先把大家可能会遇到的问题归个类吧。

我们遇到的入侵方式大概包括了以下几种: (1)被他人盗取密码。

(2)系统被_blank\\\/>木马攻击。

(3)浏览网页时被恶意的java scrpit程序攻击。

(4)QQ被攻击或泄漏信息。

(5)病毒感染。

(6)系统存在漏洞使他人攻击自己。

(7)黑客的恶意攻击。

下面我们就来看看通过什么样的手段来更有效的防范攻击。

查本地共享资源 删除共享 删除ipc$空连接 账号密码的安全原则 关闭自己的139端口 445端口的关闭 3389的关闭 4899的防范 常见端口的介绍 如何查看本机打开的端口和过滤 禁用服务 本地策略 本地安全策略 用户权限分配策略 终端服务配置 用户和组策略 防止rpc漏洞 自己动手DIY在本地策略的安全选项 工具介绍 避免被恶意代码 木马等病毒攻击1.查看本地共享资源 运行CMD输入net share,如果看到有异常的共享,那么应该关闭。

但是有时你关闭共享下次开机的时候又出现了,那么你应该考虑一下,你的机器是否已经被黑客所控制了,或者中了病毒。

2.删除共享(每次输入一个) net share admin$ \\\/delete net share c$ \\\/delete net share d$ \\\/delete(如果有e,f,……可以继续删除)3.删除ipc$空连接 在运行内输入regedit,在注册表中找到HKEY-LOCAL_MACHINESYSTEMCurrentControSetControlLSA项里数值名称RestrictAnonymous的数值数据由0改为1。

4.关闭自己的139端口,ipc和RPC漏洞存在于此。

关闭139端口的方法是在“网络和拨号连接”中“本地连接”中选取“Internet协议(TCP\\\/IP)”属性,进入“高级TCP\\\/IP设置”“WinS设置”里面有一项“禁用TCP\\\/IP的NETBIOS”,打勾就关闭了139端口。

5.防止rpc漏洞 打开管理工具——服务——找到RPC(Remote Procedure Call (RPC) Locator)服务——将故障恢复中的第一次失败,第二次失败,后续失败,都设置为不操作。

Windows XP SP2和Windows 2000 pro sp4,均不存在该漏洞。

6.445端口的关闭 修改注册表,添加一个键值HKEY_LOCAL_MACHINE\\\\System\\\\CurrentControlSet\\\\Services\\\\NetBT\\\\Parameters在右面的窗口建立一个SMBDeviceEnabled 为REG_DWORD类型键值为0这样就可以了。

7.3389的关闭 Windows XP:我的电脑上点右键选属性——\\\/>远程,将里面的远程协助和远程桌面两个选项框里的勾去掉。

Windows 2000 Server 开始——\\\/>程序——\\\/>管理工具——\\\/>服务里找到Terminal Services服务项,选中属性选项将启动类型改成手动,并停止该服务。

(该方法在Windows XP同样适用) 使用Windows 2000 pro的朋友注意,网络上有很多文章说在Windows 2000 pro 开始——\\\/>设置——\\\/>控制面板——\\\/>管理工具——\\\/>服务里找到Terminal Services服务项,选中属性选项将启动类型改成手动,并停止该服务,可以关闭3389,其实在2000pro 中根本不存在Terminal Services. 8.4899的防范 网络上有许多关于3389和4899的入侵方法。

4899其实是一个远程控制软件所开启的服务端端口,由于这些控制软件功能强大,所以经常被黑客用来控制自己的肉鸡,而且这类软件一般不会被杀毒软件查杀,比后门还要安全。

4899不象3389那样,是系统自带的服务。

需要自己安装,而且需要将服务端上传到入侵的电脑并运行服务,才能达到控制的目的。

所以只要你的电脑做了基本的安全配置,黑客是很难通过4899来控制你的。

9、禁用服务 若PC没有特殊用途,基于安全考虑,打开控制面板,进入管理工具——服务,关闭以下服务: (1)Alerter[通知选定的用户和计算机管理警报]。

(2)ClipBook[启用“剪贴簿查看器”储存信息并与远程计算机共享]。

(3)Distributed File System[将分散的文件共享合并成一个逻辑名称,共享出去,关闭后远程计算机无法访问共享。

(4)Distributed Link Tracking Server[适用局域网分布式链接]。

(5)Indexing Service[提供本地或远程计算机上文件的索引内容和属性,泄露信息]。

(6)Messenger[警报]。

(7)NetMeeting Remote Desktop Sharing[netmeeting公司留下的客户信息收集]。

(8)Network DDE[为在同一台计算机或不同计算机上运行的程序提供动态数据交换]。

(9)Network DDE DSDM[管理动态数据交换 (DDE) 网络共享]。

(10)Remote Desktop Help Session Manager[管理并控制远程协助]。

(11)Remote Registry[使远程计算机用户修改本地注册表]。

(12)Routing and Remote Access[在局域网和广域往提供路由服务.黑客理由路由服务刺探注册信息]。

(13)Server[支持此计算机通过网络的文件、打印、和命名管道共享]。

(14)TCP\\\/IPNetBIOS Helper[提供 TCP\\\/IP 服务上的 NetBIOS 和网络上客户端的 NetBIOS 名称解析的支持而使用户能够共享文件、打印和登录到网络]。

(15)Telnet[允许远程用户登录到此计算机并运行程序]。

(16)Terminal Services[允许用户以交互方式连接到远程计算机]。

(17)Window s Image Acquisition (WIA)[照相服务,应用与数码摄象机]。

如果发现机器开启了一些很奇怪的服务,如r_server这样的服务,必须马上停止该服务,因为这完全有可能是黑客使用控制程序的服务端。

10、账号密码的安全原则 首先禁用guest账号,将系统内建的administrator账号改名(改的越复杂越好,最好改成中文的),然后设置一个密码,最好是8位以上字母数字符号组合。

如果你使用的是其他账号,最好不要将其加进administrators,如果加入administrators组,一定也要设置一个足够安全的密码,同上如果你设置adminstrator的密码时,最好在安全模式下设置,因为经我研究发现,在系统中拥有最高权限的账号,不是正常登陆下的adminitrator账号,因为即使有了这个账号,同样可以登陆安全模式,将sam文件删除,从而更改系统的administrator的密码

而在安全模式下设置的administrator则不会出现这种情况,因为不知道这个administrator密码是无法进入安全模式。

权限达到最大这个是密码策略:用户可以根据自己的习惯设置密码,下面是我建议的设置。

打开管理工具—本地安全设置—密码策略 (1)密码必须符合复杂要求性.启用。

(2)密码最小值.我设置的是8。

(3)密码最长使用期限.我是默认设置42天。

(4)密码最短使用期限0天。

(5)强制密码历史记住0个密码。

(6)用可还原的加密来存储密码禁用。

11、本地策略 这个很重要,可以帮助我们发现那些心存叵测的人的一举一动,还可以帮助我们将来追查黑客。

(虽然一般黑客都会在走时会清除他在你电脑中留下的痕迹,不过也有一些不小心的) 打开管理工具,找到本地安全设置—本地策略—审核策略 (1)审核策略更改 成功失败。

(2)审核登陆事件 成功失败。

(3)审核对象访问 失败。

(4)审核跟踪过程 无审核。

(5)审核目录服务访问 失败。

(6)审核特权使用 失败。

(7)审核系统事件 成功失败。

(8)审核账户登陆时间 成功失败。

(9)审核账户管理 成功失败。

然后再到管理工具找到事件查看器,这里 应用程序:右键\\\/>属性\\\/>设置日志大小上限,我设置了50mb,选择不覆盖事件 安全性:右键\\\/>属性\\\/>设置日志大小上限,我也是设置了50mb,选择不覆盖事件 系统:右键\\\/>属性\\\/>设置日志大小上限,我都是设置了50mb,选择不覆盖事件 12、本地安全策略 打开管理工具,找到本地安全设置—本地策略—安全选项 (1)交互式登陆.不需要按 Ctrl+Alt+Del 启用 [根据个人需要,但是我个人是不需要直接输入密码登陆的]。

(2)网络访问.不允许SAM账户的匿名枚举 启用 。

(3)网络访问.可匿名的共享 将后面的值删除。

(4)网络访问.可匿名的命名管道 将后面的值删除。

(5)网络访问.可远程访问的注册表路径 将后面的值删除。

(6)网络访问.可远程访问的注册表的子路径 将后面的值删除。

(7)网络访问.限制匿名访问命名管道和共享。

(8)账户.(前面已经详细讲过拉 )。

13、用户权限分配策略 打开管理工具,找到本地安全设置—本地策略—用户权限分配 (1)从网络访问计算机 里面一般默认有5个用户,除Admin外我们删除4个,当然,等下我们还得建一个属于自己的ID。

(2)从远程系统强制关机,Admin账户也删除,一个都不留。

(3)拒绝从网络访问这台计算机 将ID删除。

(4)从网络访问此计算机,Admin也可删除,如果你不使用类似3389服务。

(5)通过远端强制关机,删掉。

14、终端服务配置,打开管理工具,终端服务配置 (1)打开后,点连接,右键,属性,远程控制,点不允许远程控制。

(2)常规,加密级别,高,在使用标准Windows验证上点√!。

(3)网卡,将最多连接数上设置为0。

(4)高级,将里面的权限也删除.[我没设置]。

再点服务器设置,在Active Desktop上,设置禁用,且限制每个使用一个会话。

15、用户和组策略 打开管理工具,计算机管理—本地用户和组—用户; 删除Support_388945a0用户等等只留下你更改好名字的adminisrator权限。

计算机管理—本地用户和组—组 组。

我们就不分组了,没必要。

16、自己动手DIY在本地策略的安全选项 (1)当登陆时间用完时自动注销用户(本地) 防止黑客密码渗透。

(2)登陆屏幕上不显示上次登陆名(远程)如果开放3389服务,别人登陆时,就不会残留有你登陆的用户名,让他去猜你的用户名去吧。

(3)对匿名连接的额外限制。

(4)禁止按 alt+crtl +del(没必要)。

(5)允许在未登陆前关机[防止远程关机\\\/启动、强制关机\\\/启动]。

(6)只有本地登陆用户才能访问cd-rom。

(7)只有本地登陆用户才能访问软驱。

(8)取消关机原因的提示。

A、打开控制面板窗口,双击“电源选项”图标,在随后出现的电源属性窗口中,进入到“高级”标签页面; B、在该页面的“电源按钮”设置项处,将“在按下计算机电源按钮时”设置为“关机”,单击“确定”按钮,来退出设置框; C、以后需要关机时,可以直接按下电源按键,就能直接关闭计算机了。

当然,我们也能启用休眠功能键,来实现快速关机和开机; D、要是系统中没有启用休眠模式的话,可以在控制面板窗口中,打开电源选项,进入到休眠标签页面,并在其中将“启用休眠”选项选中就可以了。

(9)禁止关机事件跟踪。

开始“Start -\\\/>”运行“ Run -\\\/>输入”gpedit.msc “,在出现的窗口的左边部分,选择 ”计算机配置“(Computer Configuration )-\\\/> ”管理模板“(Administrative Templates)-\\\/> ”系统“(System),在右边窗口双击“Shutdown Event Tracker” 在出现的对话框中选择“禁止”(Disabled),点击然后“确定”(OK)保存后退出这样,你将看到类似于Windows 2000的关机窗口。

17、常见端口的介绍 TCP 21 FTP 22 SSH 23 TELNET 25 TCP SMTP 53 TCP DNS 80 HTTP 135 epmap 138 [冲击波] 139 smb 445 1025 DCE\\\/1ff70682-0a51-30e8-076d-740be8cee98b 1026 DCE\\\/12345778-1234-abcd-ef00-0123456789ac 1433 TCP SQL SERVER 5631 TCP PCANYWHERE 5632 UDP PCANYWHERE 3389 Terminal Services 4444[冲击波] UDP 67[冲击波] 137 netbios-ns 161 An SNMP Agent is running\\\/ Default community names of the SNMP Agent关于UDP一般只有腾讯QQ会打开4000或者是8000端口或者8080,那么,我们只运行本机使用4000这几个端口就行了。

18、另外介绍一下如何查看本机打开的端口和TCP\\\\IP端口的过滤 开始——运行——cmd,输入命令netstat -a ,会看到例如(这是我的机器开放的端口) Proto Local Address Foreign Address State TCP yf001:epmap yf001:0 LISTE TCP yf001:1025 yf001:0 LISTE TCP (用户名):1035 yf001:0 LISTE TCP yf001:netbios-ssn yf001:0 LISTE UDP yf001:1129 *:* UDP yf001:1183 *:* UDP yf001:1396 *:* UDP yf001:1464 *:* UDP yf001:1466 *:* UDP yf001:4000 *:* UDP yf001:4002 *:* UDP yf001:6000 *:* UDP yf001:6001 *:* UDP yf001:6002 *:* UDP yf001:6003 *:* UDP yf001:6004 *:* UDP yf001:6005 *:* UDP yf001:6006 *:* UDP yf001:6007 *:* UDP yf001:1030 *:* UDP yf001:1048 *:* UDP yf001:1144 *:* UDP yf001:1226 *:* UDP yf001:1390 *:* UDP yf001:netbios-ns *:* UDP yf001:netbios-dgm *:* UDP yf001:isakmp *:*现在讲讲基于Windows的TCP\\\/IP的过滤。

控制面板——网络和拨号连接——本地连接——INTERNET协议(TCP\\\/IP)—属性—高级—选项—tcp\\\/ip筛选—属性。

后添加需要的tcp 和UDP端口就可以了。

如果对端口不是很了解的话,不要轻易进行过滤,不然可能会导致一些程序无法使用。

19、关于浏览器 IE浏览器(或基于IE内核的浏览器)存在隐私问题,index.dat文件里记录着你上网的信息。

所以我推荐大家换一款其他内核浏览器。

现在炒的很热的FireFox,就很不错,如果你想打造一款属于自己的个性化浏览器,那FireFox是首选。

它有强大的扩展定制功能

还有传说中那款最快的浏览器 Opera ,速度惊人,界面华丽。

当然,由于国内一些网页并不是用WC3组织认证的标准HTML语言编写,所以IE还是不能丢,留作备用。

处理IE隐私可以用:Webroot WindowWasher。

RAMDISK 用内存虚拟出一块硬盘,将缓存文件写进去,不仅解决了隐私问题,理论上还能提高网速。

20、最后一招,也是最关键的一招:安装杀软与防火墙。

(责任编辑:李磊)

声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。联系xxxxxxxx.com

Copyright©2020 一句话经典语录 www.yiyyy.com 版权所有

友情链接

心理测试 图片大全 壁纸图片