C语言课程设计 编写函数,求取两个整数m,n的最大公约数和最小公倍数
绝世美人儿
510次浏览
2021年02月01日 12:48
最佳经验
本文由作者推荐
赤朱丹彤-正确的握笔方法
C
语言课程设计
专
业:电气工程及其自动化
班
级:
电气
11
姓
名:
学
号:
指导教师:
评语:
平时
(40)
修改
(30)
报告
(30)
总成绩
兰州交通大学自动化与电气工程学院
2012
年
7
月
6
日
C
程序设计课程设计报告
1
基本题目
1.1
题目
编写函数,求取两个整数
m,n
的最大公约数和最小公倍数。
1.2
题目分析
开始
输入两个
数
m,n
p=m*n
m
是否不等于
n
否
是
m=m-n
m< n?
输出最大
公约数
n
c=m
m=n
n=c
输出最 小
公倍数
p/n
结束
图
1
程序流程图
1.3
程序
# include
int max(int a,int b);
-
1 -
int main()
{
printf(
请输入两个整数
int m,n,p;
scanf(
p=m*n;
printf(
最大公约数为:
%d
最小公倍数为:
%dn
return 0;
}
int max(int a,int b)
{
int c;
while (a!=b)
{if(a
{
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++;
-
2 -
C
程序设计课程设计报告
printf(
}
printf(
}
2.2
程序运行结果
图
3
正确程序运行结果
3
综合题目
3.1
题目
综合题目为:
《班级通讯录》
。
3.2
数据结构
对上述题目进行分析,定义结构体数据结构如下:
struct Person
{
char name[10];
//
姓名
char num[15];
//
号码
char age[8];
//
年龄
char adds[20];
//
住址
struct Person *next;
};
3.3
程序的主要功能
通过该系统实现对通讯录信息进行录入、显示、修改、删除、排序、 保存等操作
的管理。
本系统采用链表的方式动态储存每个数据,每个数据结构包括姓 名,电话号码,
年龄,地址,还有指向下一结构体的地址。
本系统显示这样的菜单:
1.
新建联系人;
2.
打开文件
;
3.
保存联系人
;
4.
显示联系人
;
5.
查找,删除联系人
;
0.
退出程序
;
-
3 -
开始
打印主界
面
a==0?
是
否
调用
inputs_next
函
数
否
结束
a==1?
是
结构体数
n==0?
是< br>调用
inputs_first
函数
break
否
a==2?
是
调用
open()
函数
break
否
a==3?
是
调用
creat()
函
数
break
否
a==4?
是
调用
print(head)
函数
break
否
a==5?
是
调用
look_up()
函数
break< br>否
输出“您
的输入有
误”
图
3
主函数流程图
3.4
各函数的功能
(1) inputs_first()
-
4 -
C
程序设计课程设计报告
该函数用来创建第一个结构体,创建第一个内存单元,并写入其中的数据;
(2) inputs_next()
该函数用来新建非第一个结构体,
创建一个内存单元,
写入数据到其中并使得各
个结构体之间能够单项链接;
(3) prin() 此函数用来打印内存中链表内各内存单元内的数据到屏幕上,
起到显示数据的作
用;
(4 )creat()
此函数用来保存链表内数据到硬盘上,
保存的标题提供 两种方式,
一个是保存到
默认文件,
另一个是保存到自己命名的文件上。
所保 存的文件可以用记事本等软件打
开,并可以显示所有联系人信息;
(5 )open()
此函数用来打开文件。
既可以把文件的信息显示到屏幕上,
而且可以 把文件的联
系人信息输入到内存中形成链表,
可供编辑。
此函数也提供两种打开文件的 方式,
一
是打开默认文件,另一个是打开自己输入的文件;
(6) look_up()
此函数用来查找和删除文件。
此函数提供三种查找方式,
第一是 名字查找,
第二
是电话号码查找,
第三是地址查找。
查找到联系人并显示信息 之后,
可选择是否删除
联系人。
3.5
源程序
#include
#include
# define LEN sizeof(struct Person)
# include
struct Person
{
char name[10];
//
姓名
char num[15];
//
号码
char age[8];
//
年龄
char adds[20];
//
住址
struct Person *next;
};
int n=0;
struct Person *head;
struct Person *p1,*p2;
struct Person *inputs_first(void)//
创建首个联系人
{
char ch;
p1=p2=(struct Person *) malloc(LEN);
-
5 -
head=p1;
printf(
请输入姓名
:n
scanf(
printf(
请输入号码
:n
scanf(
printf(
请输入年龄
:
scanf(
printf(
请输入地址:
scanf(
ch=getchar();
p1->next=NULL;
n=1;
return (head);
system(
}
struct Person *inputs_next(void)//
创建新的联系人
{
char ch;
p1=(struct Person *) malloc(LEN);
printf(
请输入姓名
:n
scanf(
printf(
请输入号码
:n
scanf(
printf(
请输入年龄
:
scanf(
printf(
请输入地址:
scanf(
ch=getchar();
p2->next=p1;
p1->next=NULL;
p2=p1;
n++;
return (head);
}
void print(struct Person *head)//
输出链表函数
{
char ch;ch=getchar();
struct Person *p;
p=head;
if(head!=NULL)
do
{
printf(
p=p->next;
-
6 -