今天,做了一下老师布置的习题。先放上面,明天,老师讲了,再优化。。
1.使用递归的方式计算1 + 2 + 3 + 4+... +n 之和。
#include <stdio.h> 2 3 long long sum_number(int); 4 5 int main(int argc, char *argv[]) 6 { 7 int n; 8 long long sum = 0; 9 10 printf("Enter you want sum's best numbers : "); 11 scanf("%d", &n); 12 13 if(n < 0) { 14 printf("Your Enter is Error!.\n"); 15 return 0; 16 } 17 18 sum = sum_number(n); 19 20 printf("The 1 + 2 + ...+ %d is : %lld\n", n, sum); 21 22 return 0; 23 } 24 25 long long sum_number(int n) 26 { 27 if(0 == n) { 28 return 0; 29 } 30 else { 31 return n + sum_number(n - 1); 32 } 33 } ~
2.使用递归的方式计算闰年
#include <stdio.h> 2 3 int leap_year(int); 4 5 int main(int argc, char *argv[]) 6 { 7 int year; 8 9 printf("Enter year : "); 10 scanf("%d", &year); 11 12 if(leap_year(year)) { 13 printf("The %d is leap year .\n", year); 14 } 15 else { 16 printf("The %d is not leap year. \n", year); 17 } 18 19 return 0; 20 } 21 22 int leap_year(int year) 23 { 24 if((year % 4 == 0) && (year % 100 != 0) || (year % 400 == 0)) { 25 return 1; 26 } 27 else { 28 return 0; 29 } 30 } ~
3.对一个小数进行四舍五入
1 #include <stdio.h> 2 #include <math.h> 3 4 int sishe_wuru(double); 5 6 int main(int argc, char *argv[]) 7 { 8 double num; 9 int i = 0; 10 11 printf("Enter a doule number : "); 12 scanf("%lf", &num); 13 14 i = sishe_wuru(num); 15 16 printf("The number %.4lf sishe_wuru is %d.\n", num, i); 17 18 return 0; 19 } 20 21 int sishe_wuru(double num) 22 { 23 int i = 0,itemp = 0; 24 itemp = (int)num; 25 if(num > 0) { 26 i = (num - itemp) >= 0.5 ? ceil(num - itemp) : floor(num - itemp); 27 return i + itemp; 28 } 29 else { 30 i = (num - itemp) > -0.5 ? ceil(num - itemp) : floor(num - itemp); 31 return i + itemp; 32 } 33 } 34 ~
4.计算fibonacci数列,例 : fib(0) = 1, fib(1) = 1, fib(n) = fib(n - 1) + fib(n - 2);
1 #include <stdio.h> 2 3 long fib(int); 4 5 int main(int argc, char *argv[]) 6 { 7 int n; 8 long num = 0; 9 10 printf("Enter you want know's fibonacci's the first few : "); 11 scanf("%d", &n); 12 13 if(n < 0) { 14 printf("Your enter is ERROR !!!.\n"); 15 return 0; 16 } 17 18 num = fib(n); 19 20 printf("The fib %d is : %ld.\n", n, num); 21 22 return 0; 23 } 24 25 long fib(int n) 26 { 27 if(0 == n) { 28 return 1; 29 } 30 if(1 == n) { 31 return 1; 32 } 33 if(n > 1) { 34 return fib(n -1) + fib(n -2); 35 } 36 }
5.计算两个数的最大公约数。
1 #include <stdio.h> 2 3 int zuida_gongyue(int, int); 4 5 int main(int argc, char *argv[]) 6 { 7 int num1, num2, itemp; 8 int yueshu = 0; 9 10 printf("Enter two number : "); 11 scanf("%d %d", &num1, &num2); 12 13 if(num1 < num2) { 14 itemp = num1; 15 num1 = num2; 16 num2 = itemp; 17 } 18 yueshu = zuida_gongyue(num1, num2); 19 20 printf("The number %d and %d zuida_gongyue is %d.\n", num1, num2, yueshu); 21 22 return 0; 23 } 24 25 int zuida_gongyue(int num1, int num2) 26 { 27 int n = 0; 28 n = num1 % num2; 29 num1 = num2; 30 num2 = n; 31 if(num2 == 0) { 32 return num1; 33 } 34 else { 35 return zuida_gongyue(num1, num2); 36 } 37 }
先这几道了,其它的题,过几天会粘上的。如果有错的,欢迎指正。。谢谢!!!!
加油,宝贝!!!!