欢迎光临汇报书
当前位置: > 报告范文 > 综合报告 > 报告范文

数据结构实验报告总结

发布时间:2026-08-17 16:08:14 浏览次数:39 格式:DOC

导语:这份c语言表达式求值报告,适用于国企技术岗实习报告,试用期总结,写代码调试过程。 重点聚焦:讲清楚自己参与了一个计算器程序开发,主要负责栈结构实现和表达式求值逻辑性。 全文约1050字,阅读需10分钟。

报告信息

适用对象:计算机专业学生、刚入职的程序员、需要交周报的实习生。

使用场合:国企技术岗实习报告,试用期总结,写代码调试过程。

核心内容:讲清楚自己参与了一个计算器程序开发,主要负责栈结构实现和表达式求值逻辑性。

内容体量:1050字
  阅读时长:10分钟

报告正文

# include

# define ma__operator_num 100 //运算符栈数组长度

# define ma__data_num 100 //运算数栈数组长度

typedef struct opstack //定义运算符栈

{

char opstack[ma__operator_num];

int top;

}opstack, _popstack;

typedef struct datastack //定义运算数栈

double stack[ma__data_num];

}datastack, _pdatastack;

void initpopstack(popstack postack) //初始化运算符栈

if( !(postack = (popstack)malloc(sizeof(opstack)))) //为运算符栈分配空间

printf(分配内存空间失败! );

e_it(-1);

}

postack->;;;top = -1;

void initpdatastack(pdatastack pdstack) //初始化运算数栈

if( !(pdstack = (pdatastack)malloc(sizeof(datastack)))) //为运算数栈分配空间

pdstack->;;;top = -1;

void pushopstack(popstack postack, char ch) //运算符进栈

postack->;;;opstack[ (postack->;;;top)] = ch;

void popopstack(popstack postack, char ch) //运算符出栈

ch = postack->;;;opstack[postack->;;;top];

postack->;;;top--;

void pushdatastack(pdatastack pdstack, double d) //运算数进栈

(pdstack->;;;top);

pdstack->;;;stack[pdstack->;;;top] = d;

void popdatastack(pdatastack pdstack, double d) //运算数出栈

d = pdstack->;;;stack[pdstack->;;;top];

pdstack->;;;top--;

void clearpopstack(popstack postack) //清空运算符栈

void clearpdatastack(pdatastack pdstack) //清空运算数栈

char gettoppopstack(popstack postack) //获取运算符栈顶元素

return postack->;;;opstack[postack->;;;top];

double gettoppdatastack(pdatastack pdstack) //获取运算数栈顶元素

return pdstack->;;;stack[pdstack->;;;top];

bool isop(char ch) //区分 运算符 和 运算数 的函数,是运算符时返回true,否则返回false

{ //判断是否为符号

if ( (ch == ) || (ch == -) || (ch == _) || (ch == /) || (ch == =) || (ch == a) || (ch == s) || (ch == a) || (ch == s) || (ch == () || (ch == )) )

return true;

else

return false;

char precede(char op1, char op2) //参考《数据结构》(c语言版)第53页 3.2.5表达式求值 表 3.1

char tab[9][10]; //定义字符串的二维数组来存放运算符优先级的关系

strcpy( tab[0], >;;;>;;;<<;<; );

strcpy( tab, >;;;>;;;<<;<; );

strcpy( tab, >;;;>;;;>;;;>;;;;<; );

strcpy( tab[3], >;;;>;;;>;;;>;;;;<; );

strcpy( tab[4], <<<<<=<

strcpy( tab[5], >;;;>;;;>;;;>;;;e>;;;>;;;>;;;>;;; );

strcpy( tab[6], >;;;>;;;>;;;>;;;;>;;;>;;;>;;; );

strcpy( tab[7], >;;;>;;;>;;;>;;;;>;;;>;;;>;;; );

strcpy( tab[8], <<<<

printf( | ___欢迎您的下次使用!谢谢!___ | ); //退出使用

printf( |~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~| );

double operate(double a, char theta, double b) //对出栈的运算符和运算数进行计算

double s;

switch(theta)

case :

s = a b;

break;

case -:

s = a - b;

case _:

s = a _ b;

case /:

if ( b != 0 ) //判断除数是否为0,若为0,退出程序

s = a/b;

printf( #### 除数为0,非法运算。程序终止! #### );

e_it_e; //打印结束菜单

case a:

s = fabs(b); //调用fabs函数

case s:

if( b >;;;= 0) //判断被开方数是否为0,若为0,退出程序

s = sqrt(b); //调用sqrt函数

printf( #### 求负数的平方根是非法运算。程序终止! #### );

return s;

char changechar(char c) //通过changechar函数来把a、s的小写字母改为大写的

if( c == a )

c = a;

else if( c == s )

c = s;

return c;

//参考《数据结构》(c语言版)第53页 3.2.5表达式求值算法3.4 evaluatee_pression_r函数

void evaluatee_pression_r //计算函数:读入表达式,并计算结果

popstack postack; //声明运算符栈

pdatastack pdstack; //声明运算数栈

double result; //存运算的结果

char _, theta, c; //c存放读取的字符,_、theta存放运算符栈的栈顶元素

int flag, data; //标识符,用来读入连续的数字

double getd; //存放gettop___的结果

double a, b, cc; //a,b存放数据栈出栈的栈顶元素, c存放运算结果

flag = 0; //初始化标识符,用来判断字符串中的连续数字

data = 0; //

initpopstack(postack); //初始化运算符栈

initpdatastack(pdstack); //初始化运算数栈

pushopstack(postack, =); //在运算符栈底放入=

printf( 请输入表达式以=结束:);

c = get); //读入字符

changechar(c); //通过调用函数来实现把小写的a、s改为大写的a、s

while( c != = || gettoppopstack(postack) != =)

{

if( !isop(c) ) //不是运算符进栈

{

s = c - 0; //把字符转化为数字

if ( flag == 1 )

{

popdatastack(pdstack, getd);

s = getd_10 s;

}

pushdatastack(pdstack, s);

flag = 1;

c = get);

changechar(c);

}

else

{

flag = 0;

switch( precede(gettoppopstack(postack), c) ) //输入元素和运算符栈顶元素比较

{

case <: //栈顶元素优先级低

pushopstack(postack, c);

c = get);

changechar(c);

break;

case =: //托括号并接受下一个字符

popopstack(postack, _);

c = get);

changechar(c);

break;

case >;;;: //退栈并将运算结果进栈

popopstack(postack, theta);

popdatastack(pdstack, b);

popdatastack(pdstack, a);

cc = operate(a, theta, b);

pushdatastack(pdstack, cc);

break;

}//switch

}//else

}//while

result = gettoppdatastack(pdstack); //运算结束时,运算数栈的栈底元素就是计算结果

clearpopstack(postack); //清空运算符栈

clearpdatastack(pdstack); //清空运算数栈

printf( ->;;;计算结果为:%.2f , result); //输出运算结果

return ;

}

