C 语言(3)
3. 输入输出与程序结构
3.1 字符输入输出
putchar(),getchar()
3.2 格式化输入输出
3.2.1 printf() 函数
printf 函数调用的一般形式为:printf(“格式控制字符串”,输出表列)。
格式控制串可由格式字符串和非格式字符串两种组成。格式字符串是以%开头的字符串,在%后面跟有各种格式字符,以说明输出数据的类型、形式、长度、小数位数等。
非格式字符串在输出时原样照印,在显示中起提示作用。
格式字符串的一般形式为:[标志][输出最小宽度][.精度][长度]类型
各项的意义介绍如下:
1) 类型:类型字符用以表示输出数据的类型,其格式符和意义如下表所示:
- d 以十进制形式输出带符号整数(正数不输出符号)
- o 以八进制形式输出无符号整数(不输出前缀 0)
- x, X 以十六进制形式输出无符号整数(不输出前缀 0x)
- u 以十进制形式输出无符号整数
- f 以小数形式输出单、双精度实数
- e, E 以指数形式输出单、双精度实数
- g, G 以 %f 或 %e 中较短的输出宽度输出单、双精度实数
- c 输出单个字符
- s 输出字符串
2) 标志:标志字符为 -、+、#、空格四种,其意义下表所示:
- - 结果左对齐,右边填空格
- + 输出符号(正号或负号)
- 空格 输出值为正时冠以空格,为负时冠以负号
- # 对 c, s, d, u 类无影响;对 o 类,在输出时加前缀 0;对 x 类,在输出时加前缀0x;对 e, g, f 类当结果有小数时才给出小数点。
3) 输出最小宽度:用十进制整数来表示输出的最少位数。若实际位数多于定义的宽度,则按实际位数输出,若实际位数少于定义的宽度则补以空格或 0。
4) 精度 :精度格式符以 “.” 开头,后跟十进制整数。本项的意义是:如果输出数字,则表示小数的位数;如果输出的是字符,则表示输出字符的个数;若实际位数大于所定义的精度数,则四舍五入后截去超过的部分。
5) 长度 :长度格式符为 h, l 两种,h 表示按短整型量输出,l 表示按长整型量输出。
3.2.2 scanf 函数
scanf 函数的一般形式为:scanf(“格式控制字符串”,地址表列);
格式控制字符串的作用与 printf 函数相同,但不能显示非格式字符串,也就是不能显示提示字符串。
格式字符串的一般形式为:%[*][输入数据宽度][长度]类型
1) 类型:表示输入数据的类型,其格式符和意义如下表所示。
- d 输入十进制整数
- o 输入八进制整数
- x 输入十六进制整数
- u 输入无符号十进制整数
- f或e 输入实型数(用小数形式或指数形式)
- c 输入单个字符
- s 输入字符串
2) “*”符 :用以表示该输入项,读入后不赋予相应的变量,即跳过该输入值。
3) 宽度 :用十进制整数指定输入的宽度(即字符数)。
4) 长度 :长度格式符为 l和 h, l 表示输入长整型数据(如 %ld ) 和双精度浮点数(如 %lf )。 h 表示输入短整型数据。
使用 scanf 函数还必须注意以下几点:
1) scanf 函数中没有精度控制,如:scanf("%5.2f",&a); 是非法的。不能企图用此语句输入小数为 2 位的实数。
2) scanf 中要求给出变量地址,如给出变量名则会出错。如 scanf("%d",a); 是非法的,应改为 scnaf("%d",&a); 才是合法的。
3) 在输入多个数值数据时,若格式控制串中没有非格式字符作输入数据之间的间隔则可用空格,TAB 或回车作间隔。C 编译在碰到空格、 TAB 、回车或非法数据(如对 “%d” 输入 “12A” 时, A 即为非法数据)时即认为该数据结束。
4) 在输入字符数据时,若格式控制串中无非格式字符,则认为所有输入的字符均为有效字符。
5)如果格式控制串中有非格式字符则输入时也要输入该非格式字符。
3.3 程序结构
3.3.1 循环控制
for(表达式1;表达式2;表达式3) 语句
它的执行过程如下:
1) 先求解表达式 1。
2) 求解表达式 2,若其值为真(非 0),则执行 for 语句中指定的内嵌语句,然后执行下面第 3) 步;若其值为假 (0) ,则结束循环,转到第 5) 步。
3) 求解表达式 3。
4) 转回上面第 2) 步继续执行。
5) 循环结束,执行 for 语句下面的一个语句。
3.3.2 switch 语句
1) 在 case 后的各常量表达式的值不能相同,否则会出现错误。
2) 在 case 后,允许有多个语句,可以不用 {} 括起来。
3) 各 case 和 default 子句的先后顺序可以变动,而不会影响程序执行结果。
4) default 子句可以省略不用。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异