![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C
小代码大用处
在程序的世界里遨游
展开
-
递归算法debug
/***************************功能:高效 debug 递归算法,直接在递归函数内部打印关键值,配合缩进,直观地观察递归函数执行情况*使用方法:在递归函数的开头,调用 printIndent(count++) 并打印关键变量;然后在所有 return 语句之前调用 printIndent(--count) 并打印返回值。*************************/#include<stdio.h>//全局变量,记录递归函数的递归层数int ..原创 2021-02-09 10:32:12 · 300 阅读 · 1 评论 -
C语言小技巧
#ifdef __cplusplusextern "C" {#endif//一段代码#ifdef __cplusplus}#endif__cplusplus是cpp中的自定义宏,那么定义了这个宏的话表示这是一段cpp的代码,也就是说,上面的代码的含义是:如果这是一段cpp的代码,那么加入extern "C"{和}处理其中的代码。参考链接:https://blog.csdn.net/u012234115/article/details/43272441...原创 2020-05-11 10:16:25 · 465 阅读 · 0 评论 -
二维数组作为函数参数问题
二维数组实际上是一种特殊的一维数组,它的每个元素也是一个一维数组。数组元素是按照行顺序存储的。将二维数组作为参数传递给函数,那么在函数的参数声明中必须指明数组的列数,因为从实参传递来的是数组的起始地址,在内存中按数组排列规则存放(按行存放),而并不区分行和列,如果在形参中不说明列数,则系统无法决定应为多少行多少列。通常有两种方式声明函数原型:1、int sum(int (*ar2)[4],int ...原创 2018-06-13 13:52:08 · 1629 阅读 · 0 评论 -
组合问题
#include<stdio.h>long Comb(int m, int k);long Fact(int n);int main() { int m, k; do { printf("Input m,k (m>=k>0):"); scanf("%d,%d", &m, &k); } while (m < k || m &l...原创 2018-07-05 13:07:35 · 291 阅读 · 0 评论 -
汉诺塔问题
#include<stdio.h>void Hanoi(int n, char a, char b, char c);void Move(int n, char a, char b);int main() { int n; printf("Input the number of disks:"); scanf("%d", &n); printf("setp...原创 2018-07-05 13:26:25 · 163 阅读 · 0 评论 -
尾递归
unsigned long Fact(unsigned int n, unsigned int a) { if (n == 0 || n == 1) return a; else return Fact(n - 1, n*a);}在静态存储区分配内存的变量:生存期是整个程序,全程占据内存在动态存储区中分配内存的变量:生存期是定义它的语句块声明变量的存储类型: ...原创 2018-07-05 16:40:41 · 111 阅读 · 0 评论 -
迭代问题
原创 2018-07-05 17:46:36 · 663 阅读 · 0 评论 -
数组
原创 2018-07-05 18:46:38 · 106 阅读 · 0 评论 -
二维数组与指针
#include<stdio.h>int main() { int a[2][5] = { { 1,2,3,4,5 },{ 6,7,8,9,10 } }; int(*p)[5]; // 定义一个数组指针 p = a; printf(" a[1][2] = %d.\n", a[1][2]); // a[1][2] = 8 printf("(*(p+1)+...翻译 2018-12-05 22:01:20 · 124 阅读 · 0 评论