




已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
中南大学c语言程序设计报告 姓名: 学号: 专业: 班级: 院系: 指导老师: 完成时间: 目录一、课程设计目的1二、课程设计题目2三、设计内容 第一题:3.1.1.设计思路3.1.2.程序框图3.1.3.程序源代码3.1.4结果展示第二题: 3.1.1.设计思路3.1.2.程序框图3.1.3.程序源代码3.1.4结果展示第三题:3.1.1.设计思路3.1.2.程序框图3.1.3.程序源代码3.1.4结果展示四、课程设计的体会和总结五、对c语言的认识以及学习过程中的体会一、课程设计目的1、 使学生进一步理解和掌握课堂上所学各种内容,以及它们在程序中的使用方法。2、使学生掌握软件设计的基本内容和设计方法,并培养学生进行规范化软件设计的能力。3、使学生掌握使用各种计算机资料和有关参考资料,提高学生进行程序设计的基本能力。二、课程设计题目第一题:文件数据的处理两个文件:data1.txt和data2.txt,两个文件中都有很多数字,用空格隔开。如:45 78 85 45 63 21 47 86运行程序,计算这两个文件中数字的交集,并且排好序,存放在jiao.txt中;计算这两个文件中数字的并集,并且排好序,存放在bing.txt中。第二题:统计字符出现的频率文件conf.txt中保存了很多字母,如:akdsjfkasdfjaksfjdaksdfjaskldjfaieakjdkfkadsjfiwejfkasdjf运行程序,计算这个文件中各个字母出现的频率,频率=出现的次数/总字母数。将频率存储在文件rate.txt中。格式为:a:3.2%k:3.8%第三题:翻译软件模拟文件ciku.txt中保存了一些词语的中英对应,格式如下:china=中国hello=你好界面上输入一个英文,能够翻译成中文。如输入:hello china显示:中国 你好第四题:文字替换在文件content.txt中有一些内容。编写程序,输入字符串1和字符串2,能将content.txt中字符串1替换成字符串2,保存为newcontent.txt。三、设计内容3.1. 第一题:文件数据的处理3.1.1设计思路:设计思想:通过构建并调用若干子函数,对文件提供的两个数组各自去除重复数字并排序,再合并为一个数组,此时该合并数组内的重复数字即交集,去除合并数组里的重复数字即得到并集。a.构建子函数1:从文件中读取数据,并返回数组长度int read_from(int arr,const char* path) /从文件中读取数据 file* file=fopen(path,r); int i=0; while(fscanf(file,%d,&arri)!=eof) +i; fclose(file); return i;b.构建子函数2:写入数据到相应文件中 void write_to(int arr,int n,const char* path) /写入数据到文件里 file* file=fopen(path,w); int i; for(i=0;in;+i) fprintf(file,%dt,arri); fclose(file);c.构建子函数3:对数组去除重复数字 int uniq(int arr,int n) /去除数组里重复数字 int i,j=1; for(i=1;i=0;-i) for(j=0;jarrj+1) int tmp=arrj; arrj=arrj+1; arrj+1=tmp; e.构建子函数5:合并两个数组 int merge(int arr,int n,int oth_arr,int oth_n) /合并数组 int i; for(i=0;ioth_n;+i) arrn+i = oth_arri; return n+oth_n;f.主函数:通过调用以上子函数,做到原来两个数组各自去重排序,再合并为一个可能含有重复数字的数组,求出重复数字即交集,去除重复数字即并集。int main() int arr1n+n,arr2n,length1,length2,i=0; length1=read_from(arr1,data1.txt); length2=read_from(arr2,data2.txt); sort(arr1,length1); sort(arr2,length2); length1=uniq(arr1,length1); length2=uniq(arr2,length2); length1=merge(arr1,length1,arr2,length2);/把arr2的内容追加到arr1上,之后arr1 就是有重复的并集 sort(arr1,length1); length2=0; /arr2里面的数据已经放入了arr1里面,可以安心地覆盖掉,我们就把交集放里面吧 for(i=1;ilength1;+i) if(arr1i=arr1i-1) arr2length2+=arr1i; length1=uniq(arr1,length1); write_to(arr1,length1,jiao.txt); write_to(arr2,length2,bing.txt); return 0;3.1.2. 程序框图:开始 从已知文件里读取两组数据并分别存入数组数组2去重排序数组1去重排序 合并为数组3求出数组3重复数字得到交集;去除重复数字得到并集;并各自放入对应文件结束3.1.3程序源代码:#include #define n 10000int read_from(int arr,const char* path) /从文件中读取数据 file* file=fopen(path,r); int i=0; while(fscanf(file,%d,&arri)!=eof) +i; fclose(file); return i;void write_to(int arr,int n,const char* path) /写入数据到文件里 file* file=fopen(path,w); int i; for(i=0;in;+i) fprintf(file,%dt,arri); fclose(file);int uniq(int arr,int n) /去除数组里重复数字 int i,j=1; for(i=1;i=0;-i) for(j=0;jarrj+1) int tmp=arrj; arrj=arrj+1; arrj+1=tmp; int merge(int arr,int n,int oth_arr,int oth_n) /合并数组 int i; for(i=0;ioth_n;+i) arrn+i = oth_arri; return n+oth_n;int main() int arr1n+n,arr2n,length1,length2,i=0; length1=read_from(arr1,data1.txt); length2=read_from(arr2,data2.txt); sort(arr1,length1); sort(arr2,length2); length1=uniq(arr1,length1); length2=uniq(arr2,length2); length1=merge(arr1,length1,arr2,length2);/把arr2的内容追加到arr1上,之后arr1 就是有重复的并集 sort(arr1,length1); length2=0;/arr2里面的数据已经放入了arr1里面,可以安心地覆盖掉,我们就把交集放里面吧 for(i=1;i=a&ch=z) return ch+a-a; return ch;b.主函数:计算字母出现次数及字母总数,得出各字母出现频率 int main() int cnt300=0;/ascii码不会超过这个0-299的 char strn; file* filein = fopen(conf.txt,r); fgets(str,n,filein); fclose(filein); int i=0;while(stri) cnttolower(stri)+; +i; int total=0;for(i=a;i=z;+i) total+=cnti; file* fileout = fopen(rate.txt,w);for(i=a;i=z;+i) if(cnti!=0) fprintf(fileout,%c:%2.1f%n,i,cnti*100/(double)total); fclose(fileout); return 0;3.2.2.程序框图:开始读取文件字符串,将大写字母转为小写统计各字符出现次数及字符总个数 结束计算各字母的出现频率并存入文件 3.2.3.程序源代码:#include #define n 10000char tolower(char ch) if(ch=a&ch=z) return ch+a-a; return ch;int main() int cnt300=0;/ascii码不会超过这个0-299的 char strn; file* filein = fopen(conf.txt,r); fgets(str,n,filein); fclose(filein); int i=0; while(stri) cnttolower(stri)+; +i; int total=0; for(i=a;i=z;+i) total+=cnti; file* fileout = fopen(rate.txt,w); for(i=a;i=z;+i) if(cnti!=0) fprintf(fileout,%c:%2.1f%n,i,cnti*100/(double)total); fclose(fileout); return 0;3.24.结果展示:3.3.第三题:翻译软件模拟四、课程设计的体会与总结: 我在调试过程中,发生了许多小细节上的问题,它们提醒了自己在以后编程的时候要注意细节,即使是一个括号的遗漏或者一个字符的误写都会造成大量的错误,浪费许多时间去寻找并修改,总结的教训就是写程序的时候,一定要仔细、认真、专注。 我还有一个很深的体会就是格式和注释,由于平时不注意格式和注释这方面的要求,导致有的时候在检查和调试的时候很不方便。有的时候甚至刚刚完成一部分的编辑,结果一不注意,就忘记了这一部分程序的功能。修改的时候也有不小心误删的情况出现。如果注意格式风格,并且养成随手加注释的习惯,就能减少这些不必要的反复和波折。还有一点,就是在修改的时候,要注意修改前后的不同点在哪里,改后调试结果要在原有的基础上更加精确。五、对c语言的认识以及学习过程中的体会:作为一名计算机专业的学生,在接触了c语言后,我对计算机语言有了一定的兴趣。 c语言的入门学习并不难,但却是一个十分重要的过程。下面就是我这段时间学习的心得与体会。 我认为作为学习c语言最重要的一点是要注重理解一些重要的概念.c语言本身并不复杂,翻开一本c语言的书籍,看到的无非就是变量,函数,条件语句,循环语句等概念.但要真正能进行程序设计,需要深入理解这些概念.因此,在 程序入门阶段还是应该重视概念的学习.而c语言的精髓之处在于指针,所以学好指针对我们这些初学者来说是极其重要的。其次,自己动手编写程序。c语言阶段要经常自己动手抄写或编写一些小程序,亲自动手进行程序设计是创造性思维应用的体现,是培养逻辑思维的好方法.因此一定要多动手编写程序,而且要从小程序开发开始,逐渐提高写程序的能力.只有不断的从自己的程序中积累经验,从中进步,才能写出好的程序。c语言课是高强度的脑力劳动,不是听会的,也不是看会的,而是练会的.只有自己动手,编写一些程序,才会有成就感,进而对课程产生兴趣,学起来才比较从容.动手能力的培养是这门课和以往课 程最大的不同之处.重点放在思路,算法,编程构思和程序实现上.语句只是表达工具,要求堂上积极思考,尽量当堂学懂,并做到灵活应用. 编程序不像做其它的事情,写程序之前一定要
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 道路运输考试题及答案
- 2025年广西南宁职业技术大学招聘教职人员考试笔试试题(含答案)
- 北京电气基础知识培训课件
- 2025机械工程师职称考试题及参考答案
- 2025年汽车修理工(装调工)高级技师理论知识竞赛试题与答案
- 2025食品安全管理员培训考试试题及答案
- 2025康复医学考试试题(含参考答案)
- 2024年急救设备操作试题(附答案)及设备相关应急预案考试题(附答案)
- 2024年湖南省常德市医疗三严三基理论考试题库及答案
- 2025年护理资格知识:膀胱肿瘤术后化疗灌注常用药物理论考试试题及答案
- 2025年十八项核心制度考试试题库(含答案)
- 2025年食堂安全培训考试题及答案
- 反诈防骗安全知识培训课件
- 砂石垫资合作协议合同范本
- 北师大版八年级数学上册第一章 勾股定理 单元测试卷(含答案)
- 护工清洁护理培训
- 违法建筑用电管理办法
- 2025年广西中考语文试题卷(含答案及解析)
- 2025年党建知识竞赛题库及答案(完整版)
- 烹饪高级技师论文
- 2025年时事政治考试100题(含参考答案)
评论
0/150
提交评论