c语言基础笔记08

本部分包含函数的嵌套调用和链式访问、以及函数的递归。

练习题4道:1.函数的递归练习:接受一个整型值(无符号),按照顺序打印它的每一位。2.编写函数不允许创建临时变量,求字符串的长度。3.求n的阶乘。(不考虑溢出)4.求第n个斐波那契数。(不考虑溢出)

笔记:

 图片(c语言笔记).

文字(基于c++修改后的c语言笔记).

  • 6 函数
    • 6.1 概述
      • 作用:将一段经常使用的代码封装起来,减少重复代码
      • 一个较大的程序,一般分为若干个程序块,每个模块实现特定的功能。
    • 6.2 函数的定义
      • 函数的定义一般主要有5个步骤:
        • 1、返回值类型
        • 2、函数名
        • 3、参数表列
        • 4、函数体语句
        • 5、return 表达式
      • 语法:
        • 图示:

        • 返回值类型 :一个函数可以返回一个值。在函数定义中
        • 函数名:给函数起个名称
        • 参数列表:使用该函数时,传入的数据
        • 函数体语句:花括号内的代码,函数内需要执行的语句
        • return表达式: 和返回值类型挂钩,函数执行完后,返回相应的数据
    • 6.3 函数的调用
      • 功能:使用定义好的函数
      • 语法:函数名(参数)
      • 参数列表里的变量叫形式参数,简称形参
        • int add(int num1, int num2)//定义中的num1,num2称为形式参数,简称形参
      • 调用时的变量称为实际参数,简称实参
        • int sum = add(a, b);//调用时的a,b称为实际参数,简称实参
      • 总结:函数定义里小括号内称为形参,函数调用时传入的参数称为实参
    • 6.4 值传递
      • 所谓值传递,就是函数调用时实参将数值传入给形参
      • 值传递时,如果形参发生改变,并不会影响实参
      • 注意:如果函数不需要返回值,定义返回值类型时可以学void
      • 总结: 值传递时,形参是修饰不了实参的
    • 6.5 函数的常见样式
      • 常见的函数样式有4种
      • 无参无返
      • 有参无返
      • 无参有返
      • 有参有返
    • 6.6 函数的声明
      • 意义:函数声明后,可以在main主方法后面编译函数的具体内容。
      • 作用: 告诉编译器函数名称及如何调用函数。函数的实际主体可以单独定义。
      • 函数的声明可以多次,但是函数的定义只能有一次
    • 6.7 函数的分文件编写
      • 作用:让代码结构更加清晰
      • 函数分文件编写一般有4个步骤
        • 创建后缀名为.h的头文件
        • 创建后缀名为.cpp的源文件
        • 在头文件中写函数的声明
        • 在源文件中写函数的定义

 代码:

add.h头文件


void Add(int x, int y);

void Addprint();

add.c源文件

#include<windows.h>
#include <stdio.h>

void Add(int x, int y)
{
	printf("结果为:%d", x + y);

}
void Addprint()
{
	printf("下面进行加法运算\n");
	Sleep(1000);
}

源.c源文件

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include<windows.h>
#include "add.h"


//函数的递归练习:接受一个整型值(无符号),按照顺序打印它的每一位。
void print(unsigned int num)
{
	if (num > 9)
	{
		print(num / 10);
	}
	printf("%d ", num%10);
}

//编写函数不允许创建临时变量,求字符串的长度。
int my_strlen(char*	p)
{
	if (*p != 0)
		return 1 + my_strlen(p + 1);
	else
		return 0;
}


int factorial(int n)
{
	if (n >= 1)
		return n * factorial(n - 1);
	else
		return 1;
}

int Fib(int n)
{
	if (n > 2)
		return Fib(n - 1) + Fib(n - 2);
	else if (n <= 2)
		return 1;
}

int main()
{
	//函数的嵌套调用和链式访问
	int x = 0;
	int y = 0;

	printf("输入两个数相加\n");
	scanf("%d %d", &x, &y);
	Add(x, y);

	//函数的递归
	//main();//死递归
	//函数的递归练习:接受一个整型值(无符号),按照顺序打印它的每一位。
	unsigned int num = 0;
	scanf("%d", &num);
	print(num);

	//编写函数不允许创建临时变量,求字符串的长度。
	char arr1[] = "hello";
	printf("%s的字符串长度为%d.", arr1, my_strlen(arr1));

	//求n的阶乘。(不考虑溢出)
	int n = 0;
	printf("输入n,求n的阶乘:");
	scanf("%d", &n);
	printf("值为%d", factorial(n));

	//求第n个斐波那契数。(不考虑溢出)
	int n = 0;
	printf("输入n,求n的斐波那契数:");
	scanf("%d", &n);
	printf("值为%d", Fib(n));

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ohrkaninchen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值