1、高级语言实训实验报告 题目:设计一个简单的计算器 专业:计算机应用技术 班级:B1011班 姓名:宋娟娟 学号:21014130101 指导教师:刘华中 设计时间:2011.10.14目 录1. 课程设计(实训)计划 12. 系统需求分析与功能设计 23. 总体设计 34. 算法说明 45. 技术难点与分析 56. 心得体会 67. 参考文献 7附录:程序代码 1.课程设计实训计划1.掌握系统清屏的功能2.掌握Switch语句的嵌套3.掌握Return退出语句4.实现计算机的基本功能进行浮点数加减乘除的运行2.系统需求分析与功能设计1.基本所用知识点小结1.具备整形数据浮点型数据的算数(加减乘
2、除)运算功能。2.依次输入第一个运算数 运算符(+、 、* 、 /)第二个运算数 运算符(+、 、* 、 /)第三个运算数 运算符(+、 、*、 /)第四个运算数 运算符(+ 、* 、 /)然后输出结果。3.定义一个结构体类型数组,输入09及+、*、/等符号的信息,将其信息存入文件中;输入简单的加减乘除算术计算式,并在屏幕上显示计算结果;画出部分模块的流程图;(编写代码;程序分析与调试。4.主函数 void main()功能:调用各个模块实现简单计算器的整体功能2.程序设计的一般步骤1.确定数据结构2.确定算法3编程4.调试3、程序设计流程图 3. 总体设计4、算法说明1. 主函数的设计1)
3、登陆界面while(1) /1.输出提示信息 printf(n*n); printf( 我的计算器 n); printf( 0 退出 n); printf( 1 加法 n); printf( 2 减法 n); printf( 3 乘法 n); printf( 4 除法 n); printf( 5 清屏 n); printf(*n); printf( 请选择相应的功能序号:); scanf(%d,&choice); if(0=choice) break; while (1) / 输入数组大小并确认 printf(请输入数组的大小:); scanf(%d,&size); printf(你确定数组大
4、小为%d吗?Y:是 N:否:,size); fflush(stdin); scanf(%c,&sizeFlag); if (Y = sizeFlag) break; 2) 分配空间 / 为动态数组分配空间并输入数据 dataArray = (int *)malloc(size * sizeof(int); for (i = 0;isize; i+) printf(请输入第%d个数:,i+1); scanf(%d,&dataArrayi); 3) 功能序号的选择 / 3.做+ - * / 操作 switch(choice) case 1: / 加法 result = dataArray0; fo
5、r (i = 1;isize; i+) result += dataArrayi; / 输出 printf(结果为:%dn,result); break; case 2: / 减法 result = dataArray0; for (i = 1; isize; i+) result -= dataArrayi; / 输出 printf(结果为:%dn,result); break; case 3: / 乘法 result = dataArray0; for (i = 1;isize; i+) result *= dataArrayi; / 输出 printf(结果为:%dn,result);
6、break; case 4: / 除法,并处理除数为0的异常 result = dataArray0; for (i = 1;isize; i+) if (0 != dataArrayi) result /= dataArrayi; / 输出 else printf(ERROR:第%d个数作为除数时不能为0!,i+1); break; / 输出 printf(结果为:%dn,result); break; case 5: / 清屏 system(cls); break; default: printf(选择功能序号不合法!); / 释放动态数组的空间 free(dataArray);5、技术难
7、点与分析可能出现的错误:缺少变量定义、定义位置不正确:由于该程序稍有些长,前后有些变量不容易联系起来,但是在错误信息的提示下还是很容易查找出来的,不过需要注意的是在定义是有些函数使用同样的定变量名而表示不同的作用,因而使用要小心,定义要定义的位置要特别注意,为减少这样的错误,我后来还使用不同的变量名来表示,结果原来的那些错误解决了语法错误:大多数语法错误再通过书本参考能改过来,主要是平时缺乏锻炼,不太注重而产生,如没有注意具体数据使用使用一定范围限定,过分重视分号的重要性而在for, if, while. 画蛇添足加分号:注视的位置:程序设计中在注释的时候不能同我们平时写字一样随心所欲,我们应
8、该注意注释的格式,注释中不能含有C语言可能执行的语句。在逻辑上出现的错误:这种错误极难查找一般采用分层查找的方法在程序不同的位置设计个print函数语句输出有关变量的值,斲断往下查找的查处的错误进行修改,当调试完毕将设置的print都删去,若在程序中找不到问题,再来考虑算法是否逻辑严谨,在进行修改,如此循环往复,直到最后程序运行成功。6系统测试7.心得体会经过了一周的编程在老师的精心指导下和同学的热情帮助下,终于完成了计算器的设计,知道了自己还有好多欠缺之处,一开始自己根本不知道从何下手,一点头绪都没有,也许是因为自己第一次编程序,通过老师的讲解和同学的帮助终于有了点思路,慢慢的明白了应给怎样
9、编写,终于自己的摸索下成功的编了一个加法器,有些东西不是你不会是你不想去做只要你想你认真的努力的去做你一定会成功的,其实对于我来说编写一个程序是有好大难度因为我的基本功不扎实有好多欠缺之处,当我坐在那里看着别人在敲着键盘自己确没思路真的很着急,有付出就会有收获最后终于找到了思路。经过这次实训我遇到了在编程中经常遇到的问题,这些问题的解决增加了在编程中的经验,在编程中发现了自己基本功的不扎实,但同时也加深了对C语言的理解,真正的体会到了编写一个程序需要有足够的耐性和认真程度,一不小心就会出现错误一点小小的错误程序也不能运行,也许你的一时失误会把你辛苦编写的程序打一个零分,因此在以后和现在的编程中
10、大家一定要努力认真。 8.参考文献1 杨路明. C语言程序设计(第二版). 北京:邮电大学出版社,2005. 161197附录:源代码#include #includevoid main() int i; / 循环变量 int size; / 数组大小 int * dataArray; / 数组名 int result; / 结果 int choice; / 功能序号 char sizeFlag; while(1) / 1.输出提示信息 printf(n*n); printf( 我的计算器 n); printf( 0 退出 n); printf( 1 加法 n); printf( 2 减法 n
11、); printf( 3 乘法 n); printf( 4 除法 n); printf( 5 清屏 n); printf(*n); printf( 请选择相应的功能序号:); scanf(%d,&choice); if(0=choice) break; while (1) / 输入数组大小并确认 printf(请输入数组的大小:); scanf(%d,&size); printf(你确定数组大小为%d吗?Y:是 N:否:,size); fflush(stdin); scanf(%c,&sizeFlag); if (Y = sizeFlag) break; / 为动态数组分配空间并输入数据 da
12、taArray = (int *)malloc(size * sizeof(int); for (i = 0;isize; i+) printf(请输入第%d个数:,i+1); scanf(%d,&dataArrayi); / 3.做+ - * / 操作 switch(choice) case 1: / 加法 result = dataArray0; for (i = 1;isize; i+) result += dataArrayi; / 输出 printf(结果为:%dn,result); break; case 2: / 减法 result = dataArray0; for (i =
13、1; isize; i+) result -= dataArrayi; / 输出 printf(结果为:%dn,result); break; case 3: / 乘法 result = dataArray0; for (i = 1;isize; i+) result *= dataArrayi; / 输出 printf(结果为:%dn,result); break; case 4: / 除法,并处理除数为0的异常 result = dataArray0; for (i = 1;isize; i+) if (0 != dataArrayi) result /= dataArrayi; / 输出 else printf(ERROR:第%d个数作为除数时不能为0!,i+1); break; / 输出 printf(结果为:%dn,result); break; case 5: / 清屏 system(cls); break; default: printf(选择功能序号不合法!); / 释放动态数组的空间 free(dataArray);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1