中南大学C语言课程设计报告

合集下载

中南大学大一下学期c++程序设计实验报告1.0

中南大学大一下学期c++程序设计实验报告1.0

中南大学本科生课程设计(实践)任务书、设计报告(C++语言程序设计)题目多功能集成程序系统学生姓名闵杰指导教师罗芳学院材料科学与工程专业班级材料类1003学生学号**********计算机基础教学实验中心2011 年 6 月 30 日《集合简单计算、信息管理、绘图及多媒体系统设计》C++实践报告关键词:C++程序设计MFC[.exe] 面向对象计算信息管理绘图播放器一、引言1.1实践任务:1、计算程序设计。

如:计算器、一元二次方程的求解、华氏温度和摄氏温度之间的转换、求阶乘等。

2、文本编辑程序设计。

3、绘图程序设计。

如:吹泡泡程序、曲线等图形绘制。

4、信息管理程序设计。

能完成信息的添加、删除和修改等功能。

5、多媒体程序设计。

如:音频播放器、flash动画播放器等。

1.2实践目的:当今社会是信息时代,科技的高速发展要求我们能过熟练掌握并运用新的科学技术。

而信息的获取需要我们能够掌握应用程序的深层代码,运用所掌握的计算机程序知识对数据进行管理。

C++是由C发展而来的,与C兼容。

所以它可以用于面向过程的结构化程序设计,但是它又有自己的特点,它也可以用于面向对象的程序设计,是一种功能强大的混合型的程序设计语言。

通过本次实践,1、可以加深我们对面向对象的认识,巩固C++的基础知识,了解基于对话框的应用程序、文档/视图应用程序的框架结构和运行机制,初步掌握创建MFC应用程序的方法、过程。

2、掌握常用的控件的重要属性、主要消息、常用成员函数,并熟练地应用这些控件设计应用程序。

3、掌握绘制图形的方法、定时器的使用,鼠标消息处理函数和键盘消息处理函数的编写、对话框使用和菜单设计的技术。

4、培养我们的独立思考、设计综合程序的能力;同时培养自学能力;训练小论文撰写能力。

因此,计算机程序设计是大多数专业的必修课。

随着软件工程技术的不断发展,面向对象的程序设计方法已成为当今软件开发的主流技术,我们肩负着博采众长的使命,运用好该程序将使我们受益匪浅。

中南大学c语言课程设计

中南大学c语言课程设计

中南大学c语言课程设计一、课程目标知识目标:1. 掌握C语言的基本语法结构,包括变量声明、数据类型、运算符、表达式等;2. 学会使用C语言进行顺序、选择、循环等基本控制结构;3. 理解函数的定义与调用,并能编写简单的自定义函数;4. 掌握数组和字符串的使用,了解其应用场景;5. 了解指针的概念,学会使用指针进行内存操作。

技能目标:1. 能够运用C语言编写简单的程序,解决实际问题;2. 培养良好的编程习惯,如代码规范、注释清晰、调试与优化;3. 学会使用编译器进行程序编译、链接和运行;4. 能够通过阅读和分析代码,理解他人的程序设计思路。

情感态度价值观目标:1. 培养学生对编程的兴趣和热情,激发自主学习编程的动力;2. 培养学生的团队合作意识,学会与他人共同解决问题;3. 培养学生的创新思维和解决问题的能力,敢于面对挑战;4. 增强学生的自信心,使其在学习过程中体验到成就感。

课程性质:本课程为中南大学计算机专业的基础课程,旨在培养学生的编程能力和逻辑思维能力。

学生特点:学生具备一定的计算机基础知识,但对编程尚处于入门阶段,需要系统学习C语言的语法和应用。

教学要求:教师应注重理论与实践相结合,通过案例教学、上机实践等方式,引导学生掌握C语言的基本知识和技能。

在教学过程中,关注学生的学习进度和需求,及时调整教学方法和内容,确保课程目标的实现。

同时,注重培养学生的自主学习能力和团队合作精神,提高其综合素质。

二、教学内容1. C语言基础知识:变量、数据类型、常量、运算符、表达式、语句;2. 控制结构:顺序结构、选择结构(if-else、switch)、循环结构(for、while、do-while);3. 函数:函数定义、函数调用、局部变量、全局变量、递归;4. 数组:一维数组、二维数组、数组初始化、数组操作;5. 指针:指针定义、指针操作、指针与数组、指针与函数;6. 字符串:字符串表示、字符串操作、字符串函数;7. 预处理器:宏定义、文件包含、条件编译;8. 编程规范与调试:代码风格、注释、调试技巧、性能优化;9. 综合应用实例:求解数学问题、文件操作、简单游戏开发。

