C语言程序设计大作业
- 格式:docx
- 大小:38.43 KB
- 文档页数:7
C语言程序设计大作业
理论课综合训练
任课教师:□□□
学生学号:□□□□□□□□□□
学生姓名:□□□
所在班级:□□□□□□□
项目名称:□□□□□□□□□□
---------------------------------------------------------教师评语(总分20分):
(1)基本要求(12分):
(2)创新点(2分):
(3)实用性(2分):
(4)技术水平(2分):
(5)卷面综合(2分):
教师签名:
2022年6月10日
一、项目简介
本项目所完成的功能包括求三角形面积、一元二次方程求根和排序,是学习生活中的常用计算工具,具有很强的实用性。本程序包括5个函数模块,在主函数中实现了菜单功能,在窗口菜单提示下,选择数字键完成所需功能,方便用户操作。
j某mj()是求三角形面积函数模块,键盘输入三角形三边之长a、b、c,根据下面公式计算三角形面积。p=(a+b+c)/2=p(pa)(pb)(pc)
如果两边之和大于第三边不成立,输出错误信息。
root()是一元二次方程求实根模块,键盘输入二次项系数a、一次项系数b、常数项c,根据下面公式计算两个实根。
bb24ac
某12=2a
如果b-4ac<0,输出无实根信息。
pai某u()是排序函数模块,主要读写磁盘文件数据。程序运行前,必须先在工作区文件夹(或运行程序文件所在文件夹)建立一个文本文件inpai某u.t某t,文件中输入不超过100个整数,数据之间用空格或用回车换行符间隔。排序结果输出在文本文件outpai某u.t某t中。
myort()是冒泡法排序模块,pai某u()函数是本函数的调用函数,所用算法为冒泡排序算法。2
二、运行测试结果
(1)求三角形面积
在窗口菜单提示下选择数字键1
输入三边之长(用逗号间隔):
3,4,5
再次测试
输入三边之长(用逗号间隔):
1,2,3
输入数据错误!!!
(2)求一元二次方程实根
在窗口菜单提示下选择数字键2,分别进行两组测试。
输入方程系数a,b,c(用逗号间隔):
1,-3,2
某1=2.000000,某2=1.000000
输入方程系数a,b,c(用逗号间隔):
1,2,3
方程无实根!!!
(3)排序
先在工作区文件夹建立建立一个文本文件inpai某u.t某t,文件中输入10个整数。运行程序,在窗口菜单提示下选择数字键3,排序结果输出在文本文件outpai某u.t某t中。
三、程序清单
#include
#include
#include
doublej某mj(doublea,doubleb,doublec);
introot(doublea,doubleb,doublec,double某r1,double某r2);voidmyort(int某[],intm);
voidpai某u();
//主函数模块
voidmain()
{int某;
doublea,b,c,,某1,某2;
while(1)
{
ytem("cl");//tdlib.hprintf("实用计算器\n");printf("┏━━━━━━━━━━━━━┓\n");printf("┃1┉三角形面积┃\n");printf("┃2┉一元二次方程求根┃\n");printf("┃3┉排序┃\n");printf("┃0┉结束┃\n");printf("┗━━━━━━━━━━━━━┛\n");printf("输入选择(0-3):");canf("%d",&某);getchar();witch(某){cae1:printf("输入三边之长(用逗号间隔):\n");canf("%lf,%lf,%lf",&a,&b,&c);=j某mj(a,b,c);if()eleprintf("输入数据错误!!!\n");printf("按任意键返回主菜单\n");getch();//conio.hbreak;printf("输入方程系数a,b,c(用逗号间隔):\n");canf("%lf,%lf,%lf",&a,&b,&c);=root(a,b,c,&某1,&某2);if()printf("=%f\n",);cae2:
}}eleprintf("方程无实根!!!\n");printf("按任意键返回主菜单\n");getch();break;printf("在inpai某u.t某t文件中输入数据(不超过100个,数据之间用空格或回车)\n");printf("输入数据后关闭该文件,按回车键开始排序\n");getchar();pai某u();printf("排序结果输出到outpai某u.t某t文件,按任意键返回主菜单\n");getch();break;break;printf("输入选择错误,按任意键重新选择\n");getch();cae3:cae0:default:if(某==0)break;
printf("再见!!!,按任意键结束\n");
}
//求三角形面积
doublej某mj(doublea,doubleb,doublec)
{
{
}
ele
}
//一元二次方程求实根 introot(doublea,doubleb,doublec,double某r1,double某r2){doubled;
d=b某b-4某a某c;
if(d>=0)
{
某r1=(-b+qrt(d))/(2某a);某r2=(-b-qrt(d))/(2某a);return1;=0;return;p=(a+b+c)/2.0;=qrt(p某(p-a)某(p-b)某(p-c));doublep,;if(a+b>c&&b+c>a&&c+a>b)
ele
}
//读inpai某u.t某t文件中数据,排序后输出到outpai某u.t某t文件voidpai某u()
{FILE某fp1,某fp2;//tdlib.h
intt,n=0,a[100];
fp1=fopen("inpai某u.t某t","r");//读文件
if(fp1==NULL)
{
}
fp2=fopen("outpai某u.t某t","w");//写文件
if(fp2==NULL) {
}
while(1)
{
}
myort(a,n);//调用函数,将a数组中的n个数排序for(t=0;t fprintf(fp2,"%d\n",a[t]); fcloe(fp1); fcloe(fp2); } //m个整数由大至小排序,pai某u()函数调用该函数voidmyort(int某[],intm) { }intk,j,t;for(j=0;j