第四章 基本输入/输出和顺序程序设计

4、基本输入/输出和顺序程序设计

格式化输出 printf

格式化输入 scanf

字符数据的非格式化输入/输出

程序的控制结构

易错

1、格式化输出 printf

1、格式控制字符串用于指定输出格式。包含两类字符:

  • 常规字符:包括可显示字符和用转义字符表示的字符。

  • 格式控制符:以%开头的一个或多个字符,以说明输出数据的类型、形式、长度、小数位数等。

    要想显示 % ,必须在格式控制字符串中使用%%来代替单个%。

    如果格式控制字符串中格式控制符的个数多于表达式的个数,则余下的格式控制符的值将不确定;如果格式控制符的个数少于表达式的个数,则不影响。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-h8LRXcpr-1655351178899)(https://cdn.jsdelivr.net/gh/2339539741/tuchuang/img/202206161135205.png)]

2、输出有符号整数的格式控制符一般格式为:%[-] [+] [0] [width] [.precision] [l] [h] d

  • []:表示可选项,可省略。

  • -:表示输出的数据左对齐,默认右对齐。

  • +:输出正数时,在数的前面加上+号。

  • 数字0:右对齐时,如果实际宽度小于width,则在左边的空位补0。

  • width:无符号整数,表示输出整数的最小域宽(即占屏幕的多少格)。若实际宽度超过了width,则按照实际

    ​ 宽度输出。

  • .precision:无符号整数,表示至少要输出precision位。若整数的位数大于precision,则按照实际位数输出,

    ​ 否则在左边的空位上补0。

  • 字母l:如果在d的前面有字母l(long),表示要输出长整型数据。

  • 字母h:如果在d的前面有字母h(short),表示要输出短整型数据。

3、输出无符号整数的格式控制符的一般格式位:%[-] [#] [0] [width] [.precision] [l] [h] u|o|x|X

  • |:表示互斥关系。

  • #:表示当以八进制形式输出数据(%o)时,在数字前输出0;当以十六进制形式输出数据(%x或%X)时,在数字

    ​ 前输出0x或0X。

  • .precision:含义同上,不过它所指定的位数不包含0x或0X所占的位数。

4、输出实数的格式控制符的一般格式位:%[-] [+] [#] [0] [width] [.precision] [l|L] f|e|E|g|G

  • #:表示必须输出小数点。
  • .precision:规定输出实数时,小数部分的位数。
  • l:输出double型的数据(省略时也是输出double型数据)。
  • L:输出 long double 型数据。

5、输出字符和字符串的格式控制符的一般格式位:字符:%[-] [0] [width] c 字符串:%[-] [0] [width] [.precision] s

  • .precision:表示之输出字符串的前precision个字符。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fubbzFdN-1655351178901)(https://cdn.jsdelivr.net/gh/2339539741/tuchuang/img/202206161135862.jpg)]

6、注意点:

  • 输出时表达式值的计算顺序是从右到左。

    int i=1;
    printf("%d,%d,%d\n",i,i+1,i=3);  //3,4,3
    
  • 格式转换符中,除了X、E、G以外,其他均为小写。

  • 表达式的实际数据类型要与格式转换符所表示的类型相符,printf函数不会进行不同数据类型之间的自动转换。(而且前一个的不正常输出会影响到下一个表达式的正常输出。)

2、格式化输入scanf

1、&符号的功能是取变量地址,且只能作用于变量,不能作用于表达式。

2、scanf函数的第一个参数格式控制字符串的含义与printf函数的第一个参数完全相同,都包含两类字符,常规字 符和格式控制符。

3、scanf函数的格式控制符的一般格式为:%[*] [width] [l|h] Type

  • width:指定输入数据的域宽,遇空格或不可转换字符则结束。
  • Type:表4-4列出的各种格式转换符。
  • *:抑制符,输入的数据不会赋值给相应的变量。
  • l:用于d、u、o、x|X前,指定输入为long型整数;用于e|E、f前,指定输入为double型实数。
  • h:用于d、u、o、x|X前,指定输入为short型整数。

4、scanf函数的注意点

  • 如果相邻两个格式控制符之间,不指定数据分隔符(如逗号、冒号等),则相应的两个输入数据之间,至少用一个空格分隔,或者用Tab键分隔,或者输入一个数据后,按回车键,然后再输入下一个数据。
  • 格式控制字符串中出现的常规字符(包括转义字符),务必原样输入。
  • 当格式控制字符串中指定了输入数据的域宽width时,将读取输入数据中相应的width位,按需要的位数赋给相应的变量,多余部分舍弃。
  • 使用格式控制符%c输入单个字符时,空格和转义字符均作为有效字符被输入。
  • 输入数据时,遇到以下情况,系统认为该数据输入结束:
    • 遇到空格或者回车键或者Tab键。
    • 遇到输入域宽度结束。
    • 遇到非法输入。
  • 当一次scanf调用需要输入多个数据项时,如果前面数据的输入遇到非法字符,并且输入的非法字符不是格式控制字符串中的常规字符,这种非法输入将影响后面数据的输入,导致输入失败。

5、在输入数据类型和字符类型的两个scanf函数之间通常使用fflush库函数以清除键盘缓冲区中的字符。

3、字符数据的非格式化输入/输出

1、字符数据的非格式化输入(getchar、getc、getche、getch)

回显就是能在输入屏幕看到你输入的字符。

注意在多个字符输入时,空格之类字符也会算进去。

它们的返回值都是所取字符的ASCII码。

2、字符数据的非格式化输出

putchar、putc 返回值:若正常,返回显示字符的代码值;若出差,返回EOF(-1)。

puts输出后将自动换行。

函数原型所在头文件均为stdio.h。

4、程序的控制结构

1、算法的特点:

  • 有穷性
  • 确定性
  • 可行性
  • 输入
  • 输出

2、算法的描述方法

  • 自然语言
  • 传统流程图
  • N-S流程图
  • 伪代码

3、算法的基本结构

三种基本结构:顺序结构、选择(分支)结构和循环结构。

结构化方法结构清晰,易于纠错。遵循这种方法的程序设计就是结构化程序设计。

循环结构有两种基本形态:while循环(当型循环)和do-while循环(直到型循环)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IAQexe4h-1655351178903)(https://cdn.jsdelivr.net/gh/2339539741/tuchuang/img/202206161142873.jpg)]

5、易错

#include或#define命令不用分号结束。

调用scanf函数输入浮点数时不能规定精度。

算法是解决某个问题的具体方法和步骤。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值