继续上次的内容。
数据的基本操作:键盘输入和屏幕输出。在C语言中通过函数调用来实现输入输出。
格式:printf(格式控制符字符串,输出项表),比如printf("a(普通字符,原样输出)=%(是指输出数据格式)d(转换说明),a(可变长度的输入参数表与格式说明符一一对应),b")。
常用格式字符:
%d:输出十进制有符号int型。
%n:输出十进制无符号int型。
%f:以小数形式(6位小数),输出float,double。
%e:以标准指数形式输出float,double。比如float b = 10.3;printf("%e",b);最后输出的形式是1.030000e+001(是指乘以10de3次方)。
%c:以字符形式输出单个字符。
修饰符:
l:加d、u前输出long型。比如long a = 10;printf("%ld",a);最后输出10。
L:加f、e前输出long double型。
d:加d、u前输出short型。
m:输出数据的最小位宽(小数点也算以为)。数据位宽大于m,按实际尾款输出;数据位宽小于m,右对齐,左补空格。比如printf("value is = %10f(最小位宽修饰)",32,6784728);,在这里占了10个宽度,f占的小数点6位,所以是6位小数,小数点还算一位,所以是9位,需要在3前加和空格部位。;数据位宽处于-m,左对齐,右补空格。
显示精度.m,对浮点数表示输出的n位小数。格式;%.nf。比如printf("value is = %.3f",32,6784728);最后显示是value is = 32.6785(这里需要四舍五入)。
格式化输入:
scanf(格式控制字符,输入地址表)。比如scanf("%d%f",&(取地址符)a(可变长度,输入地址参数表),&b)。
注意不使用&就是未初始化,格式字符是告诉有多少字节,写错的话最后数据可能就不能正确读入了。
遇到一下情况认为一个数据的输入结束:
1、空格、tab或回车。
2、达到输入位宽的限制。
3、遇到非法字符。
scanf("%2d%2d",&a,&b);从输入数据中截取两个位宽作为输入数据,如果输入非数值字符即停止输入,将非数值字符按正确格式输出。
scanf("%d,%d",&a,&b);在控制台输入时,逗号也要按照原样输入,如:12,34.注意普通字符也要按原样输入。
%c:输入一个字符,回车空格也算。
%d:输出十进制int型。
%f、%e:输入float数(不能指定精度)。
%%:输入一个%。
*:输入项再读入后赋值给任何一个变量。比如scanf("%2d%*2d%2d",&a,&b);输入的是123456的话,输出就是12和56.
常见错误:
scanf("%7.2(不能指定精度,位数可以)f",&a);scanf("%f\n(不能加换行符,会导致输入错误)",&a);scanf("%f",a(不能指定a的地址,会导致输出乱码,类型要与输出匹配))。
m:输入数据的位宽。
l:加d、u前输入long型;加f、e前输入double型。
L:加f、e前输入long double型。
h:加d前输入short型。
写个代码:
#include <stdio.h> //标准输入输出头文件。h是头文件,stdio有许多函数信息,需要包含进来才能使用。
main()
{
const double pi = 3.14159;
double r;
double circum;
double area;
printf("Input ri");
scanf("%lf",&r);
circum = 2 * pi * r;
area = pi * r * r
printf("输入个数:\n");
printf("circum ference=%f,area=%f\n",circum,arae);
printf("再输入个数:\n");
printf("circum ference=%7.2f,area=%7.2f\n",circum,arae);
}
用%lf读入双精度实数,输出时%f就表示float和double不用区分;
调用sancf()输入数据时,通过地址指向变量;
%f告诉编译器scanf()在该地址存储一个float型数;
%lf告诉编译器scanf()在该地址存储一个double型数;
调用printf()输出数据时,编译器将float参数自动转化为double类型;
printf()无法区分float和double,所以输出时不需要区别单精度还是双精度。
*又是抑制字符。比如scanf("%d%*c%d",a,b);两个值的输入中间不论以什么字符进行读入都无所谓。
以上就是今天所学习的内容了,如有错误欢迎留言指正。