C语言程序设计实践报告

C语言程序设计实践报告
在主函数 main()中多次调用其他子函数是这个文本编辑器的 最大特点。最主体的子函数莫过于 drawmenu()画出文本编辑器的 功能列表,其他还有各种功能的子函数,如 drawmain()画出整个 文本编辑器的主界面,如 del()定义删除功能,在这里就不一一介 绍,详见下面。
2
目录
一、功能设计 二、详细设计 三辑器模块
1、添加:当光标所在位置及后面没有字符时,系统会以添加的方式 输入字符。 2、插入:当光标所在位置及后面有字符时,系统会以插入的方式输 入字符。 3、删除:用户可以通过 Backspace 键删除光标前一个字符,也可以 使用 Del 键删除当前位置的字符。 4、选定:用户可以使用左移键(←)、右移键、上移键、下移键来移 动光标位置。也可以通过 Ctrl+左移键(或右移键)来选定多个字符。
(五)帮助及其他模块
1、帮助:帮助功能可以提示使用者如何进入菜单中的各个项目。 2、关于:关于功能是描述此文本文件编辑系统的设计者。 3、快速预览:用户可按 F10 功能键来打开快速预览窗口,在快速预 览窗口中没有功能菜单条。
6
二、详细设计
1、程序预处理。首先有头文件的加载,再有宏定义上下左右、 退格、换行、复制、粘贴、剪切等热键,使用户可以直接从键盘上录 入字符进行操控(字符即 ASCII 码字符),为了方便下面程序的运行, 还要定义 3 个结构体,分别与剪贴板、列单链表和行单链表相关。
(一)文件操作模块
1、新建:新建功能应该要可以不只是单纯地把输入文本框清空, 而且还应该可以智能判断文本框中是否有数据,如果有数据未 保存 或者保存过后又有数据变动,则会弹出提示信息询问是否 保存。新 建功能可以通过选择 File 菜单上的 New 子菜单来实现。 2、打开:打开功能应该要可以通过记事本读入文件。打开功能可以 通过选择 File 菜单上的 Open 子菜单来实现。在文件打开时,保存和 另存为操作中,系统会提示用户输入文件路径及文件名。特别注意的 是,当用户打开一个文件时,指定的文件必须存在,否则系统会报错。 3、保存:保存功能应该要可以直接将文本框中的内容记忆保存。保 存功能可以通过选择 File 菜单上的 Save 子菜单来实现。 4、另存为:另存为功能应该要可以将文本框中的内容记忆保存,并 且可以进一步把整个文件保存到指定地方。另存为功能可以通过选择 File 菜单上的 Save as 子菜单来实现。 5、退出:退出功能应该要可以直接退出文本文件编辑系统。退出功 能可以通过选择 File 菜单上的 Exit 子菜单来实现。

中南大学程序设计语言C课程设计级

中南大学程序设计语言C课程设计级

智能15级《程序设计语言(C++)》课程设计任务书一、课程设计目的本课程设计是智能科学及技术专业的重要实践性课程。

是学习完《计算机及程序设计语言基础》课程后进行的一次全面的综合练习。

通过课程设计,一方面可以结合课程的教学内容循序渐进地进行设计方面的实践训练,另一方面,在参及一系列综合项目的实践过程中,还能提高如何综合运用所学知识解决实际问题的能力,以及获得相关项目管理和团队合作等众多方面的具体经验。

为后续课程面向对象程序设计等课程奠定必要的实践基础。

设计目的如下:1.进一步培养学生结构化程序设计的思想,加深对高级语言基本语言要素和控制结构的理解。

2.针对C++语言中的重点和难点内容进行训练,独立完成有一定工作量的程序设计任务,同时强调好的程序设计风格。

3.掌握C++语言的编程技巧和上机调试程序的方法。

4.掌握程序设计中的常用算法。

为了使学生从课程设计中尽可能取得比较大的收获,对课程设计题目分成二类,一类为基础训练题目,从中学习到程序设计的常用算法,另一类为综合题目。

学生可根据自己的能力和兴趣从两类中各选择一个设计题完成。

