嵌入式培训学习历程第十天(休息日)

  今天,做了一下老师布置的习题。先放上面,明天,老师讲了,再优化。。

  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!.
");
 15         return 0;
 16     }
 17 
 18     sum = sum_number(n);
 19 
 20     printf("The 1 + 2 + ...+ %d is :  %lld
", 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 .
", year);
 14     }
 15     else {
 16         printf("The %d is not leap year. 
", 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.
", 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 !!!.
");
 15         return 0;
 16     }
 17 
 18     num = fib(n);
 19 
 20     printf("The fib %d is : %ld.
", 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.
", 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 }

   先这几道了,其它的题,过几天会粘上的。如果有错的,欢迎指正。。谢谢!!!!

          

          

      

          加油,宝贝!!!!

原文地址:https://www.cnblogs.com/cxw825873709/p/3221971.html