#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函数格式转换说明符
| 格式转换说明符 | 用法 |
| 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码值。
本文详细介绍了C语言中scanf和printf函数的工作原理,包括格式控制字符串的使用,如何输入不同类型的数据以及输出控制。重点讲解了数据宽度、精度和输入输出的注意事项。
4万+

被折叠的 条评论
为什么被折叠?



