1.浮点数
如何知道 " 身高5尺7寸"呢?
正常计算:(5+7/12)*0.3048=1.7018
计算机计算:计算身高的程序
#include <stdio.h>
int main()
{
printf("请分别输入身高的英尺和英寸"
"如输入\"5 7\"表示5英尺7英寸:");
int foot;
int inch;
scanf("%d %d", &foot, &inch);
printf("身高是%f米。\n",
((foot + inch / 12) * 0.3048));
return 0;
}
编译完这个程序运行后,通过运行结果可知:输入"5 7“时,身高是1.524000米,也就是英寸这个数值不起作用。
这是为什么????
因为:●因为两个整数的运算的结果只能是整数 (所以5英寸/12时,结果为零,小数点后面的数 不算)
●10/3*3=>?
●10和10.0在 C 中是完全不同的数
●10.0是浮点数
浮点数
●带小数点的数值。浮点这个词的本意就是指小数点是浮动的,是计算机内部表达非整数(包含分数和无理数)的一种方式。另一种方式叫做定点数,不过在 C 语言中你不会遇到定点数。人们借用浮点数这个词来表达所有的带小数点的数。
double
● inch 是定义为 int 类型的变量如果把 int 换成 double ,我们就把它改为 double 类型的浮点数变量了。
● double 的意思是“双”,它本来是“双精度浮点数”的第一个单词,人们用来表示浮点数类型。除了 double ,还有 float (意思就是浮点!)表示单精度浮点数。
那如何改进呢?
1.●将(foot + inch/12)*0.3048改为(foot + inch/12.0 )*0.3048
● 当浮点数和整数放到一起运算时,C会将整数转化成浮点数,然后进行浮点数的运算。
2.或者把 int foot; 改为 double foot;
int inch; double inch;
然后在scanf中的两个%d改为%lf
●%d+字母表示设后面输入的类型
数据类型
●整数
●int
● printf ("% d "…)
●scanf ('"% d "…)
●带小数点的数
●double (输入与输出不同)
● printf ("% f "…)
●scanf ("% If"…)
表达式
●一个表达式是一系列运算符和算子的组合,
用来计算一个值
amount = x *(1+0.033)*(1+0.033)*(1+0.033);
total =57;
count = count ,+1;
value =( min /2)* lastValue ;
运算符
●运算符( operator )是指进行运算的动
作,比如加法运算符“+”,减法运算符
“”。
●算子( operand )是指参与运算的值,这
个值可能是常数,也可能是变量,还可能是一个方法的返回值
eh:运算符 a=b+5. 其中a、b、5是算子,=、+是运算符。
计算时间差
●输入两个时间,每个时间分别输入小时和分钟的值,然后输出两个时间之间的差,也以几小时几分表示
int hour1,minute1;
int hour2,minute2;
scanf ("% d %d ", &hour1, &minute1);
scanf ("% d %d ", &hour2, &minute2):
如果直接分别减,会出现分钟借位的情况:1点40分和2点10分的差?
计算时间差
int hour1,minute1;
int hour2,minute2;
scanf ("% d %d ", &hour1, &minute1);scanf ("% d % d ", &hour2, &minute2);
int t1 = hour1 * 60 + minute1;
int t2 = hour2 * 60 + minute2;
int t =t2-t1;
printf ("时间差是% d 小时% d 分。", t /60, t %60);
● hourl *60+ minutel ->转换为分钟为单位
● t /60->小时部分 t %60->分钟