0
点赞
收藏
分享

微信扫一扫

学习随记

·函数

(函数名,返回类型,函数参数)


-常见函数类型

 -库函数

 -IO函数

 -字符串操作函数

 -字符操作函数

 -内存操作函数

 -时间/日期函数

 -数学函数

 -其他库函数


-自定义函数

 -设计一个函数交换两个整形的值

 -用指针远程操纵两个整型

//交换两个整型的值
#include<stdio.h>

void Swap(int* a, int* b)
{
int tmp = 0;
tmp = *a;
*a = *b;
*b = tmp;
}

int main(void)
{
int a = 10;
int b = 20;
printf("a=%d,b=%d\n", a, b);
Swap(&a, &b);
printf("a=%d,b=%d\n",a, b);
}

·参数

-实参

实际参数,可以是常量,变量,表达式和函数

-形参

形式参数,只有在函数被调用时才被实际化,然后被销毁

-*当实参传给形参时,形参是实参的一种临时拷贝,对形参的修改不会影响实参


-文档和库的阅读

strcpy() : char * strcpy ( char * destination, const char * source )

memset() :void * memset ( void * ptr, int value, size_t num );

常用工具:cplusplus、cppreference


·函数的调用

-传值调用

形参和实参分别占用不同的内存块,对形参的修改不会影响实参

-传址调用

可以让函数内部的变量和函数外部变量建立起真正的联系,也就是函数内部可以直接操作函数外部的变量

·保证函数的可适用性和可移植性

·数组在传参时传递的是数组首元素的地址

-无法在函数内部求数组的元素个数

·函数的嵌套调用

·函数的链式访问

 将一个函数的返回值作为另一个函数的参数

·printf的返回值是所打印字符的个数

·若函数定义在函数调用之后,需要先声明

-把函数的声明放在.h文件中,把函数的定义放在.c文件中


·函数递归

-函数自己调用自己称为递归

-递归常见的错误:栈溢出(stack overflow)

-大事化小

-按顺序打印一个整型的每一位

//接受一个整型值,按顺序打印它的每一位
#include<stdio.h>

void print(int i)
{
if (i>9)
{
print(i / 10);
}
printf("%d ", i % 10);
}

int main(void)
{
int i = 0;
printf("请输入一个整数 i=");
scanf("%d", &i);
print(i);
return 0;
}

-递归存在两个必要条件

1. 存在限制条件,当满足该限制条件时,递归不再继续

2. 每次递归调用之后越来越接近这个限制条件 

  -不引入临时变量,求字符串的长度

//不引入临时变量,求字符串长度
#include<stdio.h>

int my_strlen(char* str)
{
if (*str != '\0')
{
return 1 + my_strlen(str + 1);
}
else
{
return 0;
}
}

学习随记_整型


·汉诺塔问题

//汉诺塔问题求解
#include<stdio.h>

void move(char x, char y)
{
printf("%c --> %c\n", x, y);
}

void Hanoi(int n, char a, char b, char c)
{
if (n == 1)
{
move(a, c);// n=1,直接将其从A移动到C
}
else
{
Hanoi(n - 1, a, c, b);// 将1到n-1以C为媒介从A移动到B
move(a, c); // 将n从A移动到C
Hanoi(n - 1, b, a, c);// 将1到n-1以A为媒介从B移动到C
}
}

int main(void)
{
printf("请输入 n=");
int n = 0;
scanf("%d", &n);
printf("移动步骤如下:\n");
Hanoi(n, 'A', 'B', 'C');
return 0;
}


·青蛙跳台阶问题

//青蛙跳台阶问题求解
#include<stdio.h>

int Jump(int n)
{
if (n == 0||n == 1)
{
return 1;
}
else
{
return Jump(n - 1) + Jump(n - 2); //若最后一次跳1个台阶,则有 Jump(n-1) 种跳法,
//若最后一次跳2个台阶,则有 Jump(n-2) 种跳法
} //故共有 Jump(n-1) + Jump(n-2) 种跳法
}

int main(void)
{
int n = 0;
printf("请输入台阶数 n=");
scanf("%d", &n);
int ret=Jump(n);
printf("共有%d种跳法\n", ret);
return 0;
}

举报

相关推荐

机器学习随记【day19】

随记

node 随记

随记(一)

git随记

随记_Vlan

Mongodb随记

0 条评论