C语言程序设计课程设计--编写函数,求取两个整数m,n的最大公约数和最小公倍数
巡山小妖精
801次浏览
2021年02月01日 12:49
最佳经验
本文由作者推荐
qq动漫头像女生-摩羯女喜欢一个人的表现
C
语言程序设计课程设计
--
编写
函数,
求取两 个整数
m,n
的最大
公约数和最小公倍数
C
语言程序设计课程设计
评语:
考勤
纪
专
业:
电气工程及其自动化
班
级:
电气
1203
姓
名:
熊董
学
号:
201209837
指导教师:
王思华
律
过程
设计报告
答辩
总成绩
(
10
)
(
10
)
(
40
)
(
30
)
(
10
)
(
100
)
C
语言程序设计课程设计
兰州交通大学自动化与电气工程学院
2013
年
07
月
20
日
1
、基础题
1.1
题目
编写函数,求取两个整数
m,n
的最大公约数和最小公倍数。
1.2
题目分析
求两个整数的最大公约数和最小公倍数可以用辗转相除法, 用两个函数
max
和
min
分别求出最大公约数和最小公倍数。在主函数中输 入两个整数
m
和
n,
并传递
给函数
max,
求出最 大公约数返回主函数并赋给整型变量
h
,
然后
h
和两个整数
m
,
n
一起作为实参传递给函数
min,
从而求出最小公倍数,返回 主函数赋给
l
。输出最大
公约数和最小公倍数。
主函数:
N-S
图如图一
输入两个整数
m
和
n
调用
max
函数求出最大公约数
h
调用
min
函数求出最小公倍数
l
输出两个整数的最大公约数和最小公倍数
图一主函数
max
函数:
N-S
图
如图二
min
函数:
N-S
图如图三
输入
m
和
n
n>m
N
Y
t=m;m=n;n=t
当
(r=m%n)!=0
m=n,n=r
向主函数返回
n
的值
图二
max
函数
图三
min
函数
输入
m,n
和
h
向主函数返回
m*n/h
的值
1
C
语言程序设计课程设计
1.3
源程序
#include
int main()
{
int max(int,int);
int min(int,int,int);
int m,n,h,l;
scanf(
h=max(m,n);
printf(
最大公约数是
%dn
l=min(m,n,h);
printf(
最小公倍数是
%dn
return 0;
}
int max(int m,int n)
{
int t,r;
if(n>m);
{t=m;m=n;n=t;}
while((r=m%n)!=0)
{m=n;
n=r;}
return(n);
}
int min(int m,int n,int h)
{
return(m*n/h);
}
2
C
语言程序设计课程设计
1.4
程序运行结果如图四:
图四基础题运行截图
3
C
语言程序设计课程设计
2
、改错题
2.1
题目
#include
#include
void fun(int a, b)
{
int t;
t = b;
b = a
a = t;
}
main( )
{
int a, b;
clrscr( );
printf(
fun(&a, &b);
printf(
b=%dn
}
2.2
题目分析
该源程序的目的是交换两个数的值,有主函数可以看出该函 数是应用指针交
换两个数的值。所以调用函数中的
a,b
都要改成
*a,*b ,
void
fun(int
a,
b)
改成
void
fun(int *a,int *b)
。
clrscr( )
只能在
Turbo-C
中可用所以改用
system(
。
viod fun
函数:
N-S
图如图五
main
函数:
N-S
图如图六
输入
*a,*b
t=*b;*b=*a;*a=t
清屏
输入
a,b
将
a,b
赋值到
&a,&b
中。
调用
viod
fun
函数交换两个数的
4
图五
viod fun
函数
值
输出
a,b
的值
C
语言程序设计课程设计
图六
main
函数
5
C
语言程序设计课程设计
2.3
正确的源程序
#include
#include
void fun(int *a, int *b)
{
int t;
t= *b;
*b = *a
*a = t;
}
main( )
{
int a, b;
system(
printf(
scanf(
fun(&a,&b);
printf(
b=%dn
}
2.4
程序运行结果如图七:
图七改错题运行结果截图
6
C
语言程序设计课程设计
3
、综合题
3.1
题目
设计课题四:猜数字游戏
一、问题描述:
该游戏可以 由程序随机产生或由用户输入四个
0
到
9
之间的数字,且不重复。
玩 游戏者通过游戏提示输入八次来匹配上面所输入的数字。
A
表示位置正确且数字
正确,
B
表示数字正确而位置不正确。
二、功能要求:
1.
本游戏显示这样的菜单:
(
1
)
随机产生数据
(
2
)
用户输入数据
(
3
)
退出游戏
2.
游戏成功与否都能返回主菜单
三、算法提示:
1.
数据结构:数组
2.
用简单的程序设计方法
四、测试数据:
测试数据:
3792
第一次输入:
1234
0A2B
第二次输入:
5678
0A1B
第三次输入:
0867
0A1B
第四次输入:
9786
1A1B
第五次输入:
1794
2A0B
第六次输入:
2793
2A2B
第七次输入:
3792
7
C
语言程序设计课程设计
4A0B
游戏成功!!!
五、其它:
对该系统有兴趣的同学可以在实现系统基本功能后,完善系统的其它功能 ,
如:破记录功能,若你所匹配的次数小于纪录保持者,则为破纪录。
3.2
题目分析
本题要求做一个猜字游戏,其功能包括菜单、用户模式测试 、随机产生数据
进行游戏。所以可以得知该游戏包括主函数、随机数产生函数、输入数字函数、
游戏函数、测试数据输入函数。首先通过主函数输出菜单并选择所要进行的模式,
如果选择随机产生数据 则调用随机数产生函数产生随机数,然后将产生的数据代
入游戏函数进行游戏,游戏函数中进行游戏输入 数据时调用输入数字函数输入数
据;如果选择用户输入数据则调用测试数据输入函数输入数据,之后将输 入的数
据代入游戏函数中进行游戏,游戏函数中进行游戏输入数据时调用输入数字函数
输入数据 。
(
1
)系统的总体框图如图八
开
功能菜生
随
数
机
据
产
c_rand()
入
用
数
户
据
输
出
退
图八系统的总体框图
c_pr
8
ex
C
语言程序设计课程设计
(
2
)函数间的调用关系如图九
输入数据
主函数
main
随机模式
c_rand()
用户模式
游
戏
函
数
输
入
数
图九函数间的调用关系
9