程序设计基础.docx
《程序设计基础.docx》由会员分享,可在线阅读,更多相关《程序设计基础.docx(15页珍藏版)》请在冰豆网上搜索。
程序设计基础
学生实验报告
实验课名称:
程序设计基础
实验项目名称:
函数的应用
专业名称:
软件工程
班级:
24061101
学号:
2406100120
学生姓名:
朱宇
教师姓名:
揣锦华
2011年3月31日
每组人数1实验机器编号
实验日期2011年3月31日实验室名称WM2203机房
实验名称:
题目1:
求解一元二次方程
题目2:
请按照要求输出下列图形。
实验目的与要求:
1.巩固已学过的C++中输入和输出;
2.学习使用VC++6.0开发环境的debug调试功能。
3.掌握C++中类的定义等面向对象的程序设计方法。
4.掌握用数据文件来存储数据,并能正确使用输入、输出格式。
5.编写一个学籍管理系统;提高自己的编程能力。
实验内容:
题目1:
求解一元二次方程
对于一元二次方程
♦若
,方程有两个实根:
♦若
,方程有两个相等实根:
♦若
,方程有两个共轭复根:
要求根据提示信息输入方程系数(A、B和C),利用以上公式求解一元二次方程,若输入的数据有误,给出相应提示信息。
题目2:
请按照要求输出下列图形。
按照要求输出图形,程序输入/输出范例如下:
请选择绘制图形类别:
1.菱形
2.双三角形
3.杨辉三角
4.退出
请输入您的选择(1~4):
5
您的输入错误,请重新输入!
请选择绘制图形类别:
1.菱形
2.双三角形
3.杨辉三角
4.退出
请输入您的选择(1~4):
1
H
HHH
HHHHH
HHHHHHH
HHHHHHHHH
HHHHHHHHHHH
HHHHHHHHHHHHH
HHHHHHHHHHH
HHHHHHHHH
HHHHHHH
HHHHH
HHH
H
请选择绘制图形类别:
1.菱形
2.双三角形
3.杨辉三角
4.退出
请输入您的选择(1~4):
2
ABCDEFGHIJKLM
ABCDEFGHIJK
ABCDEFGHI
ABCDEFG
ABCDE
ABC
A
ABC
ABCDE
ABCDEFG
ABCDEFGHI
ABCDEFGHIJK
ABCDEFGHIJKLM
请选择绘制图形类别:
1.菱形
2.双三角形
3.杨辉三角
4.退出
请输入您的选择(1~4):
3
1
11
121
1331
14641
15101051
1615201561
172135352171
18285670562881
请选择绘制图形类别:
1.菱形
2.双三角形
3.杨辉三角
4.退出
请输入您的选择(1~4):
4
谢谢使用!
一、程序设计思想
题目1:
求解一元二次方程
采用函数调用的思想,定义一个求根的子函数,由数学知识可知,存在
、
、
三种情况,在主函数中用if语句进行选择,同时调用求根函数,最终实现对三种情况根的输出
题目2:
按要求输出图形
由于要输出三种图形,先将程序分解为三个独立的输出图形程序,用循环及递归写出相应的程序,再应用函数调用的思想将三个函数作为子函数,用switch语句来决定调用哪个,即可得到按要求输出图形的函数。
对菱形与双三角形,思路基本类似,先用一个for循环来控制输出空格,再用一个for循环来输出字符,并用嵌套的循环来控制每行每列的输出,最终得到所需的图形。
对杨辉三角,先分析规律,每个位置上的数等于它的两肩之和,用递归的方法来推出每个位置上的数值,在用于前面类似的循环来控制空格与数字的输出即可。
二、程序流程图
1.解一元二次方程2.按要求输出图形
三、实验结果与分析
1.求解一元二次方程
A=1,B=-2,C=1时,x1=x2=1A=1,B=-3,C=2时,x1=2,x2=1
A=1
B=-3
C=2
结果为
X1=2
X2=3
A=1,
B=2
C=3
结果为
X1=-1+1.414211
X2=-1-1.414211
2.输出图形
四、讨论和回答问题及体会
该实验运用了所学的循环、选择的控制结构,并运用了函数调用的方法。
在运用循环时应该用括号来限定循环的控制范围,防止发生混淆,并且也可以增加程序的可读性,运用for循环可以灵活的控制循环的次数。
对于函数调用,则可以将复杂的编程分为几个简单的子模块,同时也避免了相同程序段的重复编写,提高了效率
附录:
程序源代码
1.求解一元二次方程
#include
#include
voidqj(double&i,double&j,doubleA,doubleB,doubleC);
voidmain()
{
doubleA,B,C;
doublei,j;
cout<<"请输入A的值(A!
=0)";
do
{
cin>>A;
}while(A==0);//限定A的范围
cout<<"请输入B的值";
cin>>B;
cout<<"请输入C的值";
cin>>C;
qj(i,j,A,B,C);//调用qj函数
if(B*B-4*A*C<0)
{
cout<<"方程有两个共轭复根"<cout<<"函数的解x1="<
cout<<"函数的解x2="<
}
elseif(B*B-4*A*C>0)
{
cout<<"方程有两个实根"<cout<<"函数的解x1="<
cout<<"函数的解x2="<}
else
{
cout<<"方程有两个相等实根"<cout<<"函数的解x1=x2="<
}
}
voidqj(double&i,double&j,doubleA,doubleB,doubleC)
{
doublem,n;
m=B*B-4*A*C;
if(m>=0)
{
n=sqrt(m);
i=-B/(2*A);
j=sqrt(m)/(2*A);//m>0与m=0可以和在一起,因为m=0时j=0
}
else//m<0的情况
{
i=-B/(2*A);
j=sqrt(-m)/(2*A);
}
}
2.按要求输出图形
#include
#include
intyh(inti,intp);
voidm
ain()
{
intc;
cout<<"请输入您的选择(1~4):
1—菱形;2—双三角形;3—杨辉杨辉三角;4—退出;"<cin>>c;
switch(c)
{
case1:
inti1,j1,k1;
for(i1=1;i1<=7;i1++)
{
for(j1=1;j1<=7-i1;j1++)
cout<<"";
for(k1=1;k1<=2*i1-1;k1++)
cout<<"H";
cout<}
intm1,n1,p1;
for(m1=1;m1<=6;m1++)
{
for(n1=1;n1<=m1;n1++)
cout<<"";
for(p1=1;p1<=13-2*m1;p1++)
cout<<"H";
cout<}
break;
case2:
{
charsz[13]={'A','B','C','D','E','F','G','H','I','J','K','L','M'};
intm2,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++)
cout<cout<}
inti2,j2,k2;
for(i2=2;i2<=7;i2++)
{
for(j2=1;j2<=7-i2;j2++)
cout<<"";
for(k2=1;k2<=2*i2-1;k2++)
cout<cout<}
break;
}
case3:
{
intm3=9;
for(inti3=0;i3{
for(intj3=0;j3cout<<"";
for(intp3=1;p3cout<cout<}
break;
}
case4:
break;
}
}
intyh(intx,inty)
{
if(y==1||y==x+1)
return1;
else
returnyh(x-1,y-1)+yh(x-1,y);
}