计算(数据类型)
编写一个英制和公制换算的程序如下:
#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; }
对函数foot、inch赋值7 2:
$ cpp main.c -o main.ii $ cc main.ii -o main $ ./main 请分别输入身高的英尺和英寸,如身高5英尺7英寸,则输入(5 7)7 2 身高是2.133600米 Program exited with status 0
对函数foot、inch赋值7 9:
$ cpp main.c -o main.ii $ cc main.ii -o main $ ./main 请分别输入身高的英尺和英寸,如身高5英尺7英寸,则输入(5 7)7 9 身高是2.133600米 Program exited with status 0
上述程序发现,inch变量赋值后再运算中没有起到作用,原因是两个整数的运算结果只能是整数,小数点后的内容被程序丢弃,在运算inch/12的过程中,输入的inch的值小于12,运算结果为0.xxxx,小数点后被丢弃后,inch/12的运算结果为0。
#include <stdio.h> int main() { printf("%d\n",10/3*3); return 0; }
$ cpp main.c -o main.ii $ cc main.ii -o main $ ./main 9 Program exited with status 0
C语言中,10和10.0是两个不同概念,包含小数点的数字称为浮点数。
浮点数表示带有小数点的数值。
整数和浮点数进行运算时,C语言会把整数转换为浮点数在进行浮点数运算。
上述的错误表示有两种改法。
1.浮点数:
#include <stdio.h> int main() { printf("输入身高英尺 英寸"); int foot; int inch; scanf("%d %d",&foot,&inch); printf("身高是%f米",(foot+inch/12.0)*0.3048); (使用浮点数12.0和%f) return 0; }
$ cpp main.c -o main.ii $ cc main.ii -o main $ ./main 输入身高英尺 英寸5 7 身高是1.701800米Program exited with status 0
2.类型
在错误的写法中,foot和inch都是int的变量类型,整形的变量类型只能表示整数。
因为整数和浮点数进行运算时,C语言会把整数转换为浮点数在进行浮点数运算,所以只用修改inch/12中的其中之一,就可以进行浮点数的运算。第一种方式是将整数12改为浮点数12.0。也可以将inch的类型从整形改成浮点数类型。
double是双精度浮点数的第一个单词,可以表示浮点数类型。(除了double,float表示单精度浮点数。)
#include <stdio.h> int main() { printf("输入身高英尺 英寸"); double foot; double inch; scanf("%lf %lf",&foot,&inch); (使用%lf表示输入一个浮点数) printf("身高是%f米",(foot+inch/12)*0.3048); return 0; }
$ cpp main.c -o main.ii $ cc main.ii -o main $ ./main 输入身高英尺 英寸5 7 身高是1.701800米Program exited with status 0
注意:
整数int输入输出都使用%d
浮点数double输入scanf使用%lf,输出printf使用%f。

浙公网安备 33010602011771号