这篇文章和大家分享一下C语言程序的输入与输出,具体包括C语言语句,格式化输出printf函数,格式化输入scanf函数以及单个字符输入和输出。希望能加深大家对于这些内容的理解,尤其是对于printf函数和scanf函数的格式指示符,格式化字符串的了解,帮助大家完善对于C语言知识的知识框架梳理。
目录
1.C语言语句
1.1控制语句
1.2函数调用语句
1.3表达式语句
1.4空语句
1.5复合语句
2.格式化输出
2.1pritnf函数的一般形式
2.1.1格式化字符串
2.1.2输出项表
2.2使用说明
3.格式化输入
3.1.scanf函数的一般形式
3.1.1格式化字符串
3.1.2输入项地址表。
3.2格式指示符
3.2.1scanf函数中使用的格式字符
3.2.2宽度修饰。
3.2.3抑制修饰符。
3.2.4长度修饰符
3.3 注意事项
3.3.1如果两个相邻格式指示符之间不指定数据分隔符,则输入相应的数值类型数据(即整形数据或实型数据,不包含字符数据)时,输入完第一个数据,直接按空格键,或Tab键,或者回车键(每个键也可以按多次)即可输入第二个数据。
3.3.2格式字符中出现的普通字符,必须按原样输入。
3.3.3为了提高人机的交互性,同时简化输入的操作,设计程序时,一般先用printf函数显示提示信息,再用scanf函数进行数据输入。
3.3.4输入数值型数据时,系统默认数据的输入结束情况:
3.3.5使用格式字符“%c”时,空格键和回车键等均作为有效字符被输入。
4.单个字符的输出和输入
4.1putchar函数
4.2getchar函数
4.3注意事项
C语言程序是通过可执行语句,向计算机系统发出操作指令的。根据功能或结构的不同,可执行的C语言语句分为以下五类:控制语句、函数调用语句、表达式语句、空语句、符合语句。
控制语句可以完成一定的控制功能。C语言共有9中控制语句:
①if;
②switch;
③for;
④while;
⑤do;
⑥goto;
⑦break;
⑧continue;
⑨return;
其中①②称为选择控制语句;③至⑤称为循环语句;⑥至⑨称为辅助控制语句。这些控制的语句的命名就属于浅显易懂的那种,①②很明显是进行判断的选择语句,③至⑤则是循环语句的标志,⑥至⑨则可以镶嵌到前面五种控制语句中,改变语句运行方向。
函数调用语句由一个函数调用加一个分号(语句结束标志)构成。
Pow(x,n);
上面就是一个函数调用语句的基本格式。不过,这里没有Pow函数的具体定义,大家清楚即可。
表达式语句由表达式和其后面的分号构成。表达式能构成语句是C语言的一个特色。C语言中最典型的语句是赋值表达式后加一个分号构成的赋值语句。如下:
int a = 5;
floaat b = 9.00;
只有一个分号的语句,称为空语句。空语句不执行任何操作。
以上四种也算是一个大类型——简单语句,与复合语句相对应。
复合语句由一对花括号括起来的一组(也可以是一条,不过一般情况下一条的话,没必要用花括号)可执行语句构成(也可包括数据说明部分,如变量的定义)。
C语言允许一行多条语句,有时也可以将一条语句拆开,写在多行上。C语言书写格式无固定要求,但建议每行只写一条语句,并采用缩进格式。良好的代码习惯有助于我们查看代码,进行调试,提高效率,而且在项目合作中能方便合作者查看,避免内部矛盾。
C语言中没有提供专门输出的输出语句。程序的输出一般是通过C语言的库函数实现的。printf函数是最常用的输出函数。其作用是按照一定的格式,向计算机默认的输出设备(一般指显示器)输出一个或多个指定的数据。
调用printf函数的一般形式为
printf("格式化字符串",输出项表);
即用双撇号括起来的字符串,也称为格式控制字符串或格式转换字符串。格式化字符串里可以包含两类字符
①普通字符:分为可打印字符和转移字符。
可打印字符主要指一些说明字符,这些字符按原样显示在屏幕上。如果系统有汉字系统支持,还可以输出汉字字符。
转移字符是不可打印字符,通常用来控制光标位置。如,"\n"的作用是在输出时将光标移动到下一行的开始处。
②格式指示符:由“%”和格式字符组成。其作用将输出的数据,按照指定的格式输出。格式指示符的一般形式为
% [修饰符] 格式字符
常用的格式字符有以下7种:
d格式符:按照十进制形式输出基本整型数据。
o格式符:按照八进制形式输出基本整型数据。
x格式符:按照十六进制形式输出基本整型数据。
f格式符:按照小数形式输出实型数据。
e格式符:按照指数形式输出实型数据。
c格式符:按照字符形式输出单个字符。
s格式符:输出字符串。
方括号“[ ]”中的“修饰符”部分是可选的。修饰符包括长度修饰符、宽度修饰符和精度修饰符。
长度修饰符用英文字符“l”表示。当输出长整型整数或者双精度实型数据时,需要加上长度修饰符,对应的格式指示符“%ld”和“%lld”。
若对小数形式的实型数据的宽度和精度进行限制时,需要用“%m.nf”或“%m.nlf”表示。其中m,n都为整数。m用于指定数据的宽度(小数点本身占输出数据的一位),若输出时,数据的宽度本身时不够m位,在数据的左(m>0时)或右端(m>0)时补空格。否则,数据按原样输出(朋友们,这里的“否则”其实就是在说数据宽度大于等于m位时,即如果m位小于数据本身的宽度,则不会对数据进行截断,而是原样输出,望谨记)。n用于小数位的位数,输出时,在小数位的第n+1位四舍五入,保留n位小数。(若数据小数位小于n,补零即可)
若对指数形式的实型数据的宽度和精度进行限制时,需要用“%m.ne”表示。其中m,n都为整数。m用于指定数据的宽度(小数点、字符e、指数的符号,各占输出数据的一位),若输出时,数据的宽度本身时不够m位,在数据的左(m>0时)或右端(m>0)时补空格。否则,数据按原样输出(朋友们,这里的“否则”其实就是在说数据宽度大于等于m位时,即如果m位小于数据本身的宽度,则不会对数据进行截断,而是原样输出,望谨记)。n用于小数位的尾数(基数e或E前面的数字部分),输出时,在小数位的第n+1位四舍五入,保留n位尾数。(若数据尾数位小于n,补零即可)
若同时控制实型数据的宽度和精度,先保证数据的精度,然后控制数据的宽度。这里是对上面红色内容的一个简单说明,即精度优先保证,再控制宽度。
整型数据没有精度限制。若对基本整型数据或长整型数据的宽度有限制时,需要用“%md”或“%mld”。其中,m是整数,用于控制输出整数的宽度。若输出时,数据的宽度本身不够m
位在数据的左(m>0时)或右端(m>0)时补空格。否则,数据按原样输出(朋友们,这里的“否则”其实就是在说数据宽度大于等于m位时,即如果m位小于数据本身的宽度,则不会对数据进行截断,而是原样输出,望谨记)。
由零个、一个或者多个需要输出的数据项构成。输出的数据项的个数应该与格式指示符的个数一致。输出的每一个数据项可以是一个原子表达式(即可以是一个常量,也可以是一个变量),也可以是一个复合表达式。每一个表达式的数据类型都应该与其对应的格式指示符所指示的数据类型一致。
①如果格式化字符串是多组双撇号括起来的字符串,则自动顺次连接为一个字符串。
②pritnf函数可以输出原子表达式或者符合表达式的值。但格式化字符串中的格式指示符必须按从左到右的顺序,与输出项表中的各个表达式一一对应。否则,有可能输出错误的结果。
③若字符型值按照“%d”格式输出,则输出的是该字符对应的ASCII码值。
④格式字符紧跟在“%”后面才可能成为格式指示符的一部分,否则将作为普通字符原样输出。
与输出相同,C语言中没有提供专门输入的输入语句。程序接受输入,主要是通过C语言库函数实现的。scanf函数是最常用的输入函数,其作用是由键盘向程序输入数据。
调用scanf函数的一般形式为
scanf("格式化字符串",输入项地址表);
可以包含:格式指示符、空白字符(空格、Tab键、回车键)和非空白字符。格式指示符用来指定数据的输入格式;空白字符作为相邻输入数据的默认分隔符;非空白字符表示表示在输入有效数据时,必须原样输入的字符。
由若干个变量的地址组成,相邻两个变量的地址之间用逗号分开。
变量地址的表示方法为“&变量名”
格式字示符的一般形式
%[修饰符]格式字符
宽度修饰用来指定输入数据占用的列数。(在输入的一列数据中读取指定个数赋值给对应变量)
一般我们在输入两个数据时,会使用空白符作为分隔符。由上图易知,如果我们限定宽度的话,输入时无需添加空白符,系统读到指定列数也会自动停止,然后根据指示符再往下读。大家可以参照上面代码,自行尝试,加深理解。
当输入一个数据但不赋予任何变量时,可以在“%”和格式字符中间加一个“*”。
结合上面的解释,加上两张图中结果的比较,相信大家应该会对抑制修饰符有了认识。
在输入长整型数据或者双精度实型数据时,必须使用长度修饰符“1”,否则得不到正确的值。
①遇到空格,或者Tab键,或者回车键。
②按指定的宽度结束。即刚才演示过的宽度限制,只读取指定宽度。
③遇到非法输入。比如,输入数值型数据时遇到非数值符号。
在C语言中,除了printf函数和scanf函数可以用于输入和输出数据外,还有专门用于单个字符输入和输出的函数。
putchar函数也称为单字符输出函数。其作用是由程序向计算机终端输出一个字符。
getchar函数也称为单字符输入函数。其作用是从系统指定的输入设备输入一个字符。
①getchar函数一次只能接受一个字符。getchar函数得到的字符,可以赋值给一个字符变量,也可以不为任何变量赋值,而作为表达式的一部分。
②如果程序中使用了getchar函数或者putchar函数,应该在源文件的顶部加上文件包含命令。