网站首页 > 教程文章 正文
C语言中的#include<stdlib.h>
是C语言中的一个头文件,stdlib 头文件里包含了C语言的一些函数,该文件包含了的C语言标准库函数的定义。
1、意思是标准输入输出头文件。
2、用到标准输入输出函数时,就要调用这个头文件。
3、stdlib.h中,包含了C语言的一些常用且方便的库函数。
4、如动态内存相关的malloc, realloc,zalloc,calloc,free等。
02利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
#include<stdio.h>
int main()
{
void plain(int n);
int i=5;
plain(i);
printf("\n");
return 0;
}
void plain(int n)
{
char next;
if(n<=1)
{
next=getchar();
putchar(next);
}
else
{
next=getchar();
plain(n-1);
putchar(next);
}
}
函数调用顺序是这样(简化一下):
刚开始这样的
plain(5) ;
putchar(5) ;
因为上面plain(5) ; 中5 >1 又调用了plain(4) ; 展开了写就成了下面的形式,看一下print的顺序就应该知道了
plain(5)
plain(4)
plain(3)
plain(2)
plain(1)
putchar(1)
putchar(2)
putchar(3)
putchar(4)
putchar(5)
getchar() 函数
函数声明: int getchar(void)
函数功能: C 库函数int getchar(void)从标准输入 stdin 获取一个字符(一个无符号字符)。这等同于getc带有 stdin 作为参数。
返回值: 该函数以无符号 char 强制转换为 int 的形式返回读取的字符,如果到达文件末尾或发生读错误,则返回 EOF。
原理: 当程序调用getchar时,程序就等着用户按键。用户输入的字符被存放在键盘缓冲区中。直到用户按回车为止。当用户键入回车之后,getchar才开始从stdin流中每次读入一个字符。getchar函数的返回值是用户输入的字符的ASCII码,若文件结尾则返回-1(EOF),且将用户输入的字符回显到屏幕。如用户在按回车之前输入了不止一个字符,其他字符会保留在键盘缓存区中,等待后续getchar调用读取。也就是说,后续的getchar调用不会等待用户按键,而直接读取缓冲区中的字符,直到缓冲区中的字符读完后,才等待用户按键。
putchar() 函数
函数声明: int putchar(int char)
函数功能: 把参数 char 指定的字符(一个无符号字符)写入到标准输出 stdout 中。
说明: 该函数将指定的表达式的值所对应的字符输出到标准输出终端上。表达式可以是字符型或整型,它每次只能输出一个字符。
假定输入12345
首先n=5;next=getchar()=1;
palin(n-1=4);next=getchar()=4(注意关键的地方,这个next和上一个next是不一样的,上一个next被压栈保护;)
……
palin(1);next=getchar()=5;(压栈完成,下面进行出栈)
putchar(next=5);5被pop出来;
……
弄清楚递归,一定要搞明白栈(first in last out)的结构,递归就是依赖栈运行的。在运行下一个递归函数前将上一个递归函数压栈,这个递归函数运行完成后,继续运行上一个递归函数;
这个递归如果拆开来写如下:
1. getchar() 输入1
2. getchar()输入2(上一个getchar()及得到的3被压栈)
3. getchar()……3
4. getchar()……4
5. getchar()……5
5. putchar() 输出5
4. putchar() 输出4
3. putchar() ………3
2. putchar()……2
1. putchar()……1
按照1234554321的次序,标号相同的语句是同一个函数的语句,正所谓first in last out 首先被执行getchar的最后被执行putchar
猜你喜欢
- 2025-01-15 《报告老板!》番外收官 片尾悬念引遐想
- 2025-01-15 《正常人》,可能是一部未来经典
- 2025-01-15 你知道电脑蓝屏代码含义吗?
- 2025-01-15 PPT尾页只有“谢谢”两字?太low了,这样设计,领导想不鼓掌都难
- 2025-01-15 「建议收藏」Windows电脑蓝屏代码大全
- 2025-01-15 Win10蓝屏代码大全都代表什么错误原因?
- 2025-01-15 「蓝屏篇」电脑蓝屏代码解释及解决办法
- 2025-01-15 判断文件是否到了结尾,VBA编程技巧,函数讲解
- 05-11阿里开源MySQL中间件Canal快速入门
- 05-11MyBatis插件开发实战:手写一个分页插件
- 05-11Flask数据库——SQLAlchemy
- 05-11MySQL 到 Hazelcast Cloud 实时数据同步实操分享
- 05-11sqlmap 详解
- 05-11一篇文章让你学会Elasticsearch中的查询
- 05-11Mysql性能优化这5点你知道吗?简单却容易被初学者忽略!
- 05-11Spring Boot 实现 MySQL 读写分离技术
- 最近发表
- 标签列表
-
- location.href (44)
- document.ready (36)
- git checkout -b (34)
- 跃点数 (35)
- 阿里云镜像地址 (33)
- qt qmessagebox (36)
- md5 sha1 (32)
- mybatis plus page (35)
- semaphore 使用详解 (32)
- update from 语句 (32)
- vue @scroll (38)
- 堆栈区别 (33)
- 在线子域名爆破 (32)
- 什么是容器 (33)
- sha1 md5 (33)
- navicat导出数据 (34)
- 阿里云acp考试 (33)
- 阿里云 nacos (34)
- redhat官网下载镜像 (36)
- srs服务器 (33)
- pico开发者 (33)
- https的端口号 (34)
- vscode更改主题 (35)
- 阿里云资源池 (34)
- os.path.join (33)