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 子句可以省略不用。

posted @   码上领航者  阅读(37)  评论(0编辑  收藏  举报
编辑推荐:
· 从 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的设计差异
点击右上角即可分享
微信分享提示