C语言课程设计 编写函数,求取两个整数m,n的最大公约数和最小公倍数.doc

上传人:枫** 文档编号:544368115 上传时间:2022-11-10 格式:DOC 页数:14 大小:496KB
返回 下载 相关 举报
C语言课程设计 编写函数,求取两个整数m,n的最大公约数和最小公倍数.doc_第1页
第1页 / 共14页
C语言课程设计 编写函数,求取两个整数m,n的最大公约数和最小公倍数.doc_第2页
第2页 / 共14页
C语言课程设计 编写函数,求取两个整数m,n的最大公约数和最小公倍数.doc_第3页
第3页 / 共14页
C语言课程设计 编写函数,求取两个整数m,n的最大公约数和最小公倍数.doc_第4页
第4页 / 共14页
C语言课程设计 编写函数,求取两个整数m,n的最大公约数和最小公倍数.doc_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《C语言课程设计 编写函数,求取两个整数m,n的最大公约数和最小公倍数.doc》由会员分享,可在线阅读,更多相关《C语言课程设计 编写函数,求取两个整数m,n的最大公约数和最小公倍数.doc(14页珍藏版)》请在金锄头文库上搜索。

1、C程序设计课程设计报告 C语言课程设计专 业:电气工程及其自动化班 级: 电气11 姓 名: 学 号: 指导教师: 评语:平时(40)修改(30)报告(30)总成绩兰州交通大学自动化与电气工程学院2012 年 7月 6日1 基本题目1.1题目编写函数,求取两个整数m,n的最大公约数和最小公倍数。1.2 题目分析图1 程序流程图1.3 程序 # includeint max(int a,int b);int main()printf(请输入两个整数);int m,n,p;scanf(%d%d,&m,&n);p=m*n;printf(最大公约数为:%d最小公倍数为:%dn,max(m,n),p/m

2、ax(m,n);return 0;int max(int a,int b)int c;while (a!=b)if(ab)c=a;a=b;b=c;a=a-b;return b;1.4 程序的运行结果图2 基本题目运行结果2 改错题目2.1 改正后程序#include #include main() int i=0,j; char ch; while(ch=getch()!=r) i+; printf(%c,ch); printf(you type %d charactersn,i);2.2 程序运行结果图3 正确程序运行结果3 综合题目3.1 题目综合题目为:班级通讯录。3.2 数据结构对上述

3、题目进行分析,定义结构体数据结构如下:struct Personchar name10; /姓名char num15; /号码char age8;/年龄char adds20;/住址struct Person *next;3.3 程序的主要功能通过该系统实现对通讯录信息进行录入、显示、修改、删除、排序、保存等操作的管理。本系统采用链表的方式动态储存每个数据,每个数据结构包括姓名,电话号码,年龄,地址,还有指向下一结构体的地址。本系统显示这样的菜单:1.新建联系人;2. 打开文件;3. 保存联系人;4. 显示联系人;5. 查找,删除联系人;0. 退出程序;图3 主函数流程图3.4 各函数的功能(

4、1) inputs_first()该函数用来创建第一个结构体,创建第一个内存单元,并写入其中的数据;(2) inputs_next()该函数用来新建非第一个结构体,创建一个内存单元,写入数据到其中并使得各个结构体之间能够单项链接;(3) prin()此函数用来打印内存中链表内各内存单元内的数据到屏幕上,起到显示数据的作用;(4 )creat()此函数用来保存链表内数据到硬盘上,保存的标题提供两种方式,一个是保存到默认文件,另一个是保存到自己命名的文件上。所保存的文件可以用记事本等软件打开,并可以显示所有联系人信息;(5 )open()此函数用来打开文件。既可以把文件的信息显示到屏幕上,而且可以

5、把文件的联系人信息输入到内存中形成链表,可供编辑。此函数也提供两种打开文件的方式,一是打开默认文件,另一个是打开自己输入的文件;(6) look_up()此函数用来查找和删除文件。此函数提供三种查找方式,第一是名字查找,第二是电话号码查找,第三是地址查找。查找到联系人并显示信息之后,可选择是否删除联系人。3.5 源程序#include#include# define LEN sizeof(struct Person)# includestruct Personchar name10; /姓名char num15; /号码char age8;/年龄char adds20;/住址struct Pe

6、rson *next;int n=0;struct Person *head;struct Person *p1,*p2;struct Person *inputs_first(void)/创建首个联系人 char ch;p1=p2=(struct Person *) malloc(LEN);head=p1;printf(请输入姓名:n);scanf(%s,p1-name);printf(请输入号码:n);scanf(%s,p1-num);printf(请输入年龄:);scanf(%s,p1-age);printf(请输入地址:);scanf(%s,p1-adds);ch=getchar();

7、p1-next=NULL;n=1;return (head);system(pause);struct Person *inputs_next(void)/创建新的联系人char ch;p1=(struct Person *) malloc(LEN); printf(请输入姓名:n);scanf(%s,p1-name);printf(请输入号码:n);scanf(%s,p1-num);printf(请输入年龄:);scanf(%s,p1-age);printf(请输入地址:);scanf(%s,p1-adds);ch=getchar();p2-next=p1;p1-next=NULL;p2=p

8、1;n+;return (head);void print(struct Person *head)/输出链表函数char ch;ch=getchar();struct Person *p;p=head;if(head!=NULL)do printf(%s %s %s %sn,p-name,p-num,p-age,p-adds);p=p-next; while (p!=NULL); printf(共有%d项记录,n);system(pause); void creat()/创建新文件(保存) char d,ch,e; FILE *fp; e=getchar();printf(是否保存到默认文件

9、?(Y/N)n); scanf(%c,&d);ch=getchar();if(d=Y) if(fp=fopen(default.txt,w)=NULL) printf(无法打开此文件n); exit(0); else char filename10; printf(请输入所用的文件名:); scanf(%s,filename); if(fp=fopen(filename,w)=NULL) printf(无法打开此文件n); exit(0); struct Person *p;p=head;while(p)fprintf(fp,%s %s %s %sn,p-name,p-num,p-age,p-

10、adds);p=p-next;fclose(fp);system(pause);int open()/打开文件char ch,a10,d;int i=0;FILE *fp;printf(是否打开默认联系人列表(Y/N);d=getchar();scanf(%c,&ch);getchar();if(ch=Y) if(fp=fopen(default.txt,r)=NULL)printf(无法打开文件n);exit(0);else printf(请输入要打开的文件名:); scanf(%s,a);if(fp=fopen(a,r)=NULL)printf(无法打开文件n); exit(0);whil

11、e (!feof (fp) p1=(struct Person *) malloc(LEN); if (n=0) head=p1;else p2-next=p1;fscanf(fp,%s %s %s %s,p1-name,p1-num,p1-age,p1-adds);printf(%s %s %s %sn,p1-name,p1-num,p1-age,p1-adds);p2=p1;p1-next=NULL;n+;fclose(fp);system(pause);return 0;void look_up()/查找联系人char ch;printf(1.用姓名查找。);printf(2.用电话号码

12、查找。);printf(3.用地址查找查找。n);int i,j=1;struct Person *p,*q;p=head;scanf(%d,&i);ch=getchar();switch(i)case 1:char name10;printf(请输入姓名);scanf(%s,name);do if(strcmp(name,p-name)=0) break; q=p; p=p-next; j+; while (p-next!=NULL);break;case 2:char num15;printf(请输入号码);scanf(%s,num);do if(strcmp(num,p-num)=0) break; q=p; p=p-next; j+; while (p-next!=NULL);break;

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号