标签:can 变量赋值 min ++ 全局 最大 返回 辗转相除法 blog
方法一:穷举
#include<stdio.h> int Max, Min; int main() { int max(int a, int b);//可以声明为void,因为不需要返回值。 int min(int a, int b); int a, b; scanf("%d %d", &a, &b); printf("\n"); max(a,b);//这里直接调用函数即可,如果让全局变量赋值会变0 。 min(a,b);//也就是,如果有Max = max(a,b),会导致Max的值变为0 。 printf("Max is %d and Min is %d\n", Max, Min); return 0; } int max(int x, int y) { int i, c; for(i = x > y? y : x; i > 0; i--){ if(x % i == 0 && y % i == 0){ Max = i; break; } } return 0;//既然是全局变量,那么不需要返回值 这句可以0也可以不写 。 } int min(int x, int y)//我使用的并非辗转相除,而是穷举。 { int i, c; for(i = x > y? x : y; i > 0; i++){ if(i % x == 0 && i % y == 0){ Min = i; break; } } return 0; }
方法二:辗转相除
#include<stdio.h> int Hcf,Lcd; int main() { void hcf(int, int);//由于只是借用函数,捎带全局变量,故不需要返回值 void lcd(int, int); int u, v; scanf("%d,%d", &u, &v); hcf(u,v); lcd(u,v); printf("H.C.F = %d\n", Hcf);//切记,两个全局变量要分开嵌套函数,比如这里嵌套了printf printf("L.C.D = %d\n", Lcd);//否则,值会错误 return 0; } void hcf(int u, int v)//辗转相除法 { int t, r; if(v > u) { t = u; u = v; v = t; } while((r = u % v) != 0) { u = v; v = r; } Hcf = v; } void lcd(int u, int v) { Lcd = u * v / Hcf; }
来自学习辅导
标签:can 变量赋值 min ++ 全局 最大 返回 辗转相除法 blog
原文地址:http://www.cnblogs.com/VRednow/p/6256601.html