1、程序设计基础学生实验报告实验课名称:程序设计基础实验项目名称: 函数的应用专 业 名 称: 软件工程班 级: 24061101学 号: 2406100120学 生 姓 名: 朱宇教 师 姓 名: 揣锦华 2011 年 3 月 31 日每组人数 1 实验机器编号 实验日期2011年3月31日 实验室名称 WM2203机房 实验名称: 题目1:求解一元二次方程 题目2:请按照要求输出下列图形。实验目的与要求:1. 巩固已学过的C+中输入和输出; 2. 学习使用VC+6.0开发环境的debug调试功能。 3. 掌握C+中类的定义等面向对象的程序设计方法。 4. 掌握用数据文件来存储数据,并能正确使用
2、输入、输出格式。 5. 编写一个学籍管理系统;提高自己的编程能力。实验内容:题目1:求解一元二次方程对于一元二次方程 若,方程有两个实根: 若,方程有两个相等实根: 若,方程有两个共轭复根: 要求根据提示信息输入方程系数(A、B和C),利用以上公式求解一元二次方程,若输入的数据有误,给出相应提示信息。题目2:请按照要求输出下列图形。按照要求输出图形,程序输入/输出范例如下:请选择绘制图形类别:1. 菱形2. 双三角形3. 杨辉三角4. 退出请输入您的选择(14):5您的输入错误,请重新输入!请选择绘制图形类别:1. 菱形2. 双三角形3. 杨辉三角4. 退出请输入您的选择(14):1HHHHH
3、HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH请选择绘制图形类别:1. 菱形2. 双三角形3. 杨辉三角4. 退出请输入您的选择(14):2ABCDEFGHIJKLMABCDEFGHIJKABCDEFGHIABCDEFGABCDEABCAABCABCDEABCDEFGABCDEFGHIABCDEFGHIJKABCDEFGHIJKLM请选择绘制图形类别:1. 菱形2. 双三角形3. 杨辉三角4. 退出请输入您的选择(14):311 11 2 11 3 3 11 4 6 4 11 5
4、10 10 5 11 6 15 20 15 6 11 7 21 35 35 21 7 11 8 28 56 70 56 28 8 1请选择绘制图形类别:1. 菱形2. 双三角形3. 杨辉三角4. 退出请输入您的选择(14):4谢谢使用!一、 程序设计思想题目1:求解一元二次方程采用函数调用的思想,定义一个求根的子函数,由数学知识可知,存在、三种情况,在主函数中用if语句进行选择,同时调用求根函数,最终实现对三种情况根的输出 题目 2:按要求输出图形由于要输出三种图形,先将程序分解为三个独立的输出图形程序,用循环及递归写出相应的程序,再应用函数调用的思想将三个函数作为子函数,用switch语句来
5、决定调用哪个,即可得到按要求输出图形的函数。对菱形与双三角形,思路基本类似,先用一个for循环来控制输出空格,再用一个for循环来输出字符,并用嵌套的循环来控制每行每列的输出,最终得到所需的图形。对杨辉三角,先分析规律,每个位置上的数等于它的两肩之和,用递归的方法来推出每个位置上的数值,在用于前面类似的循环来控制空格与数字的输出即可。二、 程序流程图1. 解 一 元 二 次 方 程 2.按要求输出图形三、 实验结果与分析1. 求解一元二次方程A=1,B=-2,C=1时,x1=x2=1 A=1,B=-3,C=2时,x1=2,x2=1 A=1B=-3C=2结果为X1=2X2=3A=1,B=2C=3
6、结果为X1=-1+1.414211X2=-1-1.4142112.输出图形四、讨论和回答问题及体会该实验运用了所学的循环、选择的控制结构,并运用了函数调用的方法。 在运用循环时应该用括号来限定循环的控制范围,防止发生混淆,并且也可以增加程序的可读性,运用for循环可以灵活的控制循环的次数。 对于函数调用,则可以将复杂的编程分为几个简单的子模块,同时也避免了相同程序段的重复编写,提高了效率 附录:程序源代码1.求解一元二次方程#include#includevoid qj(double&i,double&j,double A,double B,double C);void main() doub
7、le A,B,C; double i,j; coutA; while(A=0);/限定A的范围 coutB; coutC; qj(i,j,A, B, C);/调用qj函数 if(B*B-4*A*C0) cout方程有两个共轭复根endl; cout函数的解x1=i+jiendl; cout函数的解x2=i-ji0) cout方程有两个实根endl; cout函数的解x1=i+jendl; cout函数的解x2=i-jendl; else cout方程有两个相等实根endl; cout函数的解x1=x2=i+j=0) n=sqrt(m); i=-B/(2*A); j=sqrt(m)/(2*A);
8、/m0与m=0可以和在一起,因为m=0时j=0 else/m0的情况 i=-B/(2*A); j=sqrt(-m)/(2*A); 2.按要求输出图形#include#include int yh(int i,int p);void main() int c; cout请输入您的选择(14):1菱形;2双三角形;3杨辉杨辉三角;4退出;c; switch(c) case 1: int i1,j1,k1; for(i1=1;i1=7;i1+) for(j1=1;j1=7-i1;j1+) cout ; for(k1=1;k1=2*i1-1;k1+) coutH; coutendl; int m1,n
9、1,p1; for(m1=1;m1=6;m1+) for(n1=1;n1=m1;n1+) cout ; for(p1=1;p1=13-2*m1;p1+) coutH; coutendl; break; case 2: char sz13=A,B,C,D,E,F,G,H,I,J,K,L,M; int m2,n2,p2; for(m2=1;m2=7;m2+) for(n2=1;n2=m2-1;n2+) cout ; for(p2=1;p2=13-2*m2+2;p2+) coutszp2-1; coutendl; int i2,j2,k2; for(i2=2;i2=7;i2+) for(j2=1;j
10、2=7-i2;j2+) cout ; for(k2=1;k2=2*i2-1;k2+) coutszk2-1; coutendl; break; case 3: int m3=9; for(int i3=0;i3m3;i3+) for(int j3=0;j3m3-i3;j3+) cout ; for(int p3=1;p3i3+2;p3+) coutsetw(4)yh(i3,p3); coutendl; break; case 4: break; int yh(int x,int y) if(y=1|y=x+1) return 1; else return yh(x-1,y-1)+yh(x-1,y);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1