2.2 顺序结构
2.2.2 使用scanf和printf输入/输出
1.scanf函数的使用
scanf
是输入函数,其格式如下:scanf("格式控制",变量地址);
举个例子:scanf("%d",&n);
在C语言中,变量在定义之后,就会在计算机内存中分配一块空间给这个变量,该空间在内存中的地址称为变量的地址。为了得到变量的地址,需要在变量的前面加上一个&(称为取地址运算符)
,也就是&变量名
的写法
数据类型 | 格式符 | 举例 |
---|---|---|
long long | %lld | scanf(“l%ld”,&n); |
double | %lf | scanf("%lf",&db); |
注意:数组比较特殊,数组名本身就代表了这个数组的第一个元素的地址,所以不需要再加取地址运算符
另外,如果要输入“3 4”这种用空格隔开的两个数字,两个%d之间可以不加空格
另外,字符数组使用%s
读入时使用空格跟换行为读入结束的标志
再次强调,scanf
的%c
格式是可以读入空格和换行的
2.printf函数的使用
在C语言中,printf
函数用来输出,与``scanf函数类似,
printf函数的格式如下:
printf(“格式控制”,变量名称);
数据类型 | 格式符 | 举例 |
---|---|---|
double | %f | printf("%f",db); |
对于double类型的变量,其输出格式变成了%f
,而在scanf
中却是%lf
,在有些系统中如果把输出格式写成%lf
倒也不会错,不过尽量还是按标准来
另外,如果想输出%
or \
,you need to add a %
or \
before it, for example:
printf("%%");
printf("\\");
最后介绍三种实用的输出格式,另外一些格式在平时并不常用,此处不再赘述
(1) %md
%md
可以使不足m位的int型变量以m位进行右对齐输出,其中高位用空格补齐;如果变量本身超过m位,则保持原样
(2)%0md
%0md
,当不足m位时,将在前面补足够数量的0而不是空格
(3)%.mf
%.mf
可以让浮点数保留m位输出
2.2.3 使用getchar和putchar输入/输出字符
getchar
用来输入单个字符,putchar
用来输出单个字符,在某些scanf
函数使用不便的场合可以使用getchar
来输入字符
#include<stdio.h>
int main()
{
char c1,c2,c3;
c1=getchar();
getchar();
c2=getchar();
c3=getchar();
putchar(c1);
putchar(c2);
putchar(c3);
return 0;
}
输入数据:abcd
输出数据:acd
此处的第一个字符a
被c1
接收;第二个字符b
虽然被接收,但是没有将它存储在某个变量中
第三个字符c
被c2
接收;第四个字符d
被c3
接收。
而如果输入ab
,然后按Enter
键,再输入c
再按Enter
键,输出结果会是这样:
a
c
这是因为getchar
能够识别换行符
2.2.5 typedef
可以给复杂的数据类型起一个别名。例如,当数据类型是long long
时,就可以像下面的例子这样用LL来代替long long
,以避免因在程序总出现大量的long long
而降低编码效率
#include<cstdio>
typedef long long LL; //给long long 起个别名
int main()
{
LL a=123456789012345LL , b=234567890123456LL; //直接使用LL
printf("%lld\n",a+b);
return 0;
}
2.2.6 常用math函数
1.fabs(double x)
该函数用于对double
型变量取绝对值,示例如下:
#include<stdio.h>
#include<math.h>
int main(){
double db = -12.56;
printf("%.2f\n",fabs(db));
return 0;
}
2.floor(double x)和ceil(double x)
这两个函数分别用于double型变量的向下取整和向上取整,返回类型为double
3.pow(double r,double p)
该函数用于返回r^p
,要求r和p都是double型
4.sqrt(double x)
该函数用于返回double
型的算术平方根
5.log(double x)
该函数用于返回以自然对数为底的对数
C语言中没有以任意数为底的对数函数,因此需要使用换底公式来将对数进行转换,换底公式为:log(a)(b)=log(e)(b)/long(e)(a)
6.sin(double x),cos(double x),tan(double)
该函数表示正弦,余弦,正切值,并且参数均为弧度制
7.asin(double x),acos(double x),atan(double x)
该函数分别表示反正弦,反余弦,反正切,参数值均为弧度制
8.round(double x)
该函数用于将double型变量进行四舍五入,返回类型也是double型,需要进行取整