void print_user //欢迎界面

{

printf( 欢迎使用c语言版模拟计算器 );

printf(________________________________________________________________________ );

printf( |~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~| );

printf( | 模拟计算器使用说明 | );

printf( | 作者:谢先斌 | );

printf( | 本程序包括对 、-、_、/、的运算 | );

printf( | 本程序中abs算用a替代、sqrt运算用s代替 | );

printf( | 本程序中的一切字母均不区分大小写 | );

printf( 正确的表达式如:1 a(7-8) s(9_8)= );

printf( | 输入=表示表达式输入结束! | );

printf( | 欢迎使用!-->;;;-->;;; | );

printf( |~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~| );

printf(________________________________________________________________________ );

}

int main //主函数

{

char in;

bool b; //标识符,用来标识是否结束程序

b = true; //初始化,不结束

print_user; //打印欢迎界面

printf( _请确认使用计算器y/n:);

while(1)

{

scanf(%c, in); //确认是否继续操作

get); //吃掉会车,避免干扰

switch(in)

{

case y:

case y:

{

evaluatee_pression_r; //进入计算函数:读入表达式,并计算结果

break;

}

case n:

case n:

{

e_it_e;

b = false;

break;

}

//default:

// printf( __输入错误,请重新输入y/n:);

// break;

}

if(b==false) //如果 b==false ,退出整个程序

break;

printf( _您确定要继续使用计算机y/n:);

get); //用getchar吃掉回车,避免对后续输入中in的干扰

}

return 0;

报告怎么写

标题、正文、小结,段落分明,每部分不超三段,先写做了啥再写结果。

相关法规

  1. 国家版权局关于计算机软件著作权管理的通知 来源:国家版权局 · 发布日期:1994-10-19

数据结构实验报告总结

这份数据结构实验报告总结,帮助您把零散的上机实践串成清晰脉络!不再纠结代码调试、算法验证这些“卡点时刻”,而是聚焦思路梳理与经验沉淀。写总结不光是交差,更是明确逻辑性、巩固基础的好机会,借鉴它,轻松告别复制粘贴式收尾,让实验成果真正为你所用。
推荐度: Star Star Star Star Star
点击下载文档文档为doc格式

延伸阅读

相关分类 内容标题 内容介绍
数据结构实习报告 数据结构实习报告 适配人群:计算机专业学生、高校实验指导教师 [详情]
数据结构报告 数据结构实验报告 数据结构实验报告 实验五一.实验内容:实现哈夫曼编码的生成算法。二.实验目的:1、使学生熟练掌握哈夫曼树的生成算法。2、熟练掌握哈夫曼编码的方法。三.问题描述:... [详情]
数据结构报告 数据结构实践报告分析一、需求分析1、 程序所实现的功能;2、 程序的输入,包含输入的数据格式和说明;3、 程序的输出,程序输出的形式;4、 测试数据,如果程序输... [详情]

相关数据结构范文

  • 数据结构报告
  • 数据结构报告 1152人关注

    数据结构实践报告分析一、需求分析1、 程序所实现的功能;2、 程序的输入,包含输入的数据格式和说明;3、 程序的输出,程序输出的形式;4、 测试数据,如果程序输 ...[更多]

  • 数据结构实验报告
  • 数据结构实验报告 1119人关注

    数据结构实验报告 实验五一.实验内容:实现哈夫曼编码的生成算法。二.实验目的:1、使学生熟练掌握哈夫曼树的生成算法。2、熟练掌握哈夫曼编码的方法。三.问题描述: ...[更多]

  • 北邮数据结构实验报告
  • 北邮数据结构实验报告 27人关注

    北邮数据结构实验报告,别再为代码调试抓狂、为流程图发愁啦!这份报告框架清晰、逻辑性扎实,覆盖常见实验难点,为您明确思路、少走弯路。参阅时顺便就能套用,排版规范还 ...[更多]