c语言程序设计实训大作业?

本资源由会员分享,可在线阅读,更多相关《C语言程序设计大作业(7页珍藏版)》请在人人文库网上搜索。

C 语言程序设计大作业理论课综合训练 学生姓名:□□□所在班级:□□□□□□□项目名称:□□□□□□□□□□ 师评语(20):(1)基本要求):创新点):实用性):技术水平):卷面综合教师签名:2022610一、项目简介本项目所完成的功能包括求三角形面积、一元二次方程求根和排序, 是学习生活中的常用计算工具,具有很强的实用性。本程序包括5 个函数模块,在主函数中实现了菜单功能,在窗口菜单提示下,选择数字键完成所需功能,方便用户操作。j 某 mj()是求三角形面积函数模块,键盘输入三角形三边之长 a、b、c,根据下面公式计算三角形面积。p=(a+b+c)/2=p(pa)(pb)(pc)如果两边之和大于第三边不成立,输出错误信息。root()是一元二次方程求实根模块,键盘输入二次项系数a系数b、常数项c,根据下面公式计算两个实根。bb24ac 如果b-4ac<0,输出无实根信息。pai 某u()是排序函数模块,主要读写磁盘文件数据。程序运行前, 必须先在工作区文件夹(或运行程序文件所在文件夹)inpai 某u.t 某t100outpaiu.ttmyort()是冒泡法排序模块,paiu(法为冒泡排序算法。2二、运行测试结果 (1在窗口菜单提示下选择数字键 1输入三边之长(用逗号间隔):

在整理文件时偶然发现大一时的C语言大作业,故突然心血来潮想看看曾经花费一个星期的成果。

它虽然只有一个文件,却足足有829行,可见当时我下了多大功夫。回忆起当时作业的要求,大致也不过是实现一个可以增删改记录的学生成绩管理系统,何至于要写829行呢?找到源码配备的文档,想起那些我绞尽脑汁想出来的诸多花哨的功能,我不禁感慨:年轻就是能折腾啊!

而在我准备仔细拜读时,我却高兴不起来了——我根本看不懂也不想看懂我的代码!尽管我读过很多很烂的代码,但当发现自己曾经的骄傲之作其实是一片垃圾不堪入目时,我还是十分难受。

记得老师布置大作业的时候鼓励我们多写代码,多添加功能,于是我就认为代码越多越好,并添加了很多古怪的功能。而现在我很清楚:代码不是拼数量的,而是拼质量的,功能设计也不是越丰富越好,为意义不大的功能耗费精力是不值得的。

回顾我学习C的一点点经历,感慨曾经有太多对编程语言的误解:

  1. 狂热于语言技巧 死记运算符优先级,死钻语言特性的行为就是走火入魔,语言是为我们服务的,好用的特性就用,不好用的特性应当避免。以前以为一个人知道越多的语言特性就越懂一门语言,现在才明白懂如何用一门语言比探究语言本身更重要。
  2. 误以为代码越难懂越好 曾以为只有自己能看懂的程序才算高大上,肆无忌惮地使用“#”、“##”、“#@”预处理运算符,滥用那些鲜为人知的宏替换的技巧。不仅降低了自己写代码的效率,还增加了别人阅读的时间,到最后写出的代码连自己也看不懂。
  3. 盲目追求运行效率 曾参加智能车比赛,为了提高车速,误以为变量名改短,数组展开成简单变量,循环展开…等就能提高程序运行速度,简直愚蠢之极。(想象力太丰富不一定是好事,要多看书,少瞎想)
  4. 不愿分享代码 曾以为代码是自己辛勤劳动所得,如果给了别人就没有价值了。现在才明白代码就像一件艺术品,没有人看它,它也就没有价值了。

我想,写代码应当努力达到作诗般简练优雅:

  • 不追求平仄交替,只求抒发情感,表达思想
  • 不追求辞藻华丽,只求通俗易懂,老妪能解

这样的好代码才能被人们clone、star、传诵。

万千的感慨令我不禁神游了一阵子,回过神,想起大四没有课,也算是有点闲时间,于是想改改这份代码。可当我发现几乎所有地方都有毛病时且不想再看逻辑混乱的代码时,我又改了主意,哎,还是重写吧!

总算是把800多行改成200多行了,程序讲解见,希望对刚学完C语言的同学们有所帮助。本人能力有限,如有前辈愿意点拨,敬请在本文后评论,不胜感激!

Stu_t input_stu(void); // 通过提示引导用户正确地输入一条学生记录,并返回这条记录 int find_stu(void); // 通过提示引导用户查找记录,如果找到则显示查找到的记录,并返回数组索引,否则返回-1 printf("欢迎使用学生成绩管理系统\n" "-当前已有%d条记录,本程序限制%d条记录\n", puts("没有该序号!请重新输入"); puts("输入非法,重新输入!"); puts("依次输入姓名、语文、数学、外语成绩,空格分隔,成绩要求是整数:");

1)第N行有N+1个值(设起始行为第0行)

J!=1且J!=N+1时:其值为第N-1行的第J-1个值与第N-1行第J个值之和将这些特点提炼成数学公式可表示为:

本程序应是根据以上递归的数学表达式编制的。

将任一整数转换为二进制形式

将十进制整数转换为二进制的方法很多,这里介绍的实现方法利用了C语言能够对位进行操作的特点。对于C语言来说,一个整数在计算机内就是以二进制的形式存储的,所以没有必要再将一个整数经过一系列的运算转换为二进制形式,只要将整数在内存中的二进制表示输出即可。

no11.打鱼还是晒网

中国有句俗语叫“三天打鱼两天晒网”。某人从1990年1月1日起开始“三天打鱼两天晒网”,问这个人在以后的某一天中是“打鱼”还是“晒网”。

根据题意可以将解题过程分为三步:

1)计算从1990年1月1日开始至指定日期共有多少天;

