ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

C语言第三章

2022-01-23 15:58:54  阅读:111  来源: 互联网

标签:输出 第三章 字符 scanf C语言 printf 格式 输入


目录

1. 数据的格式化屏幕输出

1.1 格式化屏幕输出

1.2 格式化键盘输入

2. 单个字符的输入和输出

2.1 用getchar()从键盘输入单个字符

2.2 用scanf的%c格式符输入数据

2.3 用putchar()向屏幕输出单个字符 

3. 本章小节


1. 数据的格式化屏幕输出

  • 解决的问题
    • C 语言如何实现数据的输入和输出?
    • 如何向屏幕输出一串字符信息?
    •  如何在屏幕上显示变量的值?
  • 顺序结构程序
    • 输入数据
    • 处理数据
    • 输出数据
  • 程序获得输入数据的方式:键盘,文件
    • 键盘:scanf()
  • 程序输出数据的方式:屏幕,文件
    • 屏幕:printf() 
  • #include<stdio.h>
    • 编译预处理指令:在编译之前进行的处理
    • 实现标准输入输出函数scanf()、printf()时,在文件开头定义 

1.1 格式化屏幕输出

  • 按指定格式和类型输出变量的值,或者输出一行字符串

  • printf()格式字符
    • %d d ecimal 输出 十进制有符号 int 型
    • %u unsigned 输出 十进制无符号 int
    • %f f loat 以 小数形式 (6 位小数 ) 输出 float,double 型
    • %e exponent 以 标准指数形式 输出 float,double 型
    • %c c haracter 以字符形式 输出 单个字符 用%d可输出对应的ASCII码
  • printf()格式修饰符
    • l 加d、u前输出long型
    • h 加d、u前输出short型
    • m 输出数据的最小域宽
      • 数据位宽大于m,按实际位宽输出
      • 数据位宽小于m时,右对齐,左补空格
      • 对于浮点数来说, 小数点占一位位宽  
    • -m 左对齐,右补空格
    • .n 显示精度  对浮点数表示输出n位小数,四舍五入
      • 格式: %.nf、%m.nf
        • printf("Value is:%10.4f", 32.6784728):输出32.6785,位宽为10,右对齐
        • n为零时表示保存至整数
    • 输出“%”符号
      • printf("%d%%", a);  输出为10%

1.2 格式化键盘输入

  • 指定格式从键盘输入指定类型的数据

  • 分隔多个输入数据
    • 空格、Tab或回车
    • 达到输入位宽
    • 遇非法字符
  •  以以下代码为例
int a, b;
scanf("%d %d", &a, &b);
printf("a = %d, b = %d\n", a, b);
  • 格式错误:
    • 若scanf()中变量未使用取地址符&,则程序在编译时会报错
    • 若第二行格式字符写错,即写为”%f %f",则scanf()将读入错误的数据
    • scanf("%d\n", &a); 运行时错误:不能包含'\n'等转义字符
  • 输入错误:
    • 输入“12 3a",则输出为“a = 12,b = 3”
  • 如何判断输入正确:scanf()的返回值=正确读入的数据项数
  • 格式字符串中的普通字符原样输入,
        

         

  • 格式字符串与格式修饰符
    • 格式字符串:
      • %d:输入十进制int型
      • %f、%e:输入float型(不能指定输入数据的精度,可指定位宽)
      • %c:输入一个字符(包括空白字符)
    • 格式修饰符:m、l、L、h、*
      • l 加d、u前输入long型,加f、e前输入double
      • L加f、e前输入long double
      • * 输入项在读后不赋值给相应变量
        • scanf("%2d %*2d %2d", &a, &b); 跳过一个位宽为2的十进制整型
    • %lf 输入double型,%f输出。原因如下

2. 单个字符的输入和输出

  • 字符常量是用单引号括起来的一个字符
  • 转义字符
    •  一些特殊字符(无法从键盘输入或者另有他用)
    • 所有的ASCII码都可以通过转义方式表示出来
      • 字符B用转义方式表示:’B‘、'\102'、'\x42'
      • ASCII 码值,普通整数,可作算术运算

2.1 用getchar()从键盘输入单个字符

  • ch = getchar()
    • 从键盘接收的字符作为getchar()的函数值
    • 无参数
    • 以回车符'\n'结束字符的输入
    • 输入的字符(包括回车符)都放在输入缓冲区
  • 行缓冲(Line-buffer)输入方式
    • 将输入字符先放入输入缓冲队列中,再从缓冲队列读取字符
    • 直到键入回车符或文件结束符EOF时,程序才认为输入结束
    • 一行输入结束,getchar()才开始从输入缓冲队列读取字符,前面函数没读走的数据仍在缓冲队列中,将被下一个函数读取
                

         一次性把键盘输入的一行字符都放入输入缓冲区,再从输入缓冲区逐个读取字符

  • getchar()以行(而非字符)为单位读取字符
    • 实际是按文件的方式读取字符
    • 文件一般都是以行为单位的
  • 有时getchar()也可能返回负值
    • ​​​​​ 若在Unix/Linux下遇到组合键Ctrl+D(Windows下为Ctrl+Z),则返回EOF(一般定义为-1)

2.2 用scanf的%c格式符输入数据

  • 用scanf()函数的%c格式符输入字符型数据时,空格和回车等空白字符都会被当作有效字符读入
  • 解决
    • 在scanf("%c", &b); 前调用getchar(); 将空格或回车符读入
    • 在%c前加一个空格:scanf(" %c", &b);
  • 任意分隔符输入加法算式
#include <stdio.h>
int main()
{
	int data1, data2, sum;
	char op;
	printf("Please enter the expression data1 + data2\n");
	scanf("%d %c%d",&data1, &op, &data2);// %c前加一个空格实现对任意空格的获取
	printf("%d%c%d = %d\n", data1, op, data2, data1+data2);
}

2.3 用putchar()向屏幕输出单个字符 

  • putchar(ch)
    • 向屏幕输出一个字符,字符型变量ch的值

  • printf("%c, %d\n" ,ch ,ch); 
    • 字符型变量可以%c和%d两种格式输出

3. 本章小节

标签:输出,第三章,字符,scanf,C语言,printf,格式,输入
来源: https://blog.csdn.net/weixin_43326483/article/details/122646099

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有