MOOC视频课 C语言程序设计第三周——从键盘中来,到键盘中区,开始输入和输出啦

3.1数据的格式化屏幕输出

一个程序,可以没有输入,但是不可能没有输出。
一个没有任何输出的成宿是毫无意义的。
因此,数据的输出和输出,是程序的一个最基本的操作。
一般而言,程序实现数据输入的方式,有两种,
一种是从键盘获得用户输入的数据,
另一种是从文件获得输入的数据。
程序实现数据输出的方式,也有两种,
一种将我们要输出的数据,显示到屏幕上
,另一种是将我们输出的数据,保存到一个文件中,
本周,我们只讨论键盘输入,和屏幕输出,这种输入与输出数据。
从文件输入数据和向文件输出数据,这种方式,将在后面介绍文件的时候,在专门讨论。
第三章:键盘输入与屏幕输出
数据的格式化屏幕输出

  • List item本节要讨论的主要问题
    C语言如何实现数据的输入和输出?
    如何向屏幕输出一串字符信息?
    如何在屏幕上显示变量的值?
  • List item顺序结构
    一般而言,顺序结构程序涉及如下三个基本操作:
    输入数据
    处理数据
    输出数据
  • List item顺序结构的特点
    自上而下,依次按顺序执行
    开始→输入数据→处理数据→输出数据→结束
    C语言是如何实现数据的输入和输出呢?
    程序获得输入数据的方式:键盘,文件
    程序输出方式:屏幕,文件
    从文件中输入数据,和从文件输出数据在后边讲。
    C语言没有提供专门的输入输出语句, 无论你下面这种方式的哪一种方式,来进行数据的输入和输出,都是需要通过,调用C的标准库函数,来实现数据的输入和输出。
    例如scanf("…");、-- getting keyboard input
    例如printf("…"); displaying output on screen
    #include <stdio.h>调用标准库函数的头文件,编译预处理指令。
    一个程序至少会调用标准输出函数,所以这样的一条语句,会出现在编译的所有程序当中。
    数据的格式化屏幕输出
    按指定格式和类型输出变量的值,或者输出一行字符串。
    printf(格式控制字符串,输出值参数表);
    printf("a=%d b=%f , a , b ")
    %d %f 转化说明 指定输出数据a b的格式
    %d 表示以十进制整型格式来输出变量a的值
    %f 表示以小数形式来输出变量b的值
    在格式控制字符串a=%d b=%f 中,这些普通字符a b ,它是会在输出的时候,原样输出在屏幕上的。
    后边的输出值参数表 可以是一个可变形式的输出参数表,也就是说,输出参数的个数可以是可变的。
    在格式字符串中有几个参数,就需要几个格式说明符来和输出值参数表表中的参数,一一对应。
    输出值参数类型与格式转换说明符相匹配。
    变量a是整型,那相应的a就要用%d,这种十进制整型的来输出a的值
    b是单精度实型的,那么就要以%f来输出变量b的值。
    printf函数非常灵活,它可以用来输出多个任意类型的数据。
    在这里插入图片描述1.03×10^1=10.3
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述
    例如格式控制字符串中的符号就需要原样输出到屏幕上,而后面的这个10f,首先f是指定了这个是以小数形式来输出,并且默认的情况下,小数输出的形式是6位的。如果超过了6位,就需要4舍五入,所以没输出.00028,而输出的是.0003.
    而前面10,表示输出的数据,所占的最小域宽是10,这里32.678473,它的小数位数,是6位,整数6位是2位,再加上小数点占一位,一共是9位,因此它还差一位,需要用空格来填补,又因为10是大于0的,所以输出的数据是向右靠齐的,左面来补空格。
    在这里插入图片描述如果f前面指定的域宽是一个负数的话,那么它就表示,不是右对齐,而是左对齐,左对齐的话,就需要右补空格。
    首先要把Value,原样输出到屏幕上,然后以f格式符来输出,就是输出6位小数,这里由于,是负10f,所以输出是向左靠齐的,右边来补上一个空格。
    在这里插入图片描述在输出浮点数的时候,我们还可以指定输出的浮点数的小数位数。
    例如指定这个数据以三位小数来输出这个数据,那么输出的数据就是32.678.
    Value is : 同样是原样输出到屏幕上,由于这里没有指定输出的数据的最小域宽。所以按照实际的来输出这个数据。就是输出32.678
    .3指的是,输出的小数位数是3位。
    在这里插入图片描述在这里插入图片描述在指定了浮点数显示精度的同时,也可以指定它的域宽,例如,以10.4f的格式来输出这个数据,首先value:原样输出到屏幕上 ,10.4f中的.4f就是这个数据输出4位小数。而10指定了它所占的最小域宽。
    在这里插入图片描述在这里插入图片描述由于32.6785实际占的域宽是7位,所以左边要补上3个空格,来保证数据实际是占有10个域宽。因为它是一个正数,所以向右靠齐,左补空格。
    如果以10.0f来输出这个数据。.0表示不输入它的小数位,因此小数位要进行四舍五入。33只占有2个域宽,所以要补上8个空格。来保证这个数据的位宽是占10个域宽。
    在这里插入图片描述在格式字符串中连续出现2个%,就表达,要输出一个%。
    d符号,表示变量a,以十进制整型格式来输出。然后,后面2个百分号,要输出一个百分号。
    在这里插入图片描述%f 告诉你,这个数据是有四个字节来保存单精度实型的数据的。
    %lf,告诉编译器,从这个地址开始的8个字节是用于保存一个双精度实型的数据的。因此在用SCANF输入数据的时候,仅仅给出变量的地址是不够的,还必须告诉编译器,从这个地址的开始的几个字节是用于保存这个数据的。这个工作时候用这个格式字符来告诉编译器的。
    换句话说,scanf需要用f和lf,来区分和保存数据是单精度实型的或者是一个双精度实型的。也就是说需要一个4个字节的存储空间,或者是需要一个8个字节的存储空间,来保存这个数据,但是用printf()来输出数据的时候,编译器自动将单精度实型的数据,转化为双精度实型的数据。
    这样prinft()就没办法区分单精度和双精度。因为单精度数据也被转化为了双精度实型。正因如此,所以Pintf()在输出数据的时候,是不区分单精度和双精度。因此只要用%f,就可以输出这两种可能的数据。
    在这里插入图片描述scanf有一个特殊的修饰符星号,星号表示抑制字符,也就是说输入的数据项在读入以后,不付给相应的变量,或者说跳过这个输入项。
    在这里插入图片描述假设我们在这条语句中,使用了%2d,那么当用户输入123456时,前面的%2d,就是将12赋值给
    在这里插入图片描述接下来是读入34,但是由于格式字符中出现了
    抑制字符,它表示跳过这个输入项,不赋值给任何变量,
    在这里插入图片描述在接下来在按照输入的指定位宽,读入一个56,将56赋值给b,这样化呢,a的值得到12,b的值得到56.
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值