C语言程序设计大作业

更新时间:2023-09-05 13:45:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

C 语 言 程 序 设 计

理 论 课 综 合 训 练

任课教师:□□□

学生学号:□□□□□□□□□□

学生姓名:□□□

所在班级:□□□□□□□

项目名称:□□□□□□□□□□

--------------------------------------------------------- 教师评语(总分20分):

(1)基本要求(12分):

(2)创新点(2分):

(3)实用性(2分):

(4)技术水平(2分):

(5)卷面综合(2分):

教师签名:

2011年 6月 10 日

一、项目简介

本项目所完成的功能包括求三角形面积、一元二次方程求根和排序,是学习生活中的常用计算工具,具有很强的实用性。本程序包括5个函数模块,在主函数中实现了菜单功能,在窗口菜单提示下,选择数字键完成所需功能,方便用户操作。

sjxmj()是求三角形面积函数模块,键盘输入三角形三边之长a、b、c,根据下面公式计算三角形面积。 p=(a+b+c)/2 s=p(p a)(p b)(p c)

如果两边之和大于第三边不成立,输出错误信息。

root()是一元二次方程求实根模块,键盘输入二次项系数a、一次项系数b、常数项c,根据下面公式计算两个实根。

b b2 4ac

x12= 2a

如果b-4ac<0,输出无实根信息。

paixu()是排序函数模块,主要读写磁盘文件数据。程序运行前,必须先在工作区文件夹(或运行程序文件所在文件夹)建立一个文本文件inpaixu.txt,文件中输入不超过100个整数,数据之间用空格或用回车换行符间隔。排序结果输出在文本文件outpaixu.txt中。

mysort()是冒泡法排序模块,paixu()函数是本函数的调用函数,所用算法为冒泡排序算法。 2

二、运行测试结果

(1) 求三角形面积

在窗口菜单提示下选择数字键1

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

3,4,5<Enter>

s=6.000000

再次测试

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

1,2,3<Enter>

输入数据错误!!!

(2) 求一元二次方程实根

在窗口菜单提示下选择数字键2,分别进行两组测试。

输入方程系数a,b,c(用逗号间隔):

1,-3,2<Enter>

x1=2.000000,x2=1.000000

输入方程系数a,b,c(用逗号间隔):

1,2,3<Enter>

方程无实根!!!

(3) 排序

先在工作区文件夹建立建立一个文本文件inpaixu.txt,文件中输入10个整数。运行程序,在窗口菜单提示下选择数字键3,排序结果输出在文本文件outpaixu.txt中。

三、程序清单

#include <stdio.h>

#include <stdlib.h>

#include <math.h>

#include <conio.h>

double sjxmj(double a,double b,double c);

int root(double a,double b,double c,double *r1,double *r2); void mysort(int x[],int m);

void paixu();

//主函数模块

void main()

{ int x;

double a,b,c,s,x1,x2;

while(1)

{

system("cls"); //stdlib.h printf(" ※※※ 实用计算器 ※※※\n"); printf("┏━━━━━━━━━━━━━┓\n"); printf("┃ 1 ┉ 三角形面积 ┃\n"); printf("┃ 2 ┉ 一元二次方程求根 ┃\n"); printf("┃ 3 ┉ 排序 ┃\n"); printf("┃ 0 ┉ 结束 ┃\n"); printf("┗━━━━━━━━━━━━━┛\n"); printf("输入选择(0-3):"); scanf("%d",&x);getchar(); switch(x) { case 1: printf("输入三边之长(用逗号间隔):\n"); scanf("%lf,%lf,%lf",&a,&b,&c); s=sjxmj(a,b,c); if(s) else printf("输入数据错误!!!\n"); printf("按任意键返回主菜单\n"); getch(); // conio.h break; printf("输入方程系数a,b,c(用逗号间隔):\n"); scanf("%lf,%lf,%lf",&a,&b,&c); s=root(a,b,c,&x1,&x2); if(s) printf("s=%f\n",s); case 2:

} } else printf("方程无实根!!!\n"); printf("按任意键返回主菜单\n"); getch(); break; printf("在inpaixu.txt文件中输入数据(不超过100个,数据之间用空格或回车)\n"); printf("输入数据后关闭该文件,按回车键开始排序\n");getchar(); paixu(); printf("排序结果输出到outpaixu.txt文件,按任意键返回主菜单\n"); getch(); break; break; printf("输入选择错误,按任意键重新选择\n");getch(); case 3: case 0: default: if(x==0)break;

printf("再见!!!,按任意键结束\n");

}

//求三角形面积

double sjxmj(double a,double b,double c)

{

{

}

else

}

//一元二次方程求实根

int root(double a,double b,double c,double *r1,double *r2) { double d;

d=b*b-4*a*c;

if(d>=0)

{

*r1=(-b+sqrt(d))/(2*a); *r2=(-b-sqrt(d))/(2*a); return 1; s=0; return s; p=(a+b+c)/2.0; s=sqrt(p*(p-a)*(p-b)*(p-c)); double p,s; if(a+b>c && b+c>a && c+a>b)

else

}

//读inpaixu.txt文件中数据,排序后输出到outpaixu.txt文件 void paixu()

{ FILE *fp1,*fp2; //stdlib.h

int t,n=0,a[100];

fp1=fopen("inpaixu.txt","r"); //读文件

if(fp1==NULL)

{

}

fp2=fopen("outpaixu.txt","w"); //写文件

if(fp2==NULL)

{

}

while(1)

{

}

mysort(a,n); //调用函数,将a数组中的n个数排序 for(t=0;t<n;t++)

fprintf(fp2,"%d\n",a[t]);

fclose(fp1);

fclose(fp2);

}

// m个整数由大至小排序,paixu()函数调用该函数 void mysort(int x[],int m)

{

} int k,j,t; for(j=0;j<m-k;j++) if(x[j]<x[j+1]) { t=x[j];x[j]=x[j+1];x[j+1]=t;} for(k=1;k<m;k++) if(feof(fp1))break; t=fscanf(fp1,"%d",&a[n]); //if(t==EOF)break; //EOF为文件结束标志(-1) n=n+1; printf("打开inpaixu.txt文件失败。\n"); fclose(fp1);return; printf("打开inpaixu.txt文件失败。\n"); return; return 0;

本文来源:https://www.bwwdw.com/article/of3i.html

Top