当前位置: 首页 > news >正文

《初学C语言》第三讲:printf函数和scanf函数

思维导图

思维导图

一.printf()函数

1.概念

(1)printf = print(打印) + format(格式化),表示可以定制输出文本样式
(2)printf () 的头文件为 <stdio.h>

2.基本用法

将参数文本输出到屏幕,如打印:hello world

#include<stdio.h>intmain(){printf("Hello world");return0;}

3.占位符

当出现占位符时,这个位置就可以用其他值代替

3.1 基本用法

(1) 占位符是由 % + 字符(表示占位符的类型)构成,如:%d 表示整数
(2)每当有一个占位符,就必须有相应类型的值来代替
#include<stdio.h>intmain(){printf("There are have %d appels",3);return0;}

3.2 printf() 参数

printf 参数是由printf“”里的内容作为一个参数和占位符的个数作为参数

注:printf()参数与占位符是一一对应关系,如果有n个占位符,printf()的参数就应该有 n+1 个。

3.3 常见占位符列举

%d:十进制整数(有符号的十进制整数)
%f: 小数(float类型)
%lf: 小数(double类型)
%hd:十进制short int类型
%hu:unsigned short int类型
%ld:十进制long int类型
%lu: unsigned long int类型
%Lf:long double类型
%p:指针(用来打印地址)
%c:字符
%s:字符串
%u:无符号整数(unsigned int)
%zu:size_t 类型
%%:输出一个百分号

4.输出格式

printf() 可以定制占位符的输出格式

4.1整数限宽

%n(数字)d表示这个占位符的宽度至少是n位,如果不满n位,对应的值的前面会添加空格。输出的值默认是右对齐,少几个值就会添加几个空格;如果改成左对齐,即在输出内容后面添加空格,操作是在占位符的%的后面加一个 - 号

#include<stdio.h>intmain(){printf("%5d\n",123);// 123(打印两个空格)printf("%-5d",123);//123 (3后面打印两个空格)return0;}

4.2小数(整数与小数)限宽(默认小数点后面保留6位)

%n(数字)f表示输出的浮点数至少占据n位,同样默认也是右对齐,如果不满n位,少几个值就加几个空格(与整数限宽规则一样)

#include<stdio.h>intmain(){printf("%12f\n",123.45);// 123.450000(打印两个空格)return0;}

4.3正负号

默认情况情况下,printf() 不对正数显示,只显示负号(-);如果想正数也显示,则在占位符的%后面加一个+

#include<stdio.h>intmain(){printf("%+d\n",5);// +5return0;}

4.4小数位限宽

(1)如果一个小数部分只有两位,且我们只想限定小数后面只保留两位,占位符可以写成%.2f
#include<stdio.h>intmain(){printf("%.2f\n",123.45);//123.45return0;}
(2)当小数点后面比我们要保留的值多,则遵循四舍五入法则
#include<stdio.h>intmain(){printf("%.2f\n",123.456);//12.46return0;}

4.5小数位与整数部分一起限宽

(1)如%7.2f表示输出最小宽度为7,小数位为2
#include<stdio.h>intmain(){printf("%7.2f\n",123.45);// 123.45(打印1个空格)return0;}
(2)最小宽度和小数位数这两个限定值,都可以用 * 代替,通过printf()的参数输入
#include<stdio.h>intmain(){printf("%*.*f\n",7,2,123.45);// 123.45(打印1个空格)return0;}

4.6字符串限宽

%s默认输出全部字符串,如果只想输出一部分字符串,格式为%.n(数字)s指定输出

#include<stdio.h>intmain(){printf("%.5s\n","hello world");//helloreturn0;}

二.scanf() 函数

1.概念

(1)当创建了变量,给变量输入值就可以使用scanf函数
(2)头文件为 <stdio.h>

2.基本用法

(1)一般语法形式
```c int i = 0; scanf("%d", &i);
  • %d:表示存放的是整型
  • " " :表示 " " 里有多少个占位符,就有多少个变量
  • &i :表示将用户从键盘输入的整数存入变量 i
scanf("%d%d%c%c",&i,&j,&x,&y);

表示的是用户前两位输入的是整数,后两个是字符,这四个值依次放入 i, j, x, y四个变量

(2)特殊语法形式:变量为指针变量
```c char name[10]; scanf("%s",name);
  • name :指针变量(字符串变量)
  • %s:表示存放的是字符串
(3)scanf处理占位符时,会自动过滤空白字符,包括空格、制表符、换行符等
#include<stdio.h>intmain(){inti=0;intj=0;scanf("%d%d%",&i,&j);//10 20 或 //10//20printf("%d\n",i);//10printf("%d\n",j);//20return0;}
(4)scanf读取数据时,依次按照占位符的顺序读取,读取数据时会从上一次遗留的第一个字符开始,直到读完为止,或者遇到第一个不符合条件的字符为止
#include<stdio.h>intmain(){inti=0;floatj=0;scanf("%d%f",&i,&j);//13.45printf("%d\n",i);//13printf("%f\n",j);//0.450000return0;}

