1、C语言程序模板设计报告课程设计C语言课程设计报告Experime nt Desig ning reporter课程名称 :c语言课程设计英文名称:C Program Experime nt Desig ning专 业:工商管理类+ 软件工程09-2学 号:姓 名:指导教师:日 期:2010年7月12日至2010年7月23日大连交通大学软件学院课程编号: 适用专业:C语言课程设计报告C Program Experiment Designing0120308006 学时: 40 学时软件工程专业 授课单位:软件学院一、 C语言课程设计目的及要求目的:根据课堂讲授内容,学生做相应的自主练习,消化课堂
2、所讲解的内容;通过调 试典型例题或习题积累调试 C程序的经验;通过完成辅导教材中的编程题,逐渐培养学生的编程能力、用计算机解决实际问题的能力。要求:1.熟悉Turbo C的编程环境、主要菜单功能。2.通过上机验证运算符、表达式、运算规则、函数使用。3.熟练使用C语言的典型语句编写简单程序。4.调试典型例题或习题。5.提高上机编程能力二、 实验类型设计类型三、 实验学时40学时四、 实验设备微型计算机、WINDOWS98以上版本的操作系统、Turbo C2.0软件一套五、 C语言课程参考教材:1. C语言程序设计 清华大学出版社 马靖善主编2.谭浩强.C语言程序设计(第三版).北京:高等教育出版
3、社,2002课程设计(报告)任务书任务及要求:1.设计(研究)内容和要求研究内容:C语言课程设计题目相关内容5个小程序都分别是什么任务和要求:(1) 学习C语言基础知识,掌握 C语言编程和程序调试的基本技能。(2) 对指导教师下达的题目进行系统分析。(3 )根据分析结果完成系统设计。(4) 编程:在计算机上实现题目的代码实现。(5) 完成对该系统的测试和调试。(6) 提交课程设计报告。(7) 指标:要求完成课程设计报告 3千字以上(约二、三十页).完成若干综合性程序设计题目,综合设计题目的语句行数的和在 300行语句以上。2.原始依据了解C语言的基础知识,有一定的语言编程基础,能够熟练运用C语
4、言进行程序设计。 通过用C语言完成的题目,提高用 C语言解决实际问题的能力。3.参考文献1黄明等 C语言程序设计辅导教材大连理工大学出版社,20062马靖善等.C语言程序设计.清华大学出版社,20053谭浩强.C语言程序设计(第二版)北京:高等教育出版社, 2002C 语言课程设计报告 11谁在说谎问题 11.1功能说明 11.2设计说明 12排列无重复数字的三位数 12.1功能说明 12.2设计说明 13已知一组数据按从小到大输出 23.1功能说明 23.2设计说明 24有两个字符串S1和S2,编写程序把它们连接起来 24.1功能说明 24.2设计说明 25主函数说明 35.1功能说明 35
5、.2程序运行截图 35.3源程序代码 36通讯录系统管1.1功能说明 31.2设计分析 31.3程序运行截图 41.4程序源代码 4大连交通大学 软件学院SOFTWARE INSTITUTEOF DALIAN JIAOTONG UNIVERSITYC语言课程设计报告EXPERIMENT DESIGNING1谁在说谎问题1.1系统分析通过if语句分析谁在说谎1.2设计说明1、 定义:#in cludestdio.h2、 子函数,判定谁在说谎。函数名:g1()返回值:a b c其中之一参数:int a,b,c处理流程:Step1 :判定a是否为假,如果为真进去下一层,如果为假直接输出; Step2
6、:;判定b是否为假,如果为真进去下一层,如果为假直接输出 Step3:判定c是否为假,如果为假直接输出。2排列无重复数字的三位数2.1功能说明将三个数排列成无重复的三位数2.2设计说明1、 定义:#i nclude stdio.h#i nclude con io.h2、 子函数,输出无重复的三位数。函数名:g2()返回值:i,j,k参数:int i,j,k处理流程:Step1:输入三个数;Step2:以for循环排列三个数;Step3 :输出无重复的三位数。3已知一组数据按从小到大输出3.1功能说明将一组数据按从小到大输出。3.2设计说明1、 定义:#in clude#define N 102
7、、 子函数,将数据从大到小输出。函数名:g3()返回值:一组数据参数:int aN=6,3,42,23,71,98,67,56,38;int i,j,t;处理流程:Step1:定义一组数据 ;Step2:用for循环判断数据的大小;Step3:输出数据按从小到大顺序。4有两个字符串S1和S2,编写程序把它们连接起来4.1功能说明将两个字符串S1和S2,编写程序把它们连接4.2设计说明1、 定义:# in clude2、 子函数,连接两个字符串函数名:charint返回值:两个字符串参数:char S180,S240;i nt i=0,j=0;处理流程:Step1 :定义两个字符串Step2:向
8、子函数输入两个字符串;Step3:按顺序输出两个字符串。5主函数说明5.1功能说明主函数main()从键盘上输入1,则运行第一个程序:谁在说谎问题从键盘上输入2,则运行第二个程序:排列无重复数字的三位数从键盘上输入3,则运行第三个程序:5个学生,输入他们的学号、姓名、数学成绩和英 语成绩从键盘上输入4,则运行第四个程序:有两个字符串 S1和S2,编写程序把它们连接起来5.2程序运行截图56,协:退出If k 32,4.3Im 12 3 4C :U 詔 rsXD eskt a 氐富用字 cccDebu ag ongiang/u.-T.源,1,2、冋复聲 谎重组字 说无-个 霍已有字的三位数:6,
9、 2, 42, 22, 35, 71, 99, G7,和編写程序把它勺连按起来4.3.14.3.23Utop 言羽手讥cDebuggongxSan gyu. exen5.3源程序代码1,g1()#includestdio.h void g1()int a,b,c;for(a=0;a=1;a+)for(b=0;b=1;b+)for(c=0;c=1;c+)if(a&!b|!a&b)&(b& !c|!b&c|!b&c)&(c&a+b=0|!c&a+b!=0)printf(zhangsan told a %sn,a?truth:lie);prin tf(lisi told a %sn,b?truth:
10、lie);printf(wangwu told a %sn,c?truth:lie);getchar();2,g2()#i nclude stdio.h #in clude coni o.hg2()int i,j,k;prin tf(n);for(i=1;i5;i+) for(j=1;j5;j+)for (k=1;k5;k+)if (i!=k&i!=j &j!=k) prin tf(%d,%d,%dn,i,j,k);3,g3()#in clude#define N 10g3()int aN=6,3,42,23,71,98,67,56,38; int i,j,t;prin tf(The arra
11、y before sorted:); for(i=0;iN;i+)prin tf(%4d,ai);for(i=0;i9;i+) for(j=1;j10;j+)t=ai;ai=aj;aj=t; for(i=0;iN;i+) prin tf(%4d,ai);4,g4()#in cludeg4()char S180,S240;int i=0,j=0;prin tf(n In put stri ng1:);scan f(%s,S1);prin tf(n In put stri ng2:);scan f(%s,S2);while(S1i!=0)i+;while(S2j!=0) S1i+=S2j+;S1i
12、=0;prin tf(n The conn ected stri ng is:);prin tf(%s,S1);5, mai n()#in elude stdio.hexter n g1(); exter n g2(); exter n g3(); exter n g4(); main ()int i;printf(0:退出 n);printf(1:谁在说谎问题n”);printf(2:排列无重复数字的三位数 n);printf(3:已知一组数据:6,3,42, 23, 35, 71,98, 6 printf(4:有两个字符串S1和S2,编写程序把它们连接起来 while(1)scan f(%
13、d, &i);switeh(i)case 1:g1();break;case 2:g2();break;case 3:g3();break;case 4:g4();56,38 n);n);6通讯录管理6.1功能说明(1) 通讯录信息和数据格式:姓名、地址、学号、(2) 程序功能:添加记录输出记录查找记录(按姓名查找)删除记录保存到文件打开文件QQ号、号、电子邮箱号6.2设计说明1)数据结构依据给定的通讯录信息和数据格式,链表结点必须用结构实现。结构类型的层次结构:struct list/*定义数据结构*/char name20; /* 姓名 */char addr20; /* 地址 */cha
14、r num20;/* 学号 */char qq1O;/* qq 号*/char phnum20;/* 电话号码 */char email30;/* 电子邮箱号 */(2)模块化分主函数mai n()添加记录void Add()输出记录void pri nt()查找记录(按姓名查找)void Fi nd()删除记录void Delete()保存到文件void SaveFree()打开文件void Creat()主菜单函数void menu()(3)功能模块图通讯录管理系统添显查删保打退加示找除存开出联联联联到文系系 人系 人系 人系 人文 件件统通讯录管理功能模块图(4)程序处理流程系统的执行应
15、从系统菜单的选择开始,允许用户输入 0-4之间的数值来选择要进行的操作,输入其它字符都是无效的,系统会给出出错的提示信息。若用户输入 1则调用add()函数,进行添加联系人操作;若输入 2,则调用print()函数,显示联系人信息; 若输入3,则调用find()函数,查找联系人信息;若用户输入 4,则调用delete()函数,删除联系人信息;若输入 0,则调用savefree ()函数,将联系人信息保存到文件;输入 其他,将退出6.3程序运行截图大连交通大学 软件学院SOFTWARE INSTITUTEOF DALIAN JIAOTONG UNIVERSITYC语言课程设计报告EXPERIME
16、NT DESIGNING6.4源程序#in clude#in clude#in cludestruct listchar n ame20;char addr20;char num20;char qq1O;char phnu m20;char email30;struct list *n ext;typedef struct list LIST;LIST *head二NULL;void menu(); /*菜单*/ void Add(); /* 添加记录 */ void print(); /* 输出记录 */ void Find(); /*查找记录(按姓名)*/ void Delete(); /
17、* 删除记录 */ void SaveFree(); /*保存到文件 */ void Creat(); /* 打开文件 */void mai n()char c;Creat(); /*打开文件*/while(1)menu(); /*显示菜单*/sea nf(” c, &c);switch(c) case 1:Add();break; /*添加记录 */ case 2:print(); break;/*输出条目 */ case 3:Find(); break;/*查找条目 1.按姓名 */ case 4:Delete(); /*删除信息 */ print(); break;/*输出删除后的结果*
18、/ case O:SaveFree(); /保存并释放内存 */ exit(O); /* 退出 */ break;default: printf(选择错误r);break;/*菜单*/void menu()prin tf(n*n);printf(*t1.添加记录*n);printf(*t2.输出记录*n);printf(*t3.查询记录*n);printf(*t4.删除记录*n);prin tf(*t0. 保存并退出!*n);printf(H*n)printf(t请选择将要进行的操作:n);/*添加记录*/ void Add()LIST *p仁NULL,*p2二NULL;p1=(LIST *)
19、malloc(sizeof(LIST); /* 申请结点 */printf(输入姓名:n); /*添加信息*/sea nf(%s,p1- n ame);printf(输入地址:n);sea nf(%s,p1-addr);printf(输入学号:n);sea nf(%s,p1- nu m);printf(请输入 qq 号:n);sea nf(%s,p1-qq);printf(输入电话:n”);sea nf(%s,p1-ph nu m);printf(请输入 email:n);sea nf(%s,p1-email);p1-next二NULL; /* 保存到链表 */if(head=NULL)hea
20、d=(LIST *)malloc(sizeof(LIST); /* 申请空间 */head-n ext=p1;else for(p2=head;p2-next!二NULL;p2=p2-next); /* 找到结点尾 */p2-n ext=p1;printf(此记录已添加! ”);/*输出学生信息*/void pri nt()LIST *p=NULL;if(head=NULL)printf(这是一个新记录,请添加记录n);return;printf(*n); /*通 讯 录 系输出信息*/printf(姓名 tt 地址t 学号ttqqtt 电话ttemailn);for(p二head-n ext
21、;p!二NULL;p=p- n ext) prin tf(%stt%st%st%st%st%sn,p- name,p-addr,p- num,p-qq, p-ph nu m,p-email);/*查找信息1按姓名、2、按学号*/void Fi nd()LIST *p;char name120,num120;int i;printf(请输入查找方式1、按姓名;2、按学号);sca nf(%d,&i);if(i=1)printf(请输入要查找的姓名:n);sea nf(%s, name1);printf(通 讯 录 系printf(姓名 tt 地址t 学号tqqt 电话ttemailn);for(
22、p二head-n ext;p!=NULL;p=p-n ext)if(stremp(p-n ame, name1)=0)prin tf(%stt%st%st%st%st%sn,p- name,p-addr,p- num,p-qq, p-ph nu m,p-email);else if(i=2)printf(请输入要查找人的学号:n);sea nf(%s, num1);prin tf(* 通 讯 录 系 统*、V、printf(姓名 tt 地址t 学号tqqt 电话temailn);for(p二head-n ext;p!二NULL;p=p-n ext)if(stremp(p-nu m, nu m1
23、)=0)prin tf(%stt%st%st%st%st%sn,p- name,p-addr,p- num,p-qq, p-ph nu m,p-email);elseprintf(请选择1和2两哥数字n);/*删除信息*/void Delete()char name120; /*先查找 后删除*/LIST *p = head-n ext, *pr = head-n ext;printf(请输入要删除的姓名:n);scanf( %s,name1);if (head- next = NULL)printf(无此节点!n);return;while (strcmp(p-n ame ,n ame1)!
24、=0 )& p-next != NULL)pr =p;p =p-n ext;if (strcmp(name1, p-name)=0)/*输出删除信息 */ prin tf(%stt%st%st%st%st%sn,p- next- n ame,p- next-addr, p-n ext- nu m,p-n ext-qq,p-n ext-ph nu m,p-n ext-email);if (p = head-n ext)head-n ext = p-n ext;elsepr-n ext = p-n ext;free(p);printf(此记录已删除!);/*保存链表信息到文件并释放内存空间 */v
25、oid SaveFree()LIST *p=NULL;FILE *fp;char *Book二list.txt;if(head=NULL)printf(n 记录为空! n);return;elsep=head-n ext;if(fp二fope n(Book,wb+)=NULL)printf(n 打不开文件!n”);return;while(p!二NULL) /* 保存信息 */fwrite(p,sizeof(LIST),1,fp);p=p-n ext;printf(保存完毕!);fclose(fp);*释放链表空间*for(;head- next!二NULL;)p=head-n ext;hea
26、d-n ext二head-n ext- n ext;free(p);free(head);/*文件信息输出到链表*/void Creat()FILE *fp;LIST *p1二NULL,*p2二NULL,*temp二NULL;if(fp二fope n(address list.txt,rb+)=NULL)prin tf(n* 这是一个新的通讯录管理系统*、| return;head=(LIST *)malloc(sizeof(LIST);head- next二NULL;temp二p2二head;while(! feof(fp) /* 循环读取 */p1=(LIST *)malloc(sizeof(LIST);temp=p2;p2-n ext=p1;p2=p1;fread(p1,sizeof(LIST),1,fp);temp-n ext二NULL;fclose(fp); /* 关闭文件 */代码
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2