二、课程设计内容分组形式:可2-4人组队题目要求:A类题目必须全部完成,B类题目3题内选择2题完成A组题型:基本知识单项训练()设计题1、数据连接编写函数实现两个字符单向链表的连接。

函数以对两个链表头的引用作为参数,把第二个链表连接到第一个链表后面。

设计题2、字符处理设计函数,实现英文字符的大小写转换并去除其他字符。

要求:字符串中的小写字符自动变换成对应的大写字符,而大写字符则变换成对应的小写字符。

另,如果字符串中存在除英文大小写之外的字符请去除掉。

设计题3、数据统计求数组中离平均数最近的那个数。

假定函数int mid(int a[], int len);计算数组a中所有数的平均值,并返回数组中离该平均值最近的那个数。

设计题4、抓交通肇事犯一辆卡车违反交通规则,撞人后逃跑。

现场有三人目击事件,但都没有记住车号,只记下车号中后4位数字的一些特征。

中南大学c语言课程实践报告

中南大学c语言课程实践报告

中南大学c语言课程实践报告Document serial number【UU89WT-UU98YT-UU8CB-UUUT-UUT108】中南大学??C语言程序设计实践报告??????题目学生信息管理系统学生姓名张眼指导教师刘伟荣学院信息科学与工程学院专业班级电气信息1113班完成时间 2012年6月28日星期四?printf("\t\t\t|学生信息管理系统欢迎您|\n");printf("\t\t\t+---------------------------+\n");printf("\t\t\t+设计者:张眼\n");printf("\t\t\t+指导老师:刘伟荣\n");printf("重要提示:为保证您的操作得到保存,请按正常顺序退出系统!谢谢合作\n");do{printf("\n\t\t\t+++++++++++++++++++++++++++++\n");printf("\t\t\t|**菜单**|\n");printf("\t\t\t+++++++++++++++++++++++++++++++++\n");printf("\t\t\t*[1]----录入/插入学生信息*\n");printf("\t\t\t*[2]----浏览学生信息*\n");printf("\t\t\t*[3]----查询学生信息*\n");printf("\t\t\t*[4]----删除学生信息*\n");printf("\t\t\t*[5]----修改学生信息*\n");printf("\t\t\t*[6]----不及格学生列表*\n");printf("\t\t\t*[7]----成绩信息查询*\n");printf("\t\t\t*[8]----平均成绩*\n");printf("\t\t\t*[0]----退出系统*\n");printf("\t\t\t********************************\n");printf("请输入您的选择:");scanf("%d",&z);switch(z){case0:tc();break;case1:lr();break;case2:ll();break;case3:cx();break;case4:sc();break;case5:xg();break;case6:bj();break;case7:kc();break;case8:pj();break;default:printf("\n无效选项!");}}while(z!=0);}②输入模块:输入部分包括学生的姓名,学号等基本信息以及学生的大学物理,英语,微积和信号的成绩,可以通过函数void lr() 实现此功能。

中南大学C实践报告

中南大学C实践报告

中南大学C实践报告 The document was prepared on January 2, 2021中南大学C++程序设计实践报告学院:材料院专业班级:学号:姓名:一、实践目的C++是一种运用广泛的电脑程序式设计语言。

在学完C++程序设计课程后,为了加深和巩固课程的每个知识点,训练并培养自己运用所学知识独立进行程序设计、解决实际问题的能力,学会编制结构清晰、风格良好、数据结构适当的C++语言程序。

我们在老师的指导下进行了C++程序设计实践,用C++语言编制学生档案管理软件。

二、实践要求1)、进行C++程序设计实践要求我们利用面向对象的方法以及C++的编程思想来完成该软件的设计。

2)、建立学生档案管理软件,要对所包含的学生的全部信息,能进行相应的学生信息输入、学生信息输出、学生信息删除、学生信息添加以及学生信息修改。

3)、系统的主程序中,要求会使用口令判断功能函数。

使得程序体对信息的修改更为方便。

4)、程序主函数中也要提供菜单选项,该选项具有一定的选择信息,以方便使用者使用。

三、实践内容实践内容包括了:学生档案管理软件的总设计框架,系统口令函数的框图,以及数据的输入、添加、修改、删除、显示等的子框图还有退出系统的框图。

