C语言学习—02 程序的输出与输入

本文详细介绍了C语言中scanf和printf函数的工作原理,包括格式控制字符串的使用,如何输入不同类型的数据以及输出控制。重点讲解了数据宽度、精度和输入输出的注意事项。
#include<stdio.h>
int main()
{
    int number;
    scanf("%d",&number);
    printf("请输入你的红包个数: \n);
    return 0;
}

         程序中使用scanf函数输入数据,scanf函数称为格式输入函数,即用户指定的格式从键盘上把数据输入到指定的变量中。scanf函数也是给变量赋值的一种方式。其使用格式为:scanf(格式控制字符串,地址列表);  其中“格式控制字符串”的含义与printf函数相同,用于指定数据的输入格式。地址列表是需要读入数据的各变量的地址,地址可以通过“&”运算符取得,如“&number”表示number的地址。格式字符与输入数据在个数和类型上要按顺序一一对应。  

   printf函数称为格式输出函数,除了可以固定信息外,还可以设置参数输出非固定内容,也就是将输出项的值以指定的特定格式显示。其一般形式为:printf("格式控制字符串",输出项) (如上述例子)   

C语言的数据输出/输入库函数分为两大类——字符输出/输入函数和格式输出/输入函数,其说明都在标准输入/输出头文件“stdio.h”中。C语言有严格的语法规则,编写代码时必须符合语法规则,否则不能运行程序,或者运行结果不正确。                                                                                            输入格式控制                                                                                                                                           输入函数除了通过简单的格式字符来控制输入的内容,还可以通过设置附加格式控制串控制更复杂的格式输入。在输入时,格式控制字符串中的非格式字符部分要按原样输入,格式字符的位置则需输入与之对应类型的数据。                                                                                                                scanf函数格式控制字符串中的非格式字符串是普通字符序列,而格式字符串由“%”和格式字符组成,还可以加入一些可选项,一般格式如下:                                                                                      %[*][输入数据宽度][长度]   格式字符                                                                                              其中有方括号"[]"的项为可选项,各项说明如下:                                                                         (1)格式字符:指定输入数据的类型;                                                                                           

格式字符含义(输入类型)
d输入十进制整数
o输入八进制整数(可以以0开头,也可以不以0开头)
u输入无符号十进制整数
x输入十六进制整数(可以以0x或0X开头,也可以不以此开头)
f、e、g输入实数(使用小数形式或指数形式,符号和小数部分可选)
c输入单个字符(输入时不加单引号)
s输入字符串(输入时不加双引号)

  (2)输入数据宽度:用十进制整数指定输入的宽度(即字符数)。如                                                            scanf("%5d",&a);----→输入“12345678”,只截取前5位12345赋予变量a。                                又如scanf("%4d%4d",&a,&b);----→输入“12345678”,把1234赋给a,把5678赋给b。                (3)*:表示该输入项读后不赋给相应的变量,即跳过该输入值。                                                        如  scanf("%2d*2d%2d",&a,&b);----→当输入123456时,把12赋给a,34跳过,再把56赋给b。(4)长度:长度格式符为l和h,l表示输入长整型数据(如%ld)和双精度实型数据(如%lf);h表示输入短整型数据。

输出格式控制                                                                                                                                             输出函数除了通过输出项来控制输出的内容外,还可以通过设置格式控制串,显示不同格式的内容。printf函数能够按照用户指定的格式输出多种类型的数据。其使用格式如下:                                printf(格式控制字符串);                                                                                                                    printf(格式控制字符串,输出列表);                                                                                                其中,“格式控制字符串”是用双引号(" ")括起来的字符串,输出列表可有多个输出值,也可以没有(当只输出一个字符串时)。一般情况下,格式控制字符串包含两部分:格式转换说明符和需要原样输出的普通字符(包含转义字符)。格式转换说明符由“%”开头,并以格式字符结束。格式转换说明符是用来表示输出过程中待填充的值的占位符,跟随在字符“%”后边的信息指定了把数值从内部形式(二进制)转换成输出形式的方法,如下表printf函数格式转换说明符

printf函数格式转换说明符
格式转换说明符用法
d以十进制形式输出带符号整数(默认正数不输出符号)
o以无符号八进制整数形式输出(默认不输出前缀0)
x或X以无符号十六进制整数形式输出(默认不输出前缀0x)
u以无符号十进制整数形式输出
f以十进制小数形式输出实数(包括单、双精度),整数部分全部输出,隐含输出6位小数,输出数字并非都是有效数字。适合输出如3.14这样的小数位较少的实数,可以使实数输出宽度较小
e或E以指数形式输出实数,要求小数点前必须有且仅有1位非零数字,适合输出如 1.0e+10这样的小数位较多的实数,可以是实数输出的宽度较小
g或G以%f或%e中输出宽度较短的形式输出单、双精度实数,且不输出无意义的0
c输出单个字符
s输出字符串
%输出百分号

     输出列表是需要输出的数据项列表,输出数据项可以是常量、变量或表达式,输出值参数之间用逗号分隔,其类型应与格式转换说明符相匹配。每个格式转换说明符和输出列表中输出值参数一一对应,没有输出值列表时,格式控制字符串中不再需要格式转换说明符。完整的格式说明部分还可以加入一些修饰符,格式如下:                                                                                                               %[标志] [域宽] [.精度] [长度]格式字符                                                                                           其中“[ ]”为可选项,说明如下。                                                                                                                (1)标志: 可用-、+、空格、#、和0 5种标志字符,如下                                                         

标志字符及其含义
标志字符含义
-结果左对齐,数据长度小于域宽时右侧补充空格
+输出符号(正号或负号)
空格输出值为正数且没有输出正号时冠以空格
#只对部分类型格式字符有影响;对o类,在输出时加前缀0;对x类,在输出时加前缀0x;对e、g、f类,当结果有小数时才显示出小数点
0数据长度小于域宽时,不足位数用0补充

   (2)域宽:指定数据显示在输出设备上所占的总宽度。若数据的实际位数多于指定宽度,则按实际位数输出;若实际位数少于指定宽度,则数据通常会在指定宽度内右对齐,不足部分以空格(或指定以0)补齐。                                                                                                                            (3)精度:精度格式符以“.”开头,后跟十进制整数,用于指定数据输出的精度。如果输出值为整数,则表示可以输出数字的最少个数,若整数位数少于指定精度,就在整数前面加0,补齐指定的最少数字个数;如果输出值为实数,则表示小数的位数(小数部分四舍五入),默认为6位;如果输出的是字符串,则表示输出字符的个数。                                                                                         (4)长度:长度格式符有h、I和L共3种,h用于格式转换说明符d、i、o、u、x,表示按短整型输出;I用于格式转换说明符d、i、o、u、x,表示按长整型输出;L用于格式转换说明符f、e、g,表示按长双精度输出。

使用scanf函数时容易与printf函数混淆,必须注意以下几个方面的问题。                             (1)scanf函数中没有精度控制。例如,scanf("%5.2f".&a);是非法的,不能用此语句输入小数位数为2位的实数。                                                                                                                            (2)scanf函数中要求给出变量地址,如果给出变量名则不会正确赋值。例如,scanf("%d”,a);是错误的,应改为scanf("%d”,&a);。                                                                                                (3)在输入多个数值数据时,若格式控制串中没有非格式字符作为输入数据之间的间隔,则可用空格、Tab或Enter作为间隔。在遇到空格、Tab、Enter或非法数据(如对“%d”输入“12A”时,A即为非法数据)时即认为该数据结束。                                                                                                       (4)在输入字符数据时,若格式控制串中无非格式字符,则认为所有输入的字符均为有效字符。例如:scanf("ccc",&a,&b,&c);当输入为def(即d空格e空格f)时,则把“d”赋给a,“”(空格)赋给b,“e”赋给c。只有当输入为def时,才能把“d”赋给a,“e”赋给b,“f”赋给c。如果在格式控制中加入空格作为间隔,如scanf("%c%c%c"&a.&b.&c);,则输入时各数据之间可加空格作为间隔。                        (5)scanf函数不显示提示信息,如果格式控制串中有非格式字符,则输入时也要输入该非格式字符,例如:inta,b;                                                                                                                             scanf("a=d,b=d",&a,&b);                                                                                                              若需要分别将10和20输入a和b,则用户需要输入a=10,b=20    因此,在使用scanf函数时应少用或不用非格式字符,避免增加输入时的字符输入量。需要显示的提示信息应使用printf函数来完成。

字符输出/输入函数                                                                                                                                    (1)字符输出函数                                                                                                                            putchar函数是c语言提供的标准字符输出函数。其作用是在系统约定的输出设备上输出一个字符。该函数的调用格式如下:                                                                                                                       putchar(参数);                                                                                                                        参数可以是一个字符变量或整型变量,也可以是一个字符型常量(包括控制字符和转义字符)等。如  char c;                                                                                                                                                 putchar(c);                                                                                                                                      它输出字符变量c的值。c可以是字符型变量或整型变量。                                                                 (2)字符输入函数                                                                                                                               getchar函数是C语言提供的标准字符输入函数。其作用是从键盘上读取一个字符。该函数的调用格式如下:                                                                                                                                             getchar();                                                                                                                                          本函数不带任何参数,函数返回值是输入字符的ASCII码值。    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值