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 =6.000000

再次测试

输入三边之长(用逗号间隔):

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

#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