学生档案管理软件总框架:系统口令流程图:主菜单流程图:数据修改流程图:数据删除流程图:数据显示流程图:退出流程图:四、实践体会在指导老师的耐心教导下,我们完成了此次C++程序设计实践。

在实践过程中,我们学会了如何运用C++语言编写一个学生档案管理软件。

首先,我们要对所编软件有相应的认识,了解该学生档案管理系统应有的功能,对相应的功能思考需要运行的函数。

例如整个程序体的主函数,系统口令函数以及数据输入输出修改删除等的函数。

然后对课堂所学内容进行灵活运用,如源程序中多次使用到的指针与数组等。

此外还需用到部分课外知识,这就考查了我们对C++程序语言的自主学习能力。

通过此次程序设计实践,用理论联系实际,加深了我对C++语言的理解与掌握,提高了我的实践能力及计算机操作能力。

中南大学c课程设计报告

中南大学c课程设计报告

中南大学《高级程序设计实践(C++)》课程设计报告设计题目教学设备管理系统指导老师设计者专业班级设计日期目录一课题的基本内容和要求二程序功能简介三主体内容:1 设计分析2 程序整体结构3 部分模块的结构4 相关模块源程序5 操作方法6试验结果7设计体会8 参考文献一基本内容和要求(一)基本要求本设计采用教师指导、学生自学和独立编程操作方式,先由学生查阅与本设计有关的书籍和资料,利用Visual C++ 6.0设计环境与开发工具,在两周时间内,完成课程设计内容中的一个管理系统,具体要求如下:1、独立思考:独立完成课程设计中各任务的设计和调试。

2、上机准备:每次上机前,要事先编制好准备调试的程序,认真想好调试步骤和有关环境的设置方法,准备好有关的文件。

3、数据管理:管理系统中的数据可用数据库(如Access数据库)的形式保存,也可用普通文件(文本文件或二进制文件)的形式保存。

4、程序要求:界面美观、可操作性强、稳定性好。

(二)基本内容:教学设备管理系统为方便管理学校教学设备,编写一个教学设备管理系统软件。

系统记录必须包括设备编号、设备名称、生产厂家、购置日期、台数、单价、及备注等。

二程序功能简介(1)添加:增加一台设备的记录到管理系统中。

(2)查询:可以根据设备编号查找某台设备的相关信息,若找到则显示其信息。

(3)修改:在管理系统中修改一台设备的记录。

(4)保存:将所有教学设备信息保存在一个文件中(数据库文件或普通的文本文件)。

(5)读取:从文件中读取已保存了数据。

(6)删除:从管理系统中删除一条记录。

(7)恢复:能恢复被删除的记录。

(8)统计:(A)统计每页合计台数及金额;(B)累计设备的总台数及总金额;(C)统计单价在:200元以下、200~800元之间和800元以上的设备总台数及总金额。

(D)以表格形式打印教学设备明细表。

(9)其他:可以根据自己的思路设计其他功能。

三主体内容1 设计分析根据问题描述和要求,系统要求能够添加设备,按设备编号查询,修改,保存,读取,删除,恢复设备的信息。

中南大学数学院C课程设计报告

中南大学数学院C课程设计报告

中南大学《C++课程设计》设计报告题目C++课程设计学生姓名学号专业班级数学类0901指导老师袁修贵数学科学与计算技术学院2010年6月一、实验目的、内容1.用户任意输入一个年份以及该年的1月1日是星期几,而后再输入该年的任意一个月份,由程序负责在屏幕上按照你所设计的格式显示出这一个月的月历。

思考:利用元年元月元日(即1年1月1日)是星期一的已知事实,可对程序进行改造,让用户仅输入任意一个年份和一个月份,则程序就应按格式显示出该年那一个月的月历。

2.编写程序,从键盘读入一个文本文件名字(可带路径),为该文件中的所有单词建立一个词汇索引。

按字母顺序显示所有单词(仅一次),后面紧跟着它们所在的行号。

大写与小写字母被认为是相同的。

例如,对于下列的输入文件:To be ornot to be,that is the question.产生的词汇索引如下:be 1 2is 3not 2or 1question 3that 3the 3to 1 23.模拟计算器程序问题描述设计一个程序来模拟一个简单的手持计算器。

程序支持算术运算+、-、*、/、=、以及C(清除)、A(全清除)操作。

