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