求以r为半径的圆周长l和圆面积s,再求以r为半径的圆球体积v。
#include<stdio.h> 在程序运行过程中其值
#define PI 3.1415926 保持不变的量程为常量
int main() Pl-符号常量
{ int r=4;——字面常量
float l,s,v;
l=2PIr; //等价于l=2*3.1415926*r;
s=PI*r*r; //等价于s=3.1415926*r*r;
v=4.0/3*PI*r*r*r;//等价于v=4.0/3*3.1415926*r*r*r;
printf("l=%f\ns=%f\nv=%f\n",l,s,v);
}
符号常量
一般用大写字母表示,而变量一般用小写字母表示。
符号常量使用之前必须预先定义,其定义格式为
#define 标识符 常量
例如:#define PI 3.14159
注:#define不是造句,语句后无分号
#define是一个“预编译命令”
优点:1.含义清晰易懂;
2.易于修改:在需要改变一个常量时能做到“一改全改”;
3.用符号常量能保护所替代的数据不被破坏。
实型数据的运算举例
例2.2 分期付款的计算。张先生为购房,向银行贷款,贷款额为d元,每月准备还 p元,月利率为r,求需要多少个月才能 还清。
m=[log(p)-log(p-d*r)]/log(1+r)
m是还清贷款所需月数 d=324500,皮245,r=0.8%。
1.d和p是整数,r是一个小数,因此程序中要分别定义整型变量和实型变量。
2.公式中用到对数log,这个对数是以10为底的。对数log的函数log10。
#include<stdio.h>
#include<math.h> 用到数学函数时
int main()
{ int d,p; 定义整型变量d,p month=201.983404
float r,m; 定义是型变量r,m total=655436.127930
d=324500,p=3245; 定义变量时赋初值
double r=0.008,m; 定义double型无警告错
m=(log10(p)-log10(p-d*r))/log10(1+r); 求m的值
printf("month=%f\n",m); ——输出实数时 输出m的值
printf("total=%f\n",m*p); 计算并输出还款数
return o;
}
实型数据
一、浮点型常量:浮点型常量有两种表示形式。
1.十进制小数形式
它是由数字和小数点组成,如:3.14159,-7.2,8.9
2.指数形式
如:180000.0用指数法可表示为1.8e5,1.8称为尾数,5称为指数。
0.00123用指数可表示为1.23E-3
注意:
1.字母e或E的前后都必须有数字。
2.字母e或E前面的是尾数部分。
3.e或E后面的是指数部分,必须是整数。
如:e-3,5e,9.8e3.1都是不合法的。
实型变量按能表示数的精度分为:单精度型、双精度型和长双精度型。定义方法如下:
float a,b; /*单精度变量的定义*/
double c,d; /*双精度变量的定义*/
float a,b; /*单精度变量的定义*/
long double e,f; /*长双精度变量的定义*/
实型常量的类型
C语言中一般将实型常量作为双精度来处理。
可在数的后面加字母f或F来表示其为单精度型(float),如3.1415f。
加字母l或L来表示其为长双精度型(long double),如3.1415L。
#include<stdio.h>
int main() 运行结果
{ c=3.000000
float a,b,c; //定义实型常量a、b、c
a=1.0; //给变量a、b、c赋值
b=2.0;
c=a+b;
printf("c=%f",c); //输出变量c的值
return 0;
}
实型数据的舍入误差
虽然实型数据的表示形式有两种,但是在内存中均是以指数形式存放。
数符| 小数 |阶符|指数
如数据超过有效位,则被舍去,故可能产生误差。
#include<stdio.h>
int main()
{ float a;
a=1234.1415926; a=1234.141602
printf("a=%f\n",a); 7位有效位
return 0; 最好:double a;
} (单精度)a=1234.1415926;(双精度) 编译时有警告
#include<stdio.h> 运行结果
int main() a=1234567892.000000
{ b=12345678848.000000
float a,b,c; c=12345678848.000000
a=123456789.123; 有效数字位数:7
b=123456.789e5;
c=b+20;
printf("a=%f\nb=%f\nc=%f\n",a,b,c);
return 0;
}