基本要求程序运行时,显示一个窗口,等待用户输入,用户可以从键盘输入要计算的表达式,输入的表达式显示在窗口中,用户键入’=’ 符号后,窗口显示出结果。

测试数据程序输入不少于5种不同的表达式进行测试。

实现提示可定义一个计算器类,该类包括两个组件对象,一个计算引擎和一个用户接口,用户接口对象处理接受的键盘输入信息,并显示答案,计算引擎对象对给出的数据执行相应操作,并存储操作的结果。

二、实验程序设计及结构1、需求分析○1对需求的信息进行模糊查询○2模拟电子辞典○3模拟计算器2、设计结构(1)#include <stdio.h>#include <stdlib.h>int a[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};int main(){int i,n,s = 0,r = 0,year,month,days = 0,day,date = 1;int b[42] ={1,2,3,4,5,6,7}; //日历中的星期puts("Please input the weekday of date month 1/day 1:");scanf("%d",&n);puts("Please input the date you want:");scanf("%d%d%d",&year,&month,&day);if((year % 4 == 0 && year % 100 != 0)||year % 400 == 0)a[2] = 29;for(i=1;i<month;i++)days += a[i];s = day + days;if((s + n - 1) >= 7)s = (s + n - 1) % 7;elses = s + n - 1;printf("weekday:");switch(s){case 0: puts("7\n");break;case 1: puts("1\n");break;case 2: puts("2\n");break;case 3: puts("3\n");break;case 4: puts("4\n");break;case 5: puts("5\n");break;case 6: puts("6\n");break;}if((days +n)>= 7)r = (days + n)%7;elser = days +n;for(i = 0;i < 42;i++){if(i == r + 6&&date < a[month]) {b[i] = date;date++;r++;}printf("%d\t",b[i]);if(i > 5&&(i+1) % 7 == 0)printf("\n");}return 0;}(2)#include <iostream>#include <fstream>#include <vector>#include <string>using namespace std;typedef struct _unit{string word;int line;}unit;int main(){vector<unit> list;ifstream in;string fileName;cout<<"输入文件路径: ";cin>>fileName;in.open(fileName.c_str());if (in.fail()){cout<<"文件打开错误,退出"<<endl;exit(0);}unit temp;int lineNumber = 1;while(!in.eof()){in>>temp.word;temp.line = lineNumber;list.push_back(temp);if (in.peek()=='\n'){lineNumber++;}}in.close();bool isIn = false;vector<string> copy;for (unsigned int i=0; i<list.size(); i++) {isIn = false;for (unsigned int j=0; j<copy.size(); j++) {if (list[i].word == copy[j]){isIn = true;break;}}if (!isIn)copy.push_back(list[i].word);}vector<int> lineNo;for (unsigned int m=0; m<copy.size(); m++){for (unsigned int n=0; n<list.size(); n++){if (list[n].word == copy[m]){lineNo.push_back(list[n].line);}}lineNo.push_back(0);}int current=0;for (unsigned int o=0; o<copy.size(); o++){cout<<copy[o]<<" ";for (unsigned int p=current; p<lineNo.size(); p++){if (lineNo[p] == 0){current=p+1;break;}elsecout<<lineNo[p]<<" ";}cout<<endl;}return 0;}(3)#include <stdio.h>#include <string>#include <cctype>#include <iostream>#include <map>#include <sstream>#include <strstream>using namespace std;istream* input; // pointer to input streamint no_of_errors; // note: default initialized to 0double error(const char* s){no_of_errors++;cerr << "error: " << s << '\n';return 1;}enum Token_value {NAME, NUMBER, END,PLUS='+', MINUS='-', MUL='*', DIV='/',PRINT=';', ASSIGN='=', LP='(', RP=')'};Token_value curr_tok = PRINT;double number_value;string string_value;Token_value get_token(){char ch;do { // skip whitespace except '\en'if(!input->get(ch)) return curr_tok = END;} while (ch!='\n' && isspace(ch));switch (ch) {case ';':case '\n':return curr_tok=PRINT;case '*':case '/':case '+':case '-':case '(':case ')':case '=':return curr_tok=Token_value(ch);case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case '.':input->putback(ch);*input >> number_value;return curr_tok=NUMBER;default: // NAME, NAME=, or errorif (isalpha(ch)) {string_value = ch;while (input->get(ch) && isalnum(ch))string_value += ch; // string_value.push_back(ch); // to work around library buginput->putback(ch);return curr_tok=NAME;}error("bad token");return curr_tok=PRINT;}}map<string,double> table;double expr(bool); // cannot do withoutdouble prim(bool get) // handle primaries{if (get) get_token();switch (curr_tok) {case NUMBER: // floating-point constant{ double v = number_value;get_token();return v;}case NAME:{ double& v = table[string_value];if (get_token() == ASSIGN) v = expr(true); return v;}case MINUS: // unary minusreturn -prim(true);case LP:{ double e = expr(true);if (curr_tok != RP) return error(") expected"); get_token(); // eat ')'return e;}default:return error("primary expected");}}double term(bool get) // multiply and divide {double left = prim(get);for (;;)switch (curr_tok) {case MUL:left *= prim(true);break;case DIV:if (double d = prim(true)) {left /= d;break;}return error("divide by 0");default:return left;}}double expr(bool get) // add and subtract {double left = term(get);for (;;) // ``forever''switch (curr_tok) {case PLUS:left += term(true);break;case MINUS:left -= term(true);break;default:return left;}}int main(int argc, char* argv[]){switch (argc) {case 1: // read from standard inputinput = &cin;break;case 2: // read argument string// input = new istringstream(argv[1]);input = new istrstream(argv[1]);break;default:error("too many arguments");return 1;}table["pi"] = 3.1415926535897932385; // insert predefined names table["e"] = 2.7182818284590452354;while (*input) {get_token();if (curr_tok == END) break;if (curr_tok == PRINT) continue;cout << expr(false) << '\n';}if (input != &cin) delete input;return no_of_errors;d}三、设计过程写出设计过程,实验源代码可不写出,但实验中出错信息及处理方法及解决错误的方法要写。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程设计第一题题目要求data1.txt和data2.txt,两个文件中都有很多数字,用空格隔开。

