资源描述
实 验 报 告课程名称:计算机软件基础学期:20011-2012学年第二学期成绩: 姓名:考号:实验名称:计算器 实验要求: 必作实验学时:2学时实验编号:3实验日期: 第2周完成日期:学院:机电工程学院专业 :年级: 2011级一、实验目的:1熟练掌握计算器的计算过程;本试验旨在帮助我们复习与巩固计算器的计算过程是如何实现的;二、实验内容: 编写并调试计算器的程序,介绍程序所能够达到的功能.程序如下:int main()char a80,*p,op;/定义char型数组a,指针变量*p,char型变量opint n=0,i;/定义整型变量n,i。n赋值0int data1,data2;/定义整型变量data1,data2float output;定义浮点型变量outputscanf(%s,a);/按字符串格式从键盘输入到变量ap=&a0;/数组a的首元素地址赋给指针变量pwhile(*p !=0 & *p =0)/while条件循环,条件:*p指向的数组元素不是空字符并且小于等于9并且大于等于0p+;n+;/p移到下一地址,n+1data1=0;/data1赋值0for(i=0;in;i+)/for条件循环,条件:inp-;/p移到上一地址data1+=(*p-0)*pow(10,i);/赋值data1,p指向的值转换成整数乘以10的i次幂p=p+n;op=*(p+);n=0;while(*p !=0 & *p =0)p+;n+;data2=0;for (i=0;in;i+)p-;data2+=(*p-0)*pow(10,i);switch(op)case +:output=data1+data2;break;case -:output=data1-data2;break;case *:output=data1*data2;break;case /:output=(float)data1/data2;break;default:printf(wrong operatorn);return 0;printf(%5.2f,output);输入1+1;输出2;三、实验环境:Windows XP CT6.0;四、实验过程: 1)输入数据及运算符号首先输入运算符号a 80 实现语句scanf(%s,a);然后输入运算的数据;2)数据的计算,使用选择结构switch函数; 对于数据的四则运算进行处理switch(op)case +:output=data1+data2;break;case -:output=data1-data2;break;case *:output=data1*data2;break;case /:output=(float)data1/data2;break;default:printf(wrong operatorn);return 0;printf(%5.2f,output);五、在实验中遇到的问题及解决方法:在实验中此语句(case *:output=data1*data2;break;)运行不正确,因此在输出结果时没能够做出正确的运算内容;经过分析发现(break)忘记在后方加入,当其将break加入后结果就能正常的运行了;在实验期间我还遇到其他很多类似的内容,不是忘加“,”就是有的忘记加“;”但最总实验还是成功的编写正确了。 解决问题的方法:通过问指导老师和上网搜素进行的解决。六、实验总结:1)当我们在编写程序中,我们需要处处仔细切还要认真的一步步静下心来编写每一步,否则我们会问题连连不断的出现;总之认真出结果仔细内容对。3体会和收获。 让我们了解到计算器是如何进行当我们输入一些数一步步往下运行的;C语言的编写于运行是自己对编写程序过程中,要仔细每一步的编写,分号的应用。 做到条理清晰分明。遇到问题要学会查找解决的方法(同学间的互相探讨,向指导老师求解等)七、原程序:int main()char a80,*p,op;/定义char型数组a,指针变量*p,char型变量opint n=0,i;/定义整型变量n,i。n赋值0int data1,data2;/定义整型变量data1,data2float output;定义浮点型变量outputscanf(%s,a);/按字符串格式从键盘输入到变量ap=&a0;/数组a的首元素地址赋给指针变量pwhile(*p !=0 & *p =0)/while条件循环,条件:*p指向的数组元素不是空字符并且小于等于9并且大于等于0p+;n+;/p移到下一地址,n+1data1=0;/data1赋值0for(i=0;in;i+)/for条件循环,条件:inp-;/p移到上一地址data1+=(*p-0)*pow(10,i);/赋值data1,p指向的值转换成整数乘以10的i次幂p=p+n;op=*(p+);n=0;while(*p !=0 & *p =0)p+;n+;data2=0;for (i=0;in;i+)p-;data2+=(*p-0)*pow(10,i);switch(op)case +:output=data1+data2;break;case -:output=data1-data2;break;case *:output=data1*data2;break;case /:output=(float)data1/data2;break;default:printf(wrong operatorn);return 0;printf(%5.2f,output);
展开阅读全文