不禁感慨一下,之前觉得挺难的这题今天做起来感觉很是简单和放松......
【问题描述】输入两个正整数a和b,求出其最大公约数和最小公倍数并输出。
【输入文件】从标准输入读取一行,是两个整数a和b,以空格分隔。
【输出文件】向标准输出打印以空格分隔的两个整数,分别是a、b的最大公约数和最小公倍数。
【输入样例】12 18
【输出样例】6 36
【样例说明】12和18的最大公约数是6,最小公倍数是36.
#include <iostream>
using namespace std;
int gcd(int a,int b)
{
int r = a % b;
if (r == 0)
{
return b;
}
else
{
return gcd(b, r);
}
}
int main()
{
int a, b;
cin >> a >> b;
int t = a * b / gcd(a, b);
cout << gcd(a, b) << " " << t << endl;
return 0;
}
经过被同学们询问,他们难以理解的点主要有两个:
1.gcd函数那里为什么不判断a和b的大小。但是如果我们假设a<b,那么第一次出来的r=a,函数会自己调整位置,所以不用提前判断
2.最小公倍数其实就是两数乘积除以最大公约数
这里自己再补充一点,有关函数的return,目前所接触到的:return是向操作系统返回一个零值.若程序不能正常执行,则自动向操作系统返回一个非零值
下面是一篇写得很好的文章:
函数返回值的定义
定义函数的返回值可以使用关键字
return
,语法如下:return <expression>
在函数中,
<expression>
可以为算术表达式、变量、常量或者函数执行的返回值。注意:函数的返回值的类型必须与函数声明的返回值类型相同。int fun1(void) //函数声明 { printf("hello hu~"); return 12; //返回值 12,类型为 int } int main(void) { int a = fun1(); //将函数 fun1() 的返回值 12 赋值给变量 a printf("%d\n", a); //输出变量 a 的值,为 12 return 0; }
如何使用函数的返回值
在函数调用中,返回值可以直接赋值给变量,并可以在程序中使用。如:
int a = fun1();
其中,fun1() 的返回值将被赋值给变量 a。应注意返回值的类型必须与变量 a 的类型一致。
手动退出和缺省返回值
在函数没有返回值时,可以为函数定义一个 void 返回类型。函数不返回任何值,可以使用返回语句 return 退出函数的执行。void fun2(void) { printf("hello hu~"); return; } int main(void) { fun2(); return 0; }
如果函数没有返回语句,函数会自动返回一个默认的返回值。通常情况下,该返回值是一个未初始化的值。函数中的 return 语句
return 语句用于在函数回到调用程序之前退出函数,并返回一个值。return 语句使用的语法如下:return <expression> ;
该语句的返回值可以是数值、变量、表达式或其他实现了函数返回值类型的语句。int fun3(void) { int x = 100; return x; } int main(void) { int n = fun3(); printf("函数返回值:%d\n", n); return 0; }
不应该返回局部变量的地址
函数的本地变量仅与函数本身的生命周期关联,如果从函数返回指向本地变量的指针,则在调用程序试图使用指针时,运行时错误可能会发生。指向局部变量的指针在函数返回时被释放,是不安全的。应该避免返回指向本地变量或参数的指针。int* fun4(void) { int x = 100; return &x; //错误,返回局部变量的地址 } int main(void) { int* p = fun4(); printf("%d", *p); //错误,指向局部变量的指针已经被释放 return 0; }
————————————————
版权声明:本文为CSDN博主「江南侠客(上海)」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_47712251/article/details/131236954
讲的非常详细了可以说
1.return 0
这个其实就是代表函数正常退出。
2.return n;
这个应该就算返回值了吧,就比如
if (r == 0)
{
return b;
}
else
{
return gcd(b, r);
}
这里的return b就是返回一个变量b。
目前阶段用到的差不多就这些,以后再涉及指针再说吧