键盘输入与屏幕输出
1.数据的格式化屏幕输出
1.1取值范围(由小到大):char,short--->int--->unsigned int--->long--->unsigned long--->float--->double--->long double
c语言进行以上类型的变量的计算或赋值运算时,取值范围小的会先转化为取值范围大的,然后再进行运算(这里用词可能不标准,但是这个意思)。
1.2输出:printf()函数,如printf("%d",a)
%d:十进制有符号int型(decimal)
%u:十进制无符号int型(unsigned)
%f :以小数形式(默认6位小数)输出float,double型 (float)
%e:以标准指数形式输出float,double型 (exponent)
%c:以字符形式输出单个字符(char)
%ld:有符号long ; %lu:unsigned long
%hd:有符号short ; %hu:unsigned short
m:输出数据的最小位宽,如:%10f表示位宽为10,以浮点数形式输出
(1)数据位宽大于m:按实际的位宽输出
(2)数据位宽小于m:<1> m:右对齐,左补空格 ,如:%10f:32.6784728 则输出为 _32.678473 (四舍五入原则)
<2> -m:左对齐,右补空格, 如:%-10f:32.6784728 则输出为 32.678473_
%.nf:对浮点数输出n位小数 ,如:%10.4f:32.6784728 则输出为 _ _ _32.6785
%m.nf:位宽为10,输出n位小数
输出%:前面+%,如:printf("%d%%",a);//输出为 10% (设int a = 10)
2.数据的格式化键盘输入
scanf(格式控制字符,输入地址表),如:scanf("%d%f",&a,&b)
(1)指定的格式字符要与输入的变量类型匹配
(2)以下三种情况认为输入结束: <1>回车、Tab或空格 <2>达到输入位宽 <3>遇到非法字符
(3)特殊情况:scanf("%2d%2d",&a,&b); //输入1234,输出仍然是 a = 12,b = 34 因为指定了位宽
(4)格式字符串中的普通字符原样输入,如:scanf("%d,%d",&a,&b); //输入应为:12,34
(5)输入时不能指定小数形式的精度(位宽可以指定),scanf()也不能输入换行符,如:scanf("%10.4f",&a); 这个语句会报错
(6)*表示输入项在读入后不赋给相应的变量, 如:scanf("%2d%*2d%2d",&a,&b); //若输入为123456,则输出为 a = 12, b = 56
【标注】:scanf()在输入时区分float型和double型,float型用%f,double型用%lf;
printf()在输出时,float型和double型均用%f,这是因为编译器将float参数自动转换为double型,因此,printf()无法区分float和double。
3. 单个字符的输入输出
(1) 字符常量:用单引号括起来的一个字符
(2)转义字符:特殊形式的字符常量 ,如 '\n'表示换行,'\t'表示回车
(3)字符在内存中的存储:其对应的ASCII码的二进制值
【注】 \r 是return的简写,表示光标重新回到本行开头。其缩写CR是carriage return就是回车的意思。
\n 是new line的简写,表示光标垂直向下移动一行。其缩写LF是Line Feed就是换行的意思
Unix系统里,每行结尾只有“<换行>”,即"\n";
Windows系统里面,每行结尾是“<换行><回车>”,即“\r\n”;
Mac系统里,每行结尾是“<回车>”,即"\n";。
(4)字符输出函数putchar(ch):向屏幕输出一个字符或字符型变量ch的值
(5)字符输入函数getchar():如,ch = getchar(); //从键盘接受的字符作为getchar()的函数值
【例】大写字母转化为小写字母(ASCII码值相差32)
#include<stdio.h>
int main()
{
char ch;
printf("press a key and then enter:");
ch = getchar();
ch = ch + ('a' - 'A');
putchar(ch);
putchar('\n');//由于putchar只能输出字符,所以用单引号
//输出函数还可以是:printf("%c,%d",ch,ch) ,分别输出字符和其对应的ASCII码的值
return 0;
}