运行程序,计算这两个文件中数字的交集,并且排好序,存放在jiao.txt中;计算这两个文件中数字的并集,并且排好序,存放在bing.txt需求分析(1)输入两组若干个int型类型的数据;(2)输出两组数据以及它们的交集和并集;(3)程序可对输入的两组数据进行交并集处理,并分别保存在文件中;(4)第一组->data1:3 67 45 2 4data2:4 76 89 125 7第二组->data1:56 78 90 3 77 18 45 3 168data2:88 4 77 35 8 46 0 85 78 99 23 1……概要设计(1)输入若干个int类型的数据给data1.txt,再随机输入若干个int类型的数据给data2.txt。

(2)程序将根据所给的data1和data2的数据通过调用jiao函数对它们的交集进行求解,通过调用save1函数将其结果保存在jiao.txt文件中。

(3)程序将根据所给的data1和data2的数据通过调用bing函数对它们的并集进行求解,通过调用save2函数将其结果保存在bing.txt文件中。

(4)在交并集保存在相应文件之前,通过调用sort函数对其进行从小到大的排序详细设计流程图:(sort函数)(save2函数)(save4函数)(fun函数)(main函数)测试结果:第一组:data1:data2:输出结果:并集:第二组:data1:data2:输出结果:并集:第三组:data1:data2:输出结果:并集:课程设计第二题题目要求文件conf.txt中保存了很多字符,如:ajgdjauqwieueuiwqwgdakdhkjduiwhdsdhkjdk.运行程序,计算这个文件中各个字母出现的频率,频率=出现的次数/总字母数。

将频率存储在文件rate.txt中。

格式为:a : 3.20%k : 3.80%……需求分析(1)从键盘键入若干小写字母组成的字符,以回车键结束字符输入;(2)计算机将输出a—z所对应的出现频率;(3)程序自动统计a—z的出现频率,并将结果保存到文本文件中;(4)测试数据:例如:输入 gsjfa fhj fh h hsdgfyuweguthfer eutguierghuerhguiergiueugtuerigi结果 a: 1.5% b: 0.0% c: 0.0% d: 1.5% e: 12.3%f: 7.7% g: 13.8% h: 10.8% i: 7.7% j: 3.1%k: 0.0% l: 0.0% m: 0.0% n: 0.0% o: 0.0%p: 0.0% q: 0.0% r: 7.7% s: 3.1% t: 4.6%u: 13.8% v: 0.0% w: 1.5% x: 0.0% y: 1.5%z: 0.0%……概要设计(1)从键盘键入小写字母所组成的字符串,通过count来记录实际键入的字符个数。

