1. fflush(stdout);
这条语句可以把输出缓冲区里的内容立刻显示在屏幕上;
2. return; 结束当前函数
exit(); 结束整个程序,需要在程序开头处加入 #include <stdlib.h>
4. 使用数组作形参和实参是同一个数组,函数中修改了数组的内容,调用函数可以看到数组的变化。
若不用数组形参,而使用其他形参,很可能无法计算,因为函数结束,形参也就消失了。
5. 数组形参无法用 sizeof 计算出数组行参大小;
只有在主函数里面算出数组大小,然后传给形参数组:
void xingcan(int value[], int num){}
6. 输入一个整数,如果不是,提示重新输入:(scanf类型不匹配,返回 0)
while(!(scanf("%d", &data)))
{
scanf("%*[^\n]"); // * 忽略读到的内容,[^\n]任何非\n的字符,将\n之前所有字符读走
scanf("%*c"); // 从缓冲区读取一个字符,忽略掉。
printf("请重新输入整数:");
}
上面两条语句起到清空缓冲区的作用。
7. 递推思路:用循环解决问题;
递归思路:用递归函数解决问题;
8. 汉诺塔:(han.c)
han(int num, char left, char mid, char right) // num盘子数目,left,mid,right为三个柱子,且盘子刚开始在left柱子上
{
if(1 == num) // 递归一定要有分支
printf("把第%d个盘子从%c移动到%c\n", num, left, right);
else
{
han(num - 1, left/*确定*/, right/*添加*/, mid/*确定*/);
// 先确定此处 left 和 mid 位置,先由 left->mid,最后添加 right
printf("把第%d个盘子从%c移动到%c\n", num, left, right);
han(num - 1, mid/*确定*/, left/*添加*/, right/*确定*/);
// 再把中间的移到最右边
}
}
int main()
{
han(3, 'A', 'B', 'C');
}
9. 生成随机数代码如下:
#include <stdlib.h>
#include <time.h>
int data = time(0);
srand(data);
int result = rand();
rand(); 生成随机数,(伪随机数)如:int data = rand();
srand 设置随机种子,生成随机数,通过rand()返回;如:srand(data); int result = rand();
time 用来获取1970年零点到现在的秒数;当参数为 0 时,获取到的秒数通过返回值来返回:如:int data = time(0);
10. 重复数字个数:(chongfu.c)
int arr[10] = {0};
do {
arr[data % 10]++; // 计算出重复数字个数
data /= 10;
} while (data != 0);
11. 输出内容能够到达屏幕的条件有下面四点:
\n
程序结束
输出缓冲区满(4kb)
人工刷新 fflush
这条语句可以把输出缓冲区里的内容立刻显示在屏幕上;
2. return; 结束当前函数
exit(); 结束整个程序,需要在程序开头处加入 #include <stdlib.h>
4. 使用数组作形参和实参是同一个数组,函数中修改了数组的内容,调用函数可以看到数组的变化。
若不用数组形参,而使用其他形参,很可能无法计算,因为函数结束,形参也就消失了。
5. 数组形参无法用 sizeof 计算出数组行参大小;
只有在主函数里面算出数组大小,然后传给形参数组:
void xingcan(int value[], int num){}
6. 输入一个整数,如果不是,提示重新输入:(scanf类型不匹配,返回 0)
while(!(scanf("%d", &data)))
{
scanf("%*[^\n]"); // * 忽略读到的内容,[^\n]任何非\n的字符,将\n之前所有字符读走
scanf("%*c"); // 从缓冲区读取一个字符,忽略掉。
printf("请重新输入整数:");
}
上面两条语句起到清空缓冲区的作用。
7. 递推思路:用循环解决问题;
递归思路:用递归函数解决问题;
8. 汉诺塔:(han.c)
han(int num, char left, char mid, char right) // num盘子数目,left,mid,right为三个柱子,且盘子刚开始在left柱子上
{
if(1 == num) // 递归一定要有分支
printf("把第%d个盘子从%c移动到%c\n", num, left, right);
else
{
han(num - 1, left/*确定*/, right/*添加*/, mid/*确定*/);
// 先确定此处 left 和 mid 位置,先由 left->mid,最后添加 right
printf("把第%d个盘子从%c移动到%c\n", num, left, right);
han(num - 1, mid/*确定*/, left/*添加*/, right/*确定*/);
// 再把中间的移到最右边
}
}
int main()
{
han(3, 'A', 'B', 'C');
}
9. 生成随机数代码如下:
#include <stdlib.h>
#include <time.h>
int data = time(0);
srand(data);
int result = rand();
rand(); 生成随机数,(伪随机数)如:int data = rand();
srand 设置随机种子,生成随机数,通过rand()返回;如:srand(data); int result = rand();
time 用来获取1970年零点到现在的秒数;当参数为 0 时,获取到的秒数通过返回值来返回:如:int data = time(0);
10. 重复数字个数:(chongfu.c)
int arr[10] = {0};
do {
arr[data % 10]++; // 计算出重复数字个数
data /= 10;
} while (data != 0);
11. 输出内容能够到达屏幕的条件有下面四点:
\n
程序结束
输出缓冲区满(4kb)
人工刷新 fflush