2)由于“打鱼”和“晒网”的周期为5天,所以将计算出的天数用5去除;

3)根据余数判断他是在“打鱼”还是在“晒网”;

若余数为1,2,3,则他是在“打鱼”

在这三步中,关键是第一步。求从1990年1月1日至指定日期有多少天,要判断经历年份中是否有闰年,二月为29天,平年为28天。闰年的方法可以用伪语句描述如下:

如果((年能被4除尽且不能被100除尽)或能被400除尽) 则该年是闰年;

C语言中判断能否整除可以使用求余运算(即求模)

no12.抓交通肇事犯

一辆卡车违反交通规则,撞人后逃跑。现场有三人目击事件,但都没有记住车号,只记下车号的一些特征。甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的,但与前两位不同;丙是数学家,他说:四位的车号刚好是一个整数的平方。请根据以上线索求出车号。

按照题目的要求造出一个前两位数相同、后两位数相同且相互间又不同的整数,然后判断该整数是否是另一个整数的平方。

假设银行一年整存零取的月息为0.63%。现在某人手中有一笔钱,他打算在今后的五年中的年底取出1000元,到第五年时刚好取完,请算出他存钱时应存入多少。

分析存钱和取钱的过程,可以采用倒推的方法。若第五年年底连本带息要取1000元,则要先求出第五年年初银行存款的钱数:

依次类推可以求出第四年、第三年......的年初银行存款的钱数:

通过以上过程就可以很容易地求出第一年年初要存入多少钱。

假设银行整存整取存款不同期限的月息利率分别为:

利息=本金*月息利率*12*存款年限。

现在某人手中有2000元钱,请通过计算选择一种存钱方案,使得钱存入银行20年后得到的利息最多(假定银行对超过存款期限的那一部分时间不付利息)。

为了得到最多的利息,存入银行的钱应在到期时马上取出来,然后立刻将原来的本金和利息加起来再作为新的本金存入银行,这样不断地滚动直到满20年为止,由于存款的利率不同,所以不同的存款方法(年限)存20年得到的利息是不一样的。

分析题意,设2000元存20年,其中1年存i1次,2年存i2次,3年存i3次,5年存i5次,8年存i8次,则到期时存款人应得到的本利合计为:

其中rateN为对应存款年限的利率。根据题意还可得到以下限制条件:

可以用穷举法穷举所有的i8、i5、i3、i2和i1的组合,代入求本利的公式计算出最大值,就是最佳存款方案。

我要回帖

更多关于 c语言程序设计实训 的文章

 

随机推荐