(2)通过调用save1函数将输入的字符串保存到conf.txt文件中。

(3)调用search函数计算出各个字母所出现的频率,同时将其频率分别存放在WORD 的数组中。

(4)在通过调用save2函数将字母及其频率保存在rate.txt文件中。

详细设计流程图:(search函数)(save1函数)(save2函数)(main函数)测试结果第一组:输入字符:输出结果:统计结果:第二组输入字符:输出结果:统计结果:参考文献《C语言程序设计》(谭浩强著)用到的软件:Visual C++ 6.0 C-Free 4.0 C流程图生成器课程设计总结一周的课程设计已经结束了。

回想学习C语言的过程中,既有快乐又有烦恼。

从领到书的那一刻,我就很郁闷,《C 语言程序设计》到底事学什么的,有什么用。

刚开始上课时,还在迷茫这门课程是用来做什么的。

不过,这些感受都是在对这门课程不了解的情况下产生的。

后来慢慢的接触多了,听老师讲的多了,了解多了,渐渐的产生了兴趣。

尤其是学到语句和函数时,上机操作程序,经过编译,调试和运行后,出现界面,当时觉得很好奇,想真正的学好这门课程。

通过半个学期的学习,我掌握了基本知识。

下学期开始时,被通知要进行一周的课程设计当时有点懵,感觉学的东西很少,很零散,不知该怎么练到一起,就要课程设计,是不是太难为我们了。

第一天基本上都是在看书,把基本知识再熟悉一边。

到了下午的时候,老师发过来四道练习题,从这几道练习题上我得到了不少启发,然后我们组把整个程序的思路理清了,开始着手写程序。

第一天结束的时候,我感觉自己收获挺大的,从一开始的迷茫,不知道从何下手到把程序中的几个模块编写出来,心里挺开心的。

但是,到了第二天,我们由不得不再次陷入困境。

在整个程序的编写过程中。

最难的就是修改和删除这两个模块,这也是我们第二天要解决的重点问题。

开始编写修改和删除时,很头疼,去向其他人寻求帮助,在别人的帮助和提示下,我编完了修改程序,但编译时老出错,修改后的内容将文本内的信息全部覆盖了。

困难之时,我们组的其他人,帮助了我,完成了修改和删除。

这样的话,整个程序基本上全部完成了,就剩下完善工作了。

我们组写了两个程序,最后,两个程序相互组合,互补,大功告成虽然设计时完成了,但是我觉得其中还是有一些不足:* 1.警告句。

程序中缺少一些警告句,例如:“是否真的删除(y/n)”;* 2. 重名的情况。

由于考虑的不周全,没有设计遇到重名的情况该怎么处理;* 3. 选择单一。

我们设计的程序中,只设计了按名字选择,进行操作,忽略了重名的情况。

整个程序完成了,还有很多不完善的地方,希望自己以后办事的时候要认真,仔细,考虑周全。

短短的一周课程设计结束了,但是这段时间里我又学到了更多C 知识,如:对象数组,string类,文件流等,同时我也被提醒以后办事的时候要认真,仔细,考虑周全。

也看到了团队精神和互帮互助的重要性。

这一点会让我终生受益。

通过一周的课程设计,我觉得自己肚子里的墨水多了,收获也挺大的,这一周过的挺充实!通过这次实践的学习,我认到学好计算机要重视实践操作,不仅仅是学习c语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以后在学习过程中,我会更加注视实践操作,使自己便好地学好计算机。

