心得的总结可以让我们更加深入地了解自己的学习风格和方法,用于记录内心感悟最好的方式就是写心得体会,下面是骄才站小编为您分享的大数据课程心得体会7篇,感谢您的参阅。
大数据课程心得体会篇1
通过两周的课程设计,完成了预定的目标,其中有很多的随想。老师的题目发下来的很早,大概提前了3周,当时就着手搜索有关线索二叉树的思想,思路,借了一本《数据结构-c语言描述》,在大体上就有了一个轮廓,先是输入二叉树,在对二叉树进行线索化,依次往下,但在具体实现时,遇到了很多问题:首先是思想的确定,其非常重要,以前有了这个想法,现在愈加清晰起来,因此,花了大量的时间在插入删除的具体操作设计上,大概三个晚上的时间,对其中什么不清晰明确之处均加以推敲,效果是显著的,在上机上相应的节约了时间。
通过具体的实验编码,思路是对的,但是在小问题上摔了一次又一次,大部分时间都是花在这方面,这个节点没传过来啊之类的,以后应该搞一个小册子,记录一些错误的集合,以避免再犯,思想与c语言联系起来,才是我们所需要的,即常说的理论与实践的关系。
数据结构是基础的一门课,对于有过编程经验的人,结合自己的编程体会去悟它的思想;而且我觉得随着编程经历的丰富对它的体会越深入,最初接触是对一些思想可能只是生硬的记忆,随着学习的深入逐渐领悟了很多。看了这次课程设计的题目,虽然具体要求没有看清,但是总结一下,可以看出,其需要我们能把一个具体案例或一件事情反映为程序来表达,数据结构就是桥梁,通过自己的设计,使应用能力得以融汇,对与问题,具有了初步的分析,继而解决之的能力,感觉对以后的学习会有很大的`帮助,学习无非是用于实践。
认识到自己的不足,希望能有进一步的发展。
数 据 结 构
课程设计报告
题 目: 一元多项式计算 专 业: 信息管理与信息系统 班 级: 2012级普本班 学 号: 201201011367 姓 名: 左帅帅 指导老师: 郝慎学 时 间:
一、课程设计题目分析
本课程设计要求利用c语言或c++编写,本程序实现了一元多项式的加法、减法、乘法、除法运算等功能。
二、设计思路
本程序采用c语言来完成课程设计。
1、首先,利用顺序存储结构来构造两个存储多项式a(x)和 b(x)的结构。
2、然后把输入,加,减,乘,除运算分成五个主要的模块:实现多项式输入模块、实现加法的模块、实现减法的模块、实现乘法的模块、实现除法的模块。
3、然后各个模块里面还要分成若干种情况来考虑并通过函数的嵌套调用来实现其功能,尽量减少程序运行时错误的出现。
4、最后编写main()主函数以实现对多项式输入输出以及加、减、乘、除,调试程序并将不足的地方加以修改。
三、设计算法分析
1、相关函数说明:
(1)定义数据结构类型为线性表的链式存储结构类型变量
typedef struct polynomial{}
(2)其他功能函数
插入函数void insert(polyn p,polyn h)
比较函数int compare(polyn a,polyn b)
建立一元多项式函数polyn create(polyn head,int m)
求解并建立多项式a+b,polyn add(polyn pa,polyn pb)
求解并建立多项式a-b,polyn subtract(polyn pa,polyn pb) 2
求解并建立多项式a*b,polyn multiply(polyn pa,polyn pb)
求解并建立多项式a/b,void device(polyn pa,polyn pb)
输出函数输出多项式,void print(polyn p)
销毁多项式函数释放内存,void destroy(polyn p)
主函数,void main()
2、主程序的流程基函数调用说明 (1)typedef struct polynomial {
float coef;
int expn;
struct polynomial *next; } *polyn,polynomial;
在这个结构体变量中coef表示每一项前的系数,expn表示每一项的指数,polyn为结点指针类型,属于抽象数据类型通常由用户自行定义,polynomial表示的是结构体中的数据对象名。
(2)当用户输入两个一元多项式的系数和指数后,建立链表,存储这两个多项式,主要说明如下:
polyn createpolyn(polyn head,int m)建立一个头指针为head、项数为m的一元多项式
p=head=(polyn)malloc(sizeof(struct polynomial));为输入的多项式申请足够的存储空间
p=(polyn)malloc(sizeof(struct polynomial));建立新结点以接收数据
insert(p,head); 调用insert函数插入结点
这就建立一元多项式的关键步骤
(3)由于多项式的系数和指数都是随即输入的,所以根据要求需要对多项式按指数进行降幂排序。在这个程序模块中,使用链表,根据对指数大小的比较,对各种情况进行处理,此处由于反复使用指针对各个结点进行定位,找到合适的位置再利用void insert(polyn p,polyn h)进行插入操作。 (4)加、减、乘、除、的算法实现:
在该程序中,最关键的一步是实现四则运算和输出,由于加减算法原则是一样,减法可通过系数为负的加法实现;对于乘除算法的大致流程都是:首先建立多项式a*b,a/b,然后使用链表存储所求出的乘积,商和余数。这就实现了多项式计算模块的主要功能。
(5)另一个子函数是输出函数 printpolyn();
输出最终的结果,算法是将最后计算合并的链表逐个结点依次输出,便得到整链表,也就是最后的计算式计算结果。由于考虑各个结点的指数情况不同,分别进行了判断处理。
四、程序新点
通过多次写程序,发现在程序在控制台运行时总是黑色的,本次写程序就想着改变一下,于是经过查资料利用system(“color e0”);可以函数解决,这里“e0,”e是控制台背景颜色,0是控制台输出字体颜色。
五、设计中遇到的问题及解决办法
首先是,由于此次课程设计里使用指针使用比较多,自己在指针多的时候易脑子混乱出错,对于此问题我是采取比较笨的办法在稿纸上写明白后开始进行 4
代码编写。
其次是,在写除法模块时比较复杂,自己通过查资料最后成功写出除法模块功能。
最后是,前期分析不足开始急于写代码,中途出现各种问题,算是给自己以后设计时的一个经验吧。
六、测试(程序截图)
1、数据输入及主菜单
2、加法和减法模块
3、乘法和除法模块
七、总结
通过本次应用c语言设计一元多项式基本计算程序,使我更加巩固了c语言程序设计的知识,以前对指针这一点使用是比较模糊,现在通过此次课程设计对指针理解的比较深刻了。而且对于数据结构的相关算法和函数的调用方面知识的加深。本次的课程设计,一方面提高了自己独立思考处理问题的能力;另一方面使自己再设计开发程序方面有了一定的小经验和想法,对自己以后学习其他语言程序设计奠定了一定的基础。
八、指导老师评语及成绩
附录:(课程设计代码)
#include#include #includetypedef struct polynomial {float coef; 6
int expn;
struct polynomial *next; } *polyn,polynomial;
//polyn为结点指针类型 void insert(polyn p,polyn h) {
if(p->coef==0) free(p);
//系数为0的话释放结点
else
{
polyn q1,q2;
q1=h;q2=h->next;
while(q2&&p->expnexpn)//查找插入位置
{
q1=q2; q2=q2->next; }
if(q2&&p->expn==q2->expn)//将指数相同相合并 {
q2->coef+=p->coef;
free(p);
if(!q2->coef)//系数为0的话释放结点
{ q1->next=q2->next; free(q2); }
}
else { p->next=q2; q1->next=p;
}//指数为新时将结点插入
} 7
} //建立一个头指针为head、项数为m的一元多项式 polyn create(polyn head,int m) {
int i;
polyn p;
p=head=(polyn)malloc(sizeof(struct polynomial));
head->next=null;
for(i=0;i
{
p=(polyn)malloc(sizeof(struct polynomial));//建立新结点以接收数据
printf(“请输入第%d项的系数与指数:”,i+1);
scanf(“%f %d”,&p->coef,&p->expn);
insert(p,head);
//调用insert函数插入结点
}
return head; } //销毁多项式p void destroy(polyn p) {
polyn q1,q2;
q1=p->next; 8
q2=q1->next;
while(q1->next)
{
free(q1);
q1=q2;//指针后移
q2=q2->next;
} } //输出多项式p int print(polyn p) {
polyn q=p->next;
int flag=1;//项数计数器
if(!q) //若多项式为空,输出0
{
putchar('0');
printf(“n”);
return;
}
while(q)
{
if(q->coef>0&&flag!=1) putchar('+'); //系数大于0且不是第一项 9
if(q->coef!=1&&q->coef!=-1)//系数非1或-1的普通情况
{
printf(“%g”,q->coef);
if(q->expn==1) putchar('x');
else if(q->expn) printf(“x^%d”,q->expn);
}
else
{
if(q->coef==1) {
if(!q->expn) putchar('1');
else if(q->expn==1) putchar('x');
else printf(“x^%d”,q->expn); }
if(q->coef==-1) {
if(!q->expn) printf(“-1”);
else if(q->expn==1) printf(“-x”);
else printf(“-x^%d”,q->expn); }
}
q=q->next;
flag++;
}
printf(“n”); } int compare(polyn a,polyn b) {
if(a&&b)
{
if(!b||a->expn>b->expn) return 1;
else if(!a||a->expnexpn) return -1;else return 0;
}
else if(!a&&b) return -1;//a多项式已空,但b多项式非空
else return 1;//b多项式已空,但a多项式非空 } //求解并建立多项式a+b,返回其头指针 polyn add(polyn pa,polyn pb) {
polyn qa=pa->next;
polyn qb=pb->next;
polyn headc,hc,qc;
hc=(polyn)malloc(sizeof(struct polynomial));//建立头结点 11
hc->next=null;
headc=hc;
while(qa||qb){
qc=(polyn)malloc(sizeof(struct polynomial));
switch(compare(qa,qb))
{
case 1:
qc->coef=qa->coef;
qc->expn=qa->expn;
qa=qa->next;
break;
case 0:
qc->coef=qa->coef+qb->coef;
qc->expn=qa->expn;
qa=qa->next;
qb=qb->next;
break;
case -1:
qc->coef=qb->coef;
qc->expn=qb->expn;
qb=qb->next;
break; 12
}
if(qc->coef!=0)
{
qc->next=hc->next;
hc->next=qc;
hc=qc;
}
else free(qc);//当相加系数为0时,释放该结点
}
return headc; } //求解并建立多项式a-b,返回其头指针 polyn subtract(polyn pa,polyn pb) {
polyn h=pb;
polyn p=pb->next;
polyn pd;
while(p)//将pb的系数取反
{ p->coef*=-1; p=p->next; }
pd=add(pa,h);
for(p=h->next;p;p=p->next)
//恢复pb的系数
p->coef*=-1; 13
return pd; } //求解并建立多项式a*b,返回其头指针 polyn multiply(polyn pa,polyn pb) {
polyn hf,pf;
polyn qa=pa->next;
polyn qb=pb->next;
hf=(polyn)malloc(sizeof(struct polynomial));//建立头结点
hf->next=null;
for(;qa;qa=qa->next)
{
for(qb=pb->next;qb;qb=qb->next)
{
pf=(polyn)malloc(sizeof(struct polynomial));
pf->coef=qa->coef*qb->coef;
pf->expn=qa->expn+qb->expn;
insert(pf,hf);//调用insert函数以合并指数相同的项
}
}
return hf; }
//求解并建立多项式a/b,返回其头指针 void device(polyn pa,polyn pb) {
polyn hf,pf,temp1,temp2;
polyn qa=pa->next;
polyn qb=pb->next;
hf=(polyn)malloc(sizeof(struct polynomial));//建立头结点,存储商
hf->next=null;
pf=(polyn)malloc(sizeof(struct polynomial));//建立头结点,存储余数
pf->next=null;
temp1=(polyn)malloc(sizeof(struct polynomial));
temp1->next=null;
temp2=(polyn)malloc(sizeof(struct polynomial));
temp2->next=null;
temp1=add(temp1,pa);
while(qa!=null&&qa->expn>=qb->expn)
{
temp2->next=(polyn)malloc(sizeof(struct polynomial));
temp2->next->coef=(qa->coef)/(qb->coef);
temp2->next->expn=(qa->expn)-(qb->expn);
insert(temp2->next,hf);
pa=subtract(pa,multiply(pb,temp2)); 15
qa=pa->next;
temp2->next=null;
}
pf=subtract(temp1,multiply(hf,pb));
pb=temp1;
printf(“商是:”);
print(hf);
printf(“余数是:”);
print(pf); } void main() { int choose=1; int m,n,flag=0; system(“color e0”); polyn pa=0,pb=0,pc,pd,pf;//定义各式的头指针,pa与pb在使用前付初值null printf(“请输入a(x)的项数:”); scanf(“%d”,&m); printf(“n”); pa=create(pa,m);//建立多项式a printf(“n”); printf(“请输入b(x)的项数:”); 16
scanf(“%d”,&n); printf(“n”); pb=create(pb,n);//建立多项式b printf(“n”); printf(“**********************************************n”); printf(“*
多项式操作菜单
printf(”**********************************************n“); printf(”tt 1.输出操作n“); printf(”tt 2.加法操作n“); printf(”tt 3.减法操作n“); printf(”tt 4.乘法操作n“); printf(”tt 5.除法操作n“); printf(”tt 6.退出操作n“); printf(”**********************************************n“); while(choose) {
printf(”执行操作:“);
scanf(”%d“,&flag);
switch(flag)
{
case 1:
printf(”多项式a(x):“);print(pa); *n”);
printf(“多项式b(x):”);print(pb);
break;
case 2:
pc=add(pa,pb);
printf(“多项式a(x)+b(x):”); print(pc);
destroy(pc); break;
case 3:
pd=subtract(pa,pb);
printf(“多项式a(x)-b(x):”); print(pd);
destroy(pd); break;
case 4:
pf=multiply(pa,pb);
printf(“多项式a(x)*b(x):”);
print(pf);
destroy(pf);
break;
case 5:
device(pa,pb); 18
break;
case 6:
exit(0);
break;
} }
destroy(pa);
destroy(pb); }
一,课程题目
(算符优先法计算算数表达式)以字符序列的形式从终端输入语法正确的、不含变量的整数表达式。利用教材表3.1(p53)给出的算符优先关系,实现对于算术四则混合运算(加、减、乘、除)表达式的求值。例如:7+(4-2)*3+12/2=19。注:按照四舍五入的方式将四则运算结果取整。
二,程序设计思想
在程序中分别设立一个运算符栈(optr 栈),用于存储‘+’,‘-’,‘*’,‘/’,‘#’(‘#’用于判断算术表达式结束),和一个操作数栈(opnd 栈),用于存放整数,输入算式后,先将数字与运算符分开入i栈,若为数字则先用转换函数将char类型的数转换为int型并进入操作数栈,若为运算符则根据教材表3.1(p53)给出的算符优先级关系,判断栈顶运算符和从键盘取得的运算符作优先级比较,若取得的运算符优先级高则进栈,直到取得运算符优先级低的,则将操作数取出作operate运算后存入栈顶,反复操作知道遇到‘#’,则结束运算,输出栈顶元素即为结果。 三,程序流程图
四,程序关键代码设计
本次程序设计共调用了12个方法分别是:
initnumstack,parseint,pushnum,popnum ,initcalstack,popcal ,pushcal,in,gettopcal,gettopnum,preced,operate。 其中
parseint方法
int parseint(char c[]){ int number[5],i; for(i=0;i
number[i]=(int)(c[i])-48; } i=10000*number[0]+1000*number[1]+100*number[2]+10 *number[3]+number[4]; return i; } 为将输入的数字字符型转换为整型的转换函数,通过ascall表的转换关系,将输入的字符型数字转换为整型。在入栈前进行此方法,以便整型数的计算。 preced,operate函数
char preced(char a , char b){ char c[7]={'+','-','*','/','(',')','#'}; char d[7][7]={ {'>','>',''}, {'>','>',''}, {'>','>','>','>','','>'}, {'>','>','>','>','','>'}, {'','>','>',' ','>','>'}, {'c=a+b; return c; } if (theta=='-'){
c=a-b; return c; } if (theta=='*'){
c=a*b; return c; } if (theta=='/'){
c=a/b; return c; } return 0; } 其中preced是判定运算符栈的栈顶运算符c1与读入的运算符c2之间优先关系函数;opearte为进行二元运算acb的函数,如果是编译表达式,则产生这个运算的一组相应的指令并返回存放结果的中间变量名;如果是解释执行表达式,则直接进行该运算,并返回运算结果。 五,程序源代码以及运行结果
#include#include #includetypedef struct{ int *base; int *top; int stacksize; }sqlnum; void initnumstack(sqlnum &s){ s.base=(int *)malloc(100*sizeof(int)); s.top=s.base; s.stacksize=100; } int parseint(char c[]){ int number[5],i; for(i=0;inumber[i]=(int)(c[i])-48; } i=10000*number[0]+1000*number[1]+100*number[2]+10*number[3]+number[4]; return i; } void pushnum(sqlnum &s,int c){ *s.top=c; s.top++; } int popnum(sqlnum &s){ int c; s.top--; c=*s.top; return c; } typedef struct{ char *base; char *top; int stacksize; }sqlcal; void initcalstack(sqlcal &s){ s.base=(char *)malloc(100*sizeof(char)); s.top=s.base; s.stacksize=100; } void pushcal(sqlcal &s,char c){ *s.top=c; s.top++; } char popcal(sqlcal &s){ char c; s.top--; c=*s.top; return c; }
int in(char c,char s[]){ int i; for(i=0;i
if(c==s[i])
return 1;
return 0; }
char gettopcal(sqlcal &s){ char c; c=*(s.top-1); return c; } int gettopnum(sqlnum &s){ int c; c=*(s.top-1); return c; } char preced(char a , char b){ char c[7]={'+','-','*','/','(',')','#'}; char d[7][7]={ {'>','>',''}, {'>','>',''}, {'>','>','>','>','','>'}, {'>','>','>','>','','>'}, {'','>','>',' ','>','>'}, {'if(b=='+'){
return d[0][0];}
if(b=='-'){
return d[0][1];}
if(b=='*'){
return d[0][2];}
if(b=='/'){
return d[0][3];}
if(b=='('){
return d[0][4];}
if(b==')'){
return d[0][5];}
if(b=='#'){
return d[0][6];} } if(a=='-'){
if(b=='+'){
return d[1][0];}
if(b=='-'){
return d[1][1];}
if(b=='*'){
return d[1][2];}
if(b=='/'){
return d[1][3];}
if(b=='('){
return d[1][4];}
if(b==')'){
return d[1][5];}
if(b=='#'){
return d[1][6];} } if(a=='*'){
if(b=='+'){
return d[2][0];}
if(b=='-'){
return d[2][1];}
if(b=='*'){
return d[2][2];}
if(b=='/'){
return d[2][3];}
if(b=='('){
return d[2][4];}
if(b==')'){
return d[2][5];}
if(b=='#'){
return d[2][6];} } if(a=='/'){
if(b=='+'){
return d[3][0];}
if(b=='-'){
return d[3][1];}
if(b=='*'){
return d[3][2];}
if(b=='/'){
return d[3][3];}
if(b=='('){
return d[3][4];}
if(b==')'){
return d[3][5];}
if(b=='#'){
return d[3][6];} } if(a=='('){
if(b=='+'){
return d[4][0];}
if(b=='-'){
return d[4][1];}
if(b=='*'){
return d[4][2];}
if(b=='/'){
return d[4][3];}
if(b=='('){
return d[4][4];}
if(b==')'){
return d[4][5];}
if(b=='#'){
return d[4][6];} } if(a==')'){
if(b=='+'){
return d[5][0];}
if(b=='-'){
return d[5][1];}
if(b=='*'){
return d[5][2];}
if(b=='/'){
return d[5][3];}
if(b=='('){
return d[5][4];}
if(b==')'){
return d[5][5];}
if(b=='#'){
return d[5][6];} } if(a=='#'){
if(b=='+'){
return d[6][0];}
if(b=='-'){
return d[6][1];}
if(b=='*'){
return d[6][2];}
if(b=='/'){
return d[6][3];}
if(b=='('){
return d[6][4];}
if(b==')'){
return d[6][5];}
if(b=='#'){
return d[6][6];} } return 0; } int operate (int a,char theta,int b){ int c ; if (theta=='+'){
c=a+b; return c; } if (theta=='-'){
c=a-b; return c; } if (theta=='*'){
c=a*b; return c; } if (theta=='/'){
c=a/b; return c; } return 0; } void main(){ sqlcal optr; sqlnum opnd; char c,d[5]={'0','0','0','0','0'}; int f=0; char op[]={'+','-','*','/','(',')','#'}; initcalstack(optr); initnumstack(opnd); printf(“请输入算式并在尾部添加一个#号n”); c=getchar(); pushcal(optr,'#'); while(c!='#'||gettopcal(optr)!='#') { if (!in(c,op))
{
d[0]=d[1];
d[1]=d[2];
d[2]=d[3];
d[3]=d[4];
d[4]=c;
c=getchar(); f=1;
}
else
{
if(f==1){
pushnum(opnd,parseint(d));
d[0]='0';d[1]='0';d[2]='0';d[3]='0';d[4]='0';
f=0;
}
switch(preced(gettopcal(optr),c))
{
case'
pushcal(optr,c);
c=getchar();
break;
case'=':
popcal(optr);
c=getchar();
break;
case'>':
char theta;int a;int b;
theta=popcal(optr);
b=popnum(opnd);
a=popnum(opnd);
pushnum(opnd,operate(a,theta,b));
break;
}
} } printf(“%dn”,gettopnum(opnd)); }
程序运行结果: 六,心得体会
通过这次编程,我发现很多编程过程中的不足与问题,很多问题由于考虑不全面,导致程序运行失败。还有一些小问题,比如字母的大小写,括号的遗漏,语法书写错误等等一些基础错误,也是让我体会很深写程序要谨慎仔细。
数据结构课程设计
1、 赫夫曼编码器
设计一个利用赫夫曼算法的编码和译码系统,重复地显示并处理以下项目,直到选择退出为止。 要求:
1) 将权值数据存放在数据文件(文件名为data.txt,位于执行程序的当前目录中)
2) 初始化:键盘输入字符集大小26、26个字符和26个权值(统计一篇英文文章中26个字母),建立哈夫曼树;
3) 编码:利用建好的哈夫曼树生成哈夫曼编码;
4) 输出编码(首先实现屏幕输出,然后实现文件输出); 5) 界面优化设计。
代码如下:
#include#include#include#include #define n 200typedef struct htnode
//结构体 { int weight;
char ch; int parent,lchild,rchild; }htnode; typedef char * * hcode;
void save(int n,htnode *ht)
//把权值保存到文件 {
file * fp;
int i;
if((fp=fopen(“data.txt”,“wb”))==null)
{
printf(“cannot open filen”);
return;
}
for(i=0;i
if(fwrite(&ht[i]。weight,sizeof(struct htnode),1,fp)!=1)
printf(“file write errorn”);
fclose(fp);
system(“cls”);
printf(“保存成功!”);
}
void create_h(int n,int m,htnode *ht)
//建立赫夫曼树,进行编码 {
int w,k,j; char c; for(k=1;k
if(k
{
printf(“n请输入权值和字符(用空格隔开): ”);
scanf(“%d”,&w);
scanf(“ %c”,&c); ht[k]。ch=c;
ht[k]。weight=w;
}
else ht[k]。weight=0;
ht[k]。parent=ht[k]。lchild=ht[k]。rchild=0; }
int p1,p2,w1,w2;
for(k=n+1;k
p1=0;p2=0;
w1=32767;w2=32767;
for(j=1;j
{
if(ht[j]。parent==0)
{
if(ht[j]。weight
{
w2=w1;p2=p1;
w1=ht[j]。weight;
p1=j;
}
else if(ht[j]。weight
{
w2=ht[j]。weight;
p2=j;
}
}
} ht[k]。lchild=p1;ht[k]。rchild=p2; ht[k]。weight=ht[p1]。weight+ht[p2]。weight;
ht[p1]。parent=k;ht[p2]。parent=k;
} printf(“输入成功!”); }
void coding_h(int n,htnode *ht)
//对结点进行译码 { int k,sp,fp,p; char *cd; hcode hc;
hc=(hcode)malloc((n+1)*sizeof(char *));
cd=(char *)malloc(n*sizeof(char)); cd[n-1]='';
printf(“************************n”); printf(“char codingn”);
for(k=1;k
{
sp=n-1;p=k;fp=ht[k]。parent;
for(;fp!=0;p=fp,fp=ht[fp]。parent)
if(ht[fp]。lchild==p)
cd[--sp]='0';
else
cd[--sp]='1';
hc[k]=(char *)malloc((n-sp)*sizeof(char));
strcpy(hc[k],&cd[sp]);
printf(“%c
%sn”,ht[k]。ch,hc[k]);
}
printf(“************************n”); free(cd) ; } void read(int n,htnode *ht)
//从文件中读出数据 {
int i; file * fp; if((fp=fopen(“data.txt”,“rb”))==null) {
printf(“cannot open filen”);
exit(0); } for(i=0;i
fread(&ht[i]。weight,sizeof(struct htnode),1,fp); // printf(“%d n”,ht[i]。weight);
} coding_h(n,ht);
fclose(fp); }
void print_h(int m,htnode *ht)
//输出赫夫曼造树过程 { int k; printf(“************************n”); printf(“num weight
par lch rch n”); for(k=1;k
printf(“%d ”,k);
printf(“
%d”,ht[k]。weight);
printf(“
%d”,ht[k]。parent);
printf(“
%d”,ht[k]。lchild);
printf(“
%dn”,ht[k]。rchild);
} printf(“************************n”); }
void decode(int m,htnode *ht)
//对输入的电文进行译码 { int i,j=0; char a[10]; char endflag='2'; i=m; printf(“输入发送的编码,以‘2’结束:”); scanf(“%s”,&a); printf(“译码后的字符:”); while(a[j]!='2') {
if(a[j]=='0')
i=ht[i]。lchild;
else i=ht[i]。rchild;
if(ht[i]。lchild==0)
//ht[i]是叶结点
{
printf(“%c”,ht[i]。ch);
i=m;
//回到根结点
}
j++; } printf(“n”); if(ht[i]。lchild!=0&&a[j]!='2')
printf(“error”); }
int main()
//主函数 { int n,m,c; htnode ht[n]; do {
system(“color 2f”);
//运行环境背景颜色。
printf(“nntt*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=ntt”);
printf(“nttt 赫夫曼编译码系统 ttt”);
printf(“nntt*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=ntt”);
printf(“nttt1.输入权值、字母nttt2.把数据写入文件nttt3.输出赫夫曼编码表nttt”);
printf(“4.输出赫夫曼译码表nttt5.输入编码并译码。nttt6.从文件中读出数据nttt7.退出”);
printf(“nnttt请选择:”);
scanf(“%d”,&c);
switch(c)
{
case 1:system(“cls”);printf(“输入多少结点:”);
scanf(“%d”,&n);m=2*n-1;create_h(n,m,ht);break;
case 2:system(“cls”);save(n,ht);break;
case 3:system(“cls”);print_h(m,ht);break;
case 4:system(“cls”);coding_h(n,ht);break;
case 5:system(“cls”);decode(m,ht);break;
case 6:system(“cls”);read(n,ht);break;
case 7:system(“cls”);exit(0);
}
}while(1); return 0; }
运行界面如下:
2、 学生成绩管理(链表实现) 要求:
实现如下功能:增加、查找、删除、输出、退出。
代码如下:
#include#include#includetypedef struct score//定义成绩信息结构体 {
char number[20]; char name[20]; char chinese[20]; char english[20]; char math[20]; }score; typedef struct node_score
//定义成绩信息链表结点,包括数据域和指针域 {
score data; struct node_score *next; }node_score,*p_node_score; p_node_score headscore;//定义链表的头指针为全局变量 void printscore(score s) //输出信息函数 { printf(“ %10s”,s.number); printf(“ |
%-6s”,s.name); printf(“
|
%-3s”,s.chinese); printf(“
|
%-3s”,s.english);
printf(“ |
%-3sn”,s.math); } void view()//输出函数 {
p_node_score pnodescore;
pnodescore=headscore; printf(“
学号
|
姓名
| 语文成绩
| 英语成绩| 高数成绩n”); while(pnodescore != null) {
printscore(pnodescore->data);//输出学生信息和成绩信息
pnodescore=pnodescore->next; } } void add() {
p_node_score pnodescore; // 定义一个节点
pnodescore=(p_node_score)malloc(sizeof(node_score));//为节点分配存储空间
printf(“请输入学号:”); scanf(“%s”,pnodescore->data.number); printf(“请输入姓名:”); scanf(“%s”,pnodescore->data.name); printf(“请输入语文成绩:”); scanf(“%s”,pnodescore->data.chinese); printf(“请输入英语成绩:”); scanf(“%s”,pnodescore->data.english); printf(“请输入高数成绩:”); scanf(“%s”,pnodescore->data.math); if(headscore==null) { //如果头结点为空
headscore=pnodescore;
pnodescore->next=null; } else
{ //如果头结点不为空
pnodescore->next=headscore;
headscore=pnodescore;//将头结点新结点
} } void input() { int n,i; printf(“输入几个学生的数据:”); scanf(“%d”,&n); for(i=0;i
add(); printf(“输入成功!”); } int delete() { p_node_score pnodescore,p1; //p1为pnodescore的前驱
p1=headscore; if(p1==null) {
printf(“成绩表中没有数据!请先添加数据!n”);
return 0; } char deletenumber[20];
printf(“请数入要删除的学生学号:”); scanf(“%s”,deletenumber); if(strcmp(p1->data.number,deletenumber)==0)
{ //如果要删除的结点在第一个
headscore=p1->next;
pnodescore=p1;
printf(“学号为%s的学生信息已经删除!n”,deletenumber);
return 0; } else
{
pnodescore=p1->next;
while(pnodescore!=null)
{
if(strcmp(pnodescore->data.number,deletenumber)==0)
{
p1->next=pnodescore->next;
printf(“学号为%s的学生信息已经删除!n”,deletenumber);
return 0;
}
else
{ //否则,结点向下一个,p1仍为pnodescore的前驱
p1=pnodescore;
pnodescore=pnodescore->next;
}
} } printf(“没有此学号的学生!”); } int change() {
p_node_score pnodescore;
pnodescore=headscore; if(pnodescore==null) {
printf(“成绩表中没有数据!请先添加数据!n”);
return 0; } char editnumber[20]; printf(“请输入你要修改的学生学号:”); scanf(“%s”,editnumber); while(pnodescore!=null) {
if(strcmp(pnodescore->data.number,editnumber)==0)
{ //用strcmp比较两字符串是否相等,相等则返回0
printf(“原来的学生成绩信息如下:n”); //输出原来的成绩信息
printf(“
学号
|
姓名
| 语文成绩
| 英语成绩| 高数成绩n”);
printscore(pnodescore->data);
printf(“语文新成绩:”);
scanf(“%s”,pnodescore->data.chinese);
printf(“英语新成绩:”);
scanf(“%s”,pnodescore->;
printf(“高数新成绩:”);
scanf(“%s”,pnodescore->data.math);
printf(“成绩已经修改!”);
return 0;
}
pnodescore=pnodescore->next; //如果不相等,pnodescore则指向下一个结点
} printf(“没有此学号的学生!n”); //如果找到最后都没有,则输出没有此学号的学生
} int find() {
p_node_score pnodescore;
pnodescore=headscore; if(pnodescore==null) {
printf(“成绩表中没有数据!请先添加数据!n”);
return 0; } char findnumber[20]; printf(“请输入你要查找的学生学号:”); scanf(“%s”,findnumber); while(pnodescore!=null) {
if(strcmp(pnodescore->data.number,findnumber)==0)
{
printf(“你要查找的学生成绩信息如下:n”);
printf(“
学号
|
姓名
| 语文成绩
| 英语成绩| 高数成绩n”);
printscore(pnodescore->data);
return 0;
}
pnodescore=pnodescore->next; } printf(“没有此学号的学生!n”); } int main()
//主函数 { int choice=0; headscore=null; int c; do {
system(“color 2f”);
//运行环境背景颜色。
printf(“nntt*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=ntt”);
printf(“nttt 学生成绩管理系统 ttt”);
printf(“nntt*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=ntt”);
printf(“nttt1.输入成绩信息nttt2.输出成绩信息nttt3.添加成绩信息nttt”);
printf(“4.修改成绩信息nttt5.删除成绩信息nttt6.查询成绩信息nttt7.退出”);
printf(“nnttt请选择:”);
scanf(“%d”,&c);
switch(c)
{
case 1:system(“cls”);input();break;
case 2:system(“cls”);view();break;
case 3:system(“cls”);add();break;
case 4:system(“cls”);change();break;
case 5:system(“cls”);delete();break;
case 6:system(“cls”);find();break;
case 7:system(“cls”);exit(0);
}
}while(1); return 0; }
运行界面如下:
读书破万卷下笔如有神,以上就是一秘为大家整理的4篇《数据结构课程设计心得体会》,能够帮助到您,是一秘最开心的事情。
大数据课程心得体会篇2
通过本次课程设计,对图的概念有了一个新的认识,在学习离散数学的时候,总觉得图是很抽象的东西,但是在学习了《数据结构与算法》这门课程之后,我慢慢地体会到了其中的奥妙,图能够在计算机中存在,首先要捕捉他有哪些具体化、数字化的信息,比如说权值、顶点个数等,这也就说明了想要把生活中的信息转化到计算机中必须用数字来完整的构成一个信息库,而图的存在,又涉及到了顶点之间的联系。图分为有向图和无向图,而无向图又是有向图在权值双向相等下的一种特例,如何能在计算机中表示一个双向权值不同的图,这就是一件很巧妙的事情,经过了思考和老师同学的帮助,我用edges[i][j]=up和edges[j][i]=up就能实现了一个双向图信息的存储。
对整个程序而言,dijkstra算法始终都是核心内容,其实这个算法在实际思考中并不难,也许我们谁都知道找一个路径最短的方法,及从顶点一步一步找最近的路线并与其直接距离相比较,但是,在计算机中实现这么一个很简单的想法就需要涉及到很多专业知识,为了完成设计,在前期工作中,基本都是以学习c语言为主,所以浪费了很多时间,比如说在程序中,删除顶点和增加顶点的模块中都有和建图模块相互重复的函数,但是由于技术的原因,只能做一些很累赘的函数,可见在调用知识点,我没有掌握好。
不过,有了这次课程设计的经验和教训,我能够很清楚的对自己定一个合适的水平,而且在这次课程设计中我学会了运用两个新的函数sprintf和包涵在#include头文件中的输入函数。因为课程设计的题目是求最短路径,本来是想通过算法的实现把这个程序与交通情况相连,但是因为来不及查找各地的信息,所以,这个计划就没有实现,我相信在以后有更长时间的情况下,我会做出来的。
1、巩固和加深了对数据结构的理解,提高综合运用本课程所学知识的能力。
2、培养了我选用参考书,查阅手册及文献资料的能力。培养独立思考,深入研究,分析问题、解决问题的能力。
3、通过实际编译系统的分析设计、编程调试,掌握应用软件的分析方法和工程设计方法。
4、通过课程设计,培养了我严肃认真的工作作风,逐步建立正确的生产观念、经济观念和全局观念。
根据我在实习中遇到得问题,我将在以后的学习过程中注意以下几点:
1、认真上好专业实验课,多在实践中锻炼自己。
2、写程序的过程中要考虑周到,严密。
3、在做设计的时候要有信心,有耐心,切勿浮躁。
4、认真的.学习课本知识,掌握课本中的知识点,并在此基础上学会灵活运用。
5、在课余时间里多写程序,熟练掌握在调试程序的过程中所遇到的常见错误,以便能节省调试程序的时间。
这是一门纯属于设计的科目,它需用把理论变为上机调试。在学习科目的第一节课起,李老师就为我们阐述了它的重要性。它对我们来说具有一定的难度。它是其它编程语言的一门基本学科。
刚开始学的时候确实有很多地方我很不理解,每次上课时老师都会给我们出不同的设计题目,对于我们一个初学者来说,无疑是一个具大的挑战,撞了几次壁之后,我决定静下心来,仔细去写程序。老师会给我们需要编程的内容一些讲解,顺着老师的思路,来完成自己的设计,我们可以开始运行自己的程序,可是好多处的错误让人看的可怕,还看不出到底是哪里出现了错误,但是程序还是得继续下去,我多次请教了老师和同学,逐渐能自己找出错误,并加以改正。
tc里检查错误都是用英文来显示出来的,经过了这次课程设计,现在已经可以了解很多错误在英文里的提示,这对我来说是一个突破性的进步,眼看着一个个错误通过自己的努力在我眼前消失,觉得很是开心。此次的程序设计能够成功,是我和我的同学三个人共同努力作用的结果。在这一段努力学习的过程中,我们的编程设计有了明显的提高。
其实现在想起来,收获还真是不少,虽然说以前非常不懂这门语言,在它上面花费了好多心血,觉得它很难,是需用花费了大量的时间编写出来的。现在真正的明白了一些代码的应用,每个程序都有一些共同点,通用的结构,相似的格式。只要努力去学习,就会灵活的去应用它。
大数据课程心得体会篇3
时间真的如轮一样在飞转,一周的实训又一次即将结束,可是,感觉仿佛只过去了一天。实训结束也意味着这个学期也将结束。不管时间多么的飞快,这周短暂的vb程序设计实训同样让我们收益不少。 首先,不说我们学到了多少专业知识,也不说我们学到了多少专业技能。在这样零下1度的天气中实训,着实是锻炼我们的意志力。人都有惰性,这是无可厚非的事实。在寒冷的天气里,赖床就更是常有的事。因为要实训,我们很多平常经常迟到的同志不得不早起。就说实训的第一天,外面飘着白雪,早上,手机的闹铃已经响过第二遍了。
我们宿舍的几个姐妹还躲在被窝里无动于衷。可是,当一个姐们突然说了一句,“这周要实训”时,我们都‘呼啦’爬了起来,以惊人的速度洗漱好,急忙赶到教室。不管平时多么懒散的同学,这次实训都表现的异样的认真。这应该算是实训赋给我们的特别礼物吧! 实训的目的无非就是训练我们的操作能力,以及提高我们的专业技能。实践出真知,这是不变的真理。毫无疑问,这次vb程序设计实训让我们每一位同学都在不同程度上提高了编程技能。编程是我们的专业课程,可是,在老师平时上课的时候,班上大部分同学都以怠慢的态度对待。所以,对这门课程学的泛泛的。
实训前,如果要我们做一个管理系统,我想班上能完成任务的同学应该寥寥无几。在实训前,我们常抱怨,编程有多么的难。一个学期的学习,我们居然都不能完全的做出一个管理系统来。而这次短短的实训,却让我们学会了做管理系统。没错,就是短短的几天,我们每位同学都完成了一个自己做的管理系统。这说明,编程它本身不是很难,而在于你是不是真正的学习了。这次实训让我深刻的明白,你的态度决定一切。就以我自己的经历来说,一个学期的学习还没没短短一周学到的多。这是为什么?主导因素就是态度。在平日的学习中,我抱着不以为然的态度,以懒散的心态对待这门课程。所以,一个学期下来,我的编程学的一塌糊涂。而这次实训,就像是一场实战,必须认真对待。而这几天踏踏实实的学习,将我平日落下的学习全都补救过来了。真的非常感谢这次实训。通过这次实训,我的编程技能确比之前实提高了不少。
更重要的是,在这次实训中,让我明白:学习或生活中发现了自己的不足,就要及时改进。不管是在学习中,还是在生活中,有不懂的没关系。而,如果不懂,也不去问,就是一件很悲哀的事情。这次实训中,我遇到了很多不懂的问题,但是,这些不懂最后都被我弄懂了。因为遇到不懂的不会做的我及时主动询问了周围的同学。同学不懂的,我又询问了老师。不要认为问别人是一件让人很羞耻的事情。不懂就问,不但不会让你蒙羞,反而能显示你的真实与谦虚。
总之,这次实训我又有不少新收获。
最后,还要感谢这次实训期间周围同学的热情帮助和老师的热心讲解与指导。
大数据课程心得体会篇4
本学期开设的《数据结构基础》课程已经告一段落,现就学习体会进行学习总结。
这是一门纯属于设计的科目,它需用把理论变为上机调试。刚开始学的时候确实有很多地方我很不理解,每次上课时老师都会给我们出不同的设计题目,对于我们一个初学者来说,无疑是一个具大的挑战,撞了几次壁之后,我决定静下心来,仔细去写程序。老师会给我们需要编程的内容一些讲解,顺着老师的思路,来完成自己的设计,我们可以开始运行自己的程序。
这门课结束之后,我总结了学习中遇到的一些问题,最为突出的,书本上的知识与老师的讲解都比较容易理解,但是当自己采用刚学的知识点编写程序时却感到十分棘手,有时表现在想不到适合题意的算法,有时表现在算法想出来后,只能将书本上原有的程序段誊写到自己的程序中再加以必要的连接以完成程序的编写。刚开始学的时候确实有很多地方我很不理解,每次上上机课时老师都会给我们出不同的设计题目,对于我们一个初学者来说,无疑是一个具大的挑战,撞了几次壁之后,我决定静下心来,仔细去写程序。老师会给我们需要编程的内容一些讲解,顺着老师的思路,来完成自己的设计,我们可以开始运行自己的程序,可是好多处的.错误让人看的可怕,还看不出到底是哪里出现了错误,但是程序还是得继续下去,我多次请教了老师和同学,逐渐能自己找出错误,并加以改正。tc里检查错误都是用英文来显示出来的,经过了这次课程设计,现在已经可以了解很多错误在英文里的提示,这对我来说是一个突破性的进步,眼看着一个个错误通过自己的努力在我眼前消失,觉得很是开心。此次的程序设计能够成功,是我和我的同学三个人共同努力作用的结果。在这一段努力学习的过程中,我们的编程设计有了明显的提高。
其实现在想起来,收获还真是不少,虽然说以前非常不懂这门语言,在它上面花费了好多心血,觉得它很难,是需用花费了大量的时间编写出来的。现在真正的明白了一些代码的应用,每个程序都有一些共同点,通用的结构,相似的格式。只要努力去学习,就会灵活的去应用它。
以上便是我对《数据结构基础》这门课的学习总结,我会抓紧时间将没有吃透的知识点补齐,克服学习中遇到的难关,在打牢基础的前提下向更深入的层面迈进!
大数据课程心得体会篇5
本次课程设计,使我对《数据结构》这门课程有了更深入理解。《数据结构》是一门实践性较强课程,为了学好这门课程,必须在掌握理论知识同时,加强上机实践。
我课程设计题目是线索二叉树运算。刚开始做这个程序时候,感到完全无从下手,甚至让我觉得完成这次程序设计根本就是不可能,于是开始查阅各种资料以及参考文献,之后便开始着手写程序,写完运行时有很多问题。特别是实现线索二叉树删除运算时很多情况没有考虑周全,经常运行出现错误,但通过同学间帮助最终基本解决问题。
在本课程设计中,我明白了理论与实际应用相结合重要性,并提高了自己组织数据及编写大型程序能力。培养了基本、良好程序设计技能以及合作能力。这次课程设计同样提高了我综合运用所学知识能力。并对vc有了更深入了解。《数据结构》是一门实践性很强课程,上机实习是对学生全面综合素质进行训练一种最基本方法,是与课堂听讲、自学和练习相辅相成、必不可少一个教学环节。上机实习一方面能使书本上知识变“活”,起到深化理解和灵活掌握教学内容目;另一方面,上机实习是对学生软件设计综合能力训练,包括问题分析,总体结构设计,程序设计基本技能和技巧训练。此外,还有更重要一点是:机器是比任何教师更严厉检查者。因此,在“数据结构”学习过程中,必须严格按照老师要求,主动地、积极地、认真地做好每一个实验,以不断提高自己编程能力与专业素质。
通过这段时间课程设计,我认识到数据结构是一门比较难课程。需要多花时间上机练习。这次程序训练培养了我实际分析问题、编程和动手能力,使我掌握了程序设计基本技能,提高了我适应实际,实践编程能力。总来说,这次课程设计让我获益匪浅,对数据结构也有了进一步理解和认识。
大数据课程心得体会篇6
数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。
一般认为,一个数据结构是由数据元素依据某种逻辑联系组织起来的。对数据元素间逻辑关系的描述称为数据的逻辑结构;数据必须在计算机中存储,数据的存储结构是数据结构的实现形式,是其在计算机内的表示;此外讨论一个数据结构必须同时讨论在该类数据结构上执行的运算才有意义。一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率。
在许多类型的程序的设计中,数据结构的选择是一个基本的设计考虑因素。许多大型系统的构造经验表明,系统实现的困难程度和系统构造的质量都严重的依赖于是否选择了最优的数据结构。许多时候,确定了数据结构后,算法就容易得到了。有些时候事情也会反过来,我们根据特定的算法来选择数据结构与之适应。不论哪种情况,选择合适的数据结构都是非常重要的。
从上面我们了解到了数据结构的重要性,它是一个程序的关键因素。拿到“阴风习习的大楼”这个题目时,一开始不知道从哪入手,以为可以把每个位置看成一个图的一个节点,从而可以用邻接表这种结构,通过遍历邻接表,每次选择权值小的路径走就可以得到最短的路径了。我错了,完全的错了。通过认真的分析后,我认识到,这能简单的看成一个图,因为每个位置都只能到达它邻接的位置而不是和其他各位置都有联系。而且如果每个位置转化为图的一个节点,这样要表示每个节点的关系就需要n*n节点和n^4大小的数组来存储各个点的关系。还有这个大楼结构想转化为一个图也是不容易的。根据书上有些类似的“老鼠迷宫问题”,让我想打,不如就用n*n大小的数组直接存储大楼结构。通过类似走迷宫的方法来遍历,当遍历完所有路径后就能得到一个最小的路径。那接下来怎样遍历呢?我采用了深度优先遍历的方法,这样可以用递归的方法,简化代码。虽然理解上有一定困难,而且递归条件的控制要注意。
通过这次数据结构程序设计,不仅让我对c语言的一些知识得到了回顾,加深了对c语言的掌握。同时也让我对数据结构知识得到了一定的掌握。知道了怎么去分析一个题目,怎样选择比较好的数据结构。让我从怎么样实现一个程序功能,转变到怎么用更少的空间,更短的时间完成程序设计。空间和时间上对程序的优化是评价一个程序好坏的关键标准。
通过这次数据结构的程序设计也让我懂得了怎么样去设计一个程序。从问题分析中找出程序所要解决的关键问题和数据结构的选择;在概要设计中完成程序的大体轮廓;在详细设计中解决关键问题的算法和设计;在调试分析中完成程序最终的修补。这样一个比较好的程序就设计出来了。
大数据课程心得体会篇7
时光荏苒,如白驹过隙般匆匆而去,眼看的一年实习生活马上就要成为美好的回忆。在这短短一年的时间里我感觉自己成长了许多,从象牙塔迈出的第一步走的特别的稳重,感谢学校给我提供了一个努力拼搏的舞台,让我学会了如何面对这个真实的社会,实现了从在校学子向职场人士的转变。
实习是继中考后又一个人生的十字路口,它意味着人生一个新时期的到来——告别学校走入社会。社会是个大的集合,不管是以前的学校还是现在的实习单位都同属这个集合。这几个月来,给我感觉学校纯一点,单位复杂一点。不过我知道不论学校还是单位其实都是社会的缩影。实习的真正目的就是让我们这些在校的学生走入社会。社会是形形色色、方方面面的,你要学会的是适应这个社会而不是让这个社会适应你。
刚刚走进社会不适应是正常的。人有的时候很奇怪:心情或者更准确地说是热情往往会因时间、环境、所经历的事而起伏。就像我对境界一词的理解:人与他所受教育、所处环境、所经历对事物的理解、判断、预知的程度就是这个人的境界。
作为一名中专生,专业需求的建筑认识实训开始了,我们全专业的同学在xx的各大建筑工地认识实习,对于我当初选择土木工程这样的专业,说真的我并不知道什么是土木工程。现在我对土木工程有了基本的感性认识了,我想任何事的认识都是通过感性认识上升到理性认识的,这次认识实习应该是一个锻炼的好机会!
土木工程是建造各类工程设施的学科、技术和工程的总称。它既指与与人类生活、生产活动有关的各类工程设施,如建筑公程、公路与城市道路工程、铁路工程、桥梁工程、隧道工程等,也指应用材料、设备在土地上所进行的勘测、设计、施工等工程技术活动。
我应该知道现在的我还不够成熟,如果说人生是一片海洋,那么我应该在这片海洋里劈波斩浪,扬帆远航而不是躲在避风港里。只要经历多了,我就会成熟;我就会变强。我相信。那时的成功是领导、师傅们给我鼓励,是实习的经历给我力量,所以我感谢领导师傅还有我的好朋友们,也感谢学校给我这次实习的机会。
一年的实习生活中,紧张过,努力过,醒悟过,开心过。这些从为有过的经历让我进步了 ,成长了。学会了一些在学校从未学过以后也学不到的东西,也有很多的感悟。
短短一年时间,我收获了诚挚的友情,结识了和我一同来的实习生;我收获了宝贵的经验,收获了真正的成熟。
会计实习心得体会最新模板相关文章: