前言:昨天学习了c语言的运算符和表达式以及数据类型,今天将学习新的内容:输入输出,将输入与输出分为三个板块,简单学习它的概念与功能,重点学习四个函数(getchar,putchar,printf,scanf),了解四个函数的功能、返回值、函数的使用、占位符以及辅助控制符。
一、输入输出
- 概念:输入----->计算机------>输出
--------------------------------------------分隔符---------------------------------------------------------------------------
- 功能:
- c语言本身并不提供输入输出功能,使用的是c语言函数库中的”标准输入输出函数”
- c语言函数库提供了输入输出函数
- getchar/putchar---------操作一个字符
- gets/puts-----------------操作一个字符串
- scanf/printf--------------格式化的函数
- 需要加上<stiod.h>头文件
--------------------------------------------分隔符---------------------------------------------------------------------------
- 函数
- getchar
- 功能:从键盘获取一个字符
- 函数原型:int getchar (void)
注:void表示为空
- 返回值:表示获取到的字符的ASCII码值
- eg: int ret;
ret=getchar(); -------表示获取到getchar读取的字符的ASCII码值
- 练习:从键盘输入数字字符,将数字字符转换为数值输出’1’--->1
从键盘输入小写英文字母,并将小写英文字母转换为大写英文字母
--------------------------------------------分隔符---------------------------------------------------------------------------
- putchar
- 功能:输出一个字符
- 函数原型: int putchar (int c);
注:@ c-------表示要输出的字符
- 返回值
成功---------输出了的字符的ASCII码值
失败---------1
- eg: putchar(‘a’);
- 练习
从键盘输入hello转换为大写形式
--------------------------------------------分隔符---------------------------------------------------------------------------
- printf-------格式化输出函数
- printf (“格式控制字符串”, 输出参数列表);
eg: printf( “a=%d\n” , 10);
普通字符:原样输出
占位符:匹配后面的输出参数
- 函数原型: int printf (const char *formation , ... );
- 占位符
- 整型
- % d转换为有符号的十进制形式
- % u转换为无符号的十进制形式
- % o转换为八进制形式
- % x转换为十六进制形式
- % X转换为十六进制形式(a,b,c,d,e,f以大写形式输出, 0x中‘x’也会是大写)
- 浮点型
- %f转换为十进制形式的小数,输出时默认保留6位小数,不足位补0
- %e转换为科学计数法的形式
- %E转换为科学计数法的形式,指数形式的e变大写
- %g以一种更简洁的形式输出,同时不会输出无意义的0
- 字符型
- %c转换为字符形式输出
- %s转换为字符串形式输出
- %【辅助控制符】d
%#x ; %#o ————打印出八进制或十六进制的前缀
% m d; ————————表示要输出的数据的宽度,如果数据本身的宽度>m,此时按照实际宽度输出;如果数据本身的宽度<m,此时按照m的宽度输出,默认右对齐
%-md;————————按指定宽度输出,负号表示左对齐
%0md;————————多出来的位置可以填充0
%.2f——————表示保留2位小数
%.2e——————表示科学计数法保留2位小数
%s——————表示保留前n个字符
- 练习:
设a,b为int型变量,
x,y为float型变量,
c1,c2为char型变量,
且设a=5,b=10,x=3.5,y=10.8,c1=’A’,c2=’B’。
为了得到以下的输出格式和结果,
请写出对应的printf语句。
(1)a = 5, b = 10, x + y = 14.3
(2)x - y = -7.3, a - b = -5
(3)c1 = ’A’ or 65(ASCII) c2 = ’B’ or 66(ASCII)
--------------------------------------------分隔符---------------------------------------------------------------------------
(4).scanf-----格式化输入函数
- scanf(“格式控制字符串”,地址列表)
eg:Scanf(“a=%d”);
普通字符--------原样输入
占位符-----------将从键盘输入的数据转换成指定的格式
- 地址列表
eg: int a;
scanf(“a=%d”,&a);
- 辅助控制符
- % m d------数据宽度----输入宽度
- 输入的时候,要做到精确匹配
%f-----float %ld--------long
%lf----double %lld--------long long
%Lf-----long double
- 注意事项:
- Scanf格式控制字符串中尽量不出现普通字符,一般只写占位符
- Scanf的地址列表,一定要是有效地址
- Scanf输入结束的条件(匹配结束的条件)
- 遇到非法字符,匹配结束
- 遇到空白符,匹配结束(空白符:空格,回车,tab)
- 超过指定的宽度,匹配结束
- Scanf的格式控制字符串中,如果出现空白符,表示匹配任意多个空白符
- %*c表示匹配一个数据项,但是并不是把这个数据给任何一个变量中
- 练习:
编写程序从终端输入数据给到变量,
并打印变量的值
a = 3 b = 5 x = 8.5
y = 71.82 c1= 'A' c2 = 'a'
--------------------------------------------分隔符---------------------------------------------------------------------------
扩展学习:
- sqrt(); ------求根号
需要加上头文件#include<math.h>,在编译时需要链接,在后面加上lm,l---表示链接,m------表示math函数库
- 清楚缓存区