附录:第一题源程序#include<stdio.h>#include<stdlib.h>#define N 100int del(int *a,int n){int count=1;int i,j;for(i=1;i<n;i++){for( j=0;j<count;j++){if(a[i]==a[j]) break;}if(j==count){if(i>count) a[count]=a[i];count++;}}return count;}void sort(int b[],int k) /*排序*/ {int i,j,t,flag;for(j=0;j<k-1;j++){flag=0;for(i=0;i<k-j-1;i++)if(b[i]>b[i+1]){t=b[i];b[i]=b[i+1];b[i+1]=t;flag=1;}if(flag==0)break;}}void save1(int num[],int a) /*建立data1.txt*/{int i,*p;FILE *fp;p=num;if((fp=fopen("data_1.txt","w"))==NULL){printf("Can't open this flie\n");exit(0);}for(i=0;i<a;i++){fprintf(fp,"%4d",*(p+i));}fclose(fp);}void save2(int num[],int b) /*建立data2.txt*/ {int i,*p;FILE *fp;p=num;if((fp=fopen("data_2.txt","w"))==NULL){printf("Can't open this flie\n");exit(0);}for(i=0;i<b;i++){fprintf(fp,"%4d",*(p+i));}fclose(fp);}void save3(int num[],int k) /*建立jiao.txt*/{int i,*p;FILE *fp;p=num;if((fp=fopen("Jiao.txt","w"))==NULL){printf("Can't open this flie\n");exit(0);}for(i=0;i<k;i++){fprintf(fp,"%4d",*(p+i));}fclose(fp);}void save4(int num[],int k) /*建立bing.txt*/{int i,*p;FILE *fp;p=num;if((fp=fopen("Bing.txt","w"))==NULL){printf("Can't open this flie\n");exit(0);}for(i=0;i<k;i++){fprintf(fp,"%4d",*(p+i));}fclose(fp);}void fun(int num1[],int num2[],int a,int b) /*求交并集*/ {int i,j,k,m=0,n=0,jiao[N],bing[4*N];for(i=0;i<a;i++)for(j=0;j<b;j++)if(num1[i]==num2[j])jiao[m++]=num1[i];sort(jiao,m);printf("\ndata1与data2的交集:\n");for(i=0;i<(k=del(jiao,m));i++){printf("%5d",jiao[i]);if((i+1)%10==0)printf("\n");}printf("\n");save3(jiao,k);for(i=0;i<a;i++)bing[n++]=num1[i];for(i=0;i<b;i++)bing[n++]=num2[i];sort(bing,n);printf("\ndata1与data2的并集:\n");for(i=0;i<(k=del(bing,n));i++){printf("%5d",bing[i]);if((i+1)%10==0)printf("\n");}printf("\n");save4(bing,k);}main(){int i,j=1,a,b,num1[N],num2[N];printf("输入data1的个数->");scanf("%d",&a);if(a>N)goto stop;printf("\n输入data1的数据:\n");for(i=0;i<a;i++){scanf("%d",&num1[i]);}printf("\n输入data2的个数->");scanf("%d",&b);if(b>N)goto stop;printf("\n输入data2的数据:\n");for(i=0;i<b;i++){scanf("%d",&num2[i]);}printf("\ndata1:\n");for(i=0;i<a;i++){printf("%3d",num1[i]);if((i+1)%10==0)printf("\n");}save1(num1,a);printf("\ndata2:\n");for(i=0;i<b;i++){printf("%3d",num2[i]);if((i+1)%10==0)printf("\n");}save2(num2,b);fun(num1,num2,a,b);if(a>N||b>N)stop: printf("错误!输入的数据过多\n");}第二题源程序#include<stdio.h>#define N 100float search(char str[],float count,char word) /*查询待查字符*/ {int ji;float num=0;char *cp;cp=str;for(ji=0;ji<count;ji++){if(*(cp+ji)==word)num++;}num=num/count*100;return num;}void save1(char str[],int count) /*建立conf.txt*/ {int i;char *p;FILE *fp;p=str;if((fp=fopen("conf.txt","w"))==NULL){printf("Can't open this flie\n");exit(0);}for(i=0;i<count;i++){fprintf(fp,"%c",*(p+i));}fclose(fp);}void save2(float WORD[],int count) /*建立rate.txt*/ {int i;float *p;char a=97;FILE *fp;p=WORD;if((fp=fopen("rate.txt","w"))==NULL){printf("Can't open this flie\n");exit(0);}for(i=0;i<count;i++){fprintf(fp,"%c:%5.1f%% ",a+i,*(p+i));}fclose(fp);}main(){char str[N],*cp,word;int ji;float a,count=0,WORD[26];cp=str;word='a';printf("Enter the string:\n");gets(str);for(ji=0;ji<N;ji++) /*用count统计字符的长度*/ {if(*(cp+ji)!='\0'){count++;}else break;}save1(str,count);for(ji=0;ji<26;ji++){WORD[ji]=search(str,count,(word+ji));}save2(WORD,26);for(ji=0;ji<26;ji++){printf("%c:%5.1f%% ",word+ji,WORD[ji]);if((ji+1)%6==0)printf("\n");}printf("\n");}。

相关文档
最新文档