想法 C语言函数是重要程序设计模块,充分的C函数“武器库”能给程序设计带来很大便利。这篇博文会收集一些我自己写的一些函数,供大家参考。如有bug或者有更好的算法,欢迎各位大佬批评指正!
代码展示 计算一个int整型的位数 int cal_digits (int ) ;int cal_digits (int copyNum) { int NoD = 1 ; int flag = 1 ; while (flag == 1 ) { copyNum = copyNum / 10 ; if (copyNum == 0 ) flag = 0 ; else NoD++; } return NoD; }
判断一个int整型是否是素数 int judge_prim (int ) ;int judge_prim (int copyNum) { int flag = 1 ; for (int i = 2 ; i * i <= copyNum; i++) { if (copyNum % i == 0 ) { flag = 0 ; break ; } } return flag; }
求一个int整型的逆数 int reverse_int (int ) ;int reverse_int (int copyNum) { int reverseNum = 0 , digit; while (copyNum != 0 ) { digit = copyNum % 10 ; reverseNum = reverseNum * 10 + digit; copyNum /= 10 ; } return reverseNum; }
将一个不超过10位的二进制数转换为十进制数 #include <math.h> int cal_digits (int copyNum) ;int BIN_to_DEC (int bin) ;int BIN_to_DEC (int bin) { int NoD, digit, dec = 0 , mid; NoD = cal_digits(bin); for (int i = 1 ; i <= NoD; i++) { digit = bin % 2 ; mid = pow (2 , i - 1 ); dec = dec + digit * mid; bin /= 10 ; } return dec; } int cal_digits (int copyNum) { int NoD = 1 ; int flag = 1 ; while (flag == 1 ) { copyNum = copyNum / 10 ; if (copyNum == 0 ) flag = 0 ; else NoD++; } return NoD; }
用辗转相除法求两个数的最大公约数,然后求两个数的最大公倍数 int cal_GCD (int m, int n) ;int cal_LCM (int m, int n) ;int cal_GCD (int m, int n) { int gcd, remainder = 1 ; while (remainder) { remainder = m % n; m = n; n = remainder; } return m; } int cal_LCM (int m, int n) { int c_m, c_n, lcm, gcd, remainder = 1 ; c_m = m; c_n = n; while (remainder) { remainder = c_m % c_n; c_m = c_n; c_n = remainder; } gcd = c_m; lcm = m / gcd * n; return lcm; }