C语言 百炼成钢9
2016-01-22 16:25
543 查看
//题目25:求1+2!+3!+...+20!的和 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<math.h> //分析:这题用函数很好解决,表面看起来很复杂,但是我们写一个函数来求n!(n的阶乘) //然后写一个for循环不断调用函数就OK了 float run9(int n){ float res = 1.0; for (int i = 1; i <= n; i++) { res = res*i; } return res; } void main(){ //方法2 float n, s = 0, t = 1; for (n = 1; n <= 20; n++) { //n的阶乘 就是(n-1)*n t *= n;//1*1+1*2+2*3+6(2*3)*4 s += t; } printf("1+2!+3!...+20!=%f\n", s); //方法1 /*float sun = 0.0; for (int i = 1; i <= 20; i++) { sun = sun + run9(i); } printf("求1+2!+3!+...+20!的和%f", sun);*/ system("pause"); }
//题目26:利用递归方法求5!。 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<math.h> //分析:如题递归,n!=(n-1)!*n float run8(int n){ if (n==1) { return 1; } else{ return run8(n - 1)*n; } } void main(){ //方法1 printf("5!===%f", run8(5)); system("pause"); }
//题目27:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<math.h> //分析:把字符放入数组中,逆序,就是调用本身放在输出前面就OK了 char str[6] = "abcde"; void run1(int n){ if (n==0) { printf("%c",str ); } else{ printf("%c", str ); run1(n-1); } } void main(){ char *p = str; //char *p = "sdfasd";//错误 "sdfasd"字符串指针是个常量,不可以修改,能修改的只有字符串数组 scanf("%s", p);//正确 //scanf("%s", str);//正确 run1(4); system("pause"); }
相关文章推荐
- C++智能指针简单剖析
- Microsoft Visual C++ 9.0 is required
- 最大公约数与最小公倍数(c语言)
- [土狗之路]coursera上C++基础第10周作业(下)
- 关于 explicit 的一些学习
- C++指针理解
- C++指针理解
- C++ Scope Exit
- x265-1.7版本-common/cudata.cpp注释
- c++11学习笔记3——通过更通用的方法实现新特性
- c++多重继承
- 详解C++编程中的静态成员与可变数据成员
- 监控进程(二进制程序)运行状态的C语言实现与脚本实现
- C++中两个类互相引用的解决
- C++Primer第五版 12.2.1节练习
- 【C语言】在两个数成对出现的数组中找到一个单独的数。
- size_t为何这么重要?
- 深入解析C++编程中基类与基类的继承的相关知识
- 用VLFeat库进行k-means聚类(C++ 实现)
- VC++中的CDC类