C语言程序设计课程设计--编写函数,求取两个整数m,n的最大公约数和最小公倍数
C语言程序设计课程设计
评语:
考勤(10)纪律(10)过程(40)设计报告(30)答辩(10)总成绩(100)
专 业: 电气工程及其自动化
班 级: 电气1203
姓 名: 熊董
学 号: 201209837
指导教师: 王思华
兰州交通大学自动化与电气工程学院
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
Yn>m
Nt=m;m=n;n=t当(r=m%n)!=0m=n,n=r 向主函数返回n的值输入m,n和h向主函数返回m*n/h的值 图二max函数 图三min函数
1.3源程序
#include
int main()
{ int max(int,int);
int min(int,int,int);
int m,n,h,l;
scanf("%d,%d",&m,&n);
h=max(m,n);
printf("最大公约数是%d\n",h);
l=min(m,n,h);
printf("最小公倍数是%d\n",l);
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);
}
1.4程序运行结果如图四:
图四基础题运行截图
2、改错题
2.1题目
#include
#include
void fun(int a, b)
{
int t;
t = b; b = a ; a = t;
}
main( )
{
int a, b;
clrscr( );
printf("Enter a,b :"); scanf("%d%d", &a, &b);
fun(&a, &b);
printf("a=%d b=%d\n", a, b);
}
2.2题目分析
该源程序的目的是交换两个数的值,有主函数可以看出该函数是应用指针交换两个数的值。所以调用函数中的a,b都要改成*a,*b, void fun(int a, b)改成void fun(int *a,int *b)。clrscr( )只能在Turbo-C中可用所以改用system("cls")。
输入*a,*b t=*b;*b=*a;*a=tviod fun函数:N-S图如图五 main函数:N-S图如图六
清屏输入a,b将a,b赋值到&a,&b中。调用viod fun函数交换两个数的值输出a,b的值
图五viod fun函数
图六main函数2.3正确的源程序
#include
#include
void fun(int *a, int *b)
{
int t;
t= *b;
*b = *a ;
*a = t;
}
main( )
{
int a, b;
system("cls");
printf("Enter a,b :");
scanf("%d%d", &a, &b);
fun(&a,&b