3.scanf的返回值

3.1scanf() 的返回值是一个整数,表示成功读取的变量个数。

3.2如果没有读取任何项,或者匹配失败,则返回0

3.3如果在成功读取任何数据之前,发生了读取错误或者遇到读取文件结尾,则返回常量值EOF(-1).EOF-end of file文件结束标志

#include<stdio.h>intmain(){inta=0;inti=0;intj=0;intx=scanf("%d%d%d",&a,&i,&j);//1 2 3printf("a=%d i=%d j=%d\n",a,i,j);//a = 1 b = 2 c = 3printf("%d",x);//3return0;}

4.在scanf中一些占位符特殊的特征

4.1 %c :字符

(1)只有%c不会自动忽略起首的空白字符,总是返回当前第一个字符,无论该字符是否为空白字符
#include<stdio.h>intmain(){charch=0;scanf("%c",&ch);//输入空格printf("----%c----\n",ch);//---- ----return0;}
(2)强制跳过字符前的空白字符,格式为scanf(" %c",&ch),即%c前加一个空格,表示跳过零个或多个字符
#include<stdio.h>intmain(){charch=0;scanf(" %c",&ch);// cprintf("----%c----\n",ch);//----c----return0;}

4.2%s :字符串

字符串(从当前第一个非空白字符开始读起,直到遇到空白字符(空格、换行符、制表符等)停止)

#include<stdio.h>intmain(){chararr[10];scanf(" %s",arr);//abc defprintf("%s\n",arr);//abcreturn0;}

4.3%[ ] :匹配的字符

在方括号指定一组匹配的字符(如:[a-zA-Z]),遇到不在集合里的字符,匹配将会停止

#include<stdio.h>intmain(){chararr[100];scanf(" %[a-zA-Z]",arr);//abcd1234defgprintf("%s\n",arr);//abcdreturn0;}

4.4%n(数字)s :指定字符串长度

#include<stdio.h>intmain(){chararr[5];scanf(" %4s",arr);//abcdefprintf("%s\n",arr);//abcdreturn0;}
http://www.jsqmd.com/news/711406/

相关文章:

  • 2026年q2道路花箱选型技术推荐:不锈钢花箱,不锈钢镀锌板花箱,人行横道花箱,园林花箱,排行一览! - 优质品牌商家
  • 从Jupyter Notebook一键转生产沙箱:3步实现AI代码自动容器化+依赖锁定+网络策略注入(2026 Docker Desktop 4.32新功能深度拆解)
  • Trae入门
  • 软考高级系统架构设计师备考(二十三):软件工程—逆向工程、正向工程与需求工程
  • 2026浏览器TLS指纹与JA3/JA4协议指纹技术深度解析及实现方案
  • 人力资源咨询公司,人力资源改革,国企改革咨询,成都咨询公司,成都管理咨询公司,绩效咨询公司,优选指南! - 优质品牌商家
  • StitchFlow:基于AI的本地化UI生成工具,打通产品简报到可交付代码
  • 告别‘抓瞎’!用CAPL的RS232函数自动抓取MCU Log保姆级教程
  • 72W碳化硅SIC电源方案(24V3A,12V6A)LP8841SC+LP35118N全电压,过认证,六级能效( BOM,典型电路)
  • 机器学习参数与超参数:核心区别与调优实践
  • 3步快速解锁碧蓝航线全皮肤:Perseus补丁终极指南
  • 大语言模型在文档伪造检测中的创新应用与实践
  • G-Helper实战指南:华硕笔记本开源硬件控制与性能调优
  • 全国省市区 JSON数据
  • 拜读了顶会顶刊上这些论文,原来多模态特征融合是这么玩的
  • 大语言模型强化学习训练:BAPO算法解析与实践
  • 基于大模型的AI外呼系统:RAG与知识增强实践(三)
  • 终极电路设计神器:Draw.io电子工程绘图库完全指南
  • 告别轮询!用STM32F103的TIM+DMA搞定DHT11,实测代码不到100行
  • 从零开始:5分钟掌握暗黑3按键助手D3KeyHelper的完整配置方法
  • 2026AI驱动的动态指纹生成与风控对抗技术深度实践
  • RLVR:让AI的回答可验证、可审计、可信赖
  • 《全域数学:华夏术数文明公理升维大系》
  • 大语言模型评估基准:从MMLU到ArabicMMLU的跨文化性能分析
  • Radeon ProRender Blender插件深度解析:如何用开源渲染器打造专业级视觉特效
  • YOLOv13如何提升NEU-DET的检测精度 | CVPR2026 FAAFusion 解决Neck跨尺度方向冲突,实现涨点
  • Flask ORM 的利刃:精通 SQLAlchemy 声明式模型与核心 CRUD 操作
  • RetinaFace模型在Claude Code环境中的部署与测试
  • Akagi:雀魂AI实时分析辅助系统完整指南 - 快速部署免费AI麻将教练
  • 动态切换标题图片的顶部边距:基于导航栏状态的 CSS 样式控制