我们先来写一个程序, 打印英里与公里之间的对应关系表. 公式: 1 mile=1.61 km
程序如下:
- #include <stdio.h>
- /* print Mile to Kilometre table*/
- main() {
- float mile, kilometre;
- int lower = 0;//lower limit
- int upper = 1000;//upper limit
- int step = 30;//step size
- printf("Mile Kilometre\n");
- mile = lower;
- while (mile <= upper) {
- kilometre = 1.61 * mile;
- printf("%3.0f %6.1f\n", mile, kilometre);
- mile = mile + step;
- }
- }
在 CLion 中按下 shift + F10 进行编译运行代码哦 O(∩_∩)O~
如果在 Clion 中出现 error: ld returned 1 exit status, 可能是因为之前程序还在运行导致的, 只要关闭这个程序, 重新执行即可.
输出结果:
下面我们对这段示例代码进行分析:
/* print Mile to Kilometre table*/
/* */ 表示多行注释;// 表示单行注释; 注释之间的字符序列会被编译器忽略. 良好的注释, 使得程序更便于理解.
float mile, kilometre;
所有变量都必须先声明后使用, 通常在函数起始处声明变量. 声明是由类型名与变量名组成.
类型名 | 说明 |
---|---|
short | 短整型 |
int | 整型 |
long | 长整型 |
char | 字符型 |
float | 单精度浮点型 |
double | 双精度浮点型 |
这些数据类型的大小取决于具体机器.
- int lower = 0;//lower limit
- int upper = 1000;//upper limit
- int step = 30;//step size
这里在定义变量的同时, 为它们设定了初始值.
- while (mile <= upper) {
- ...
- }
正确的缩进以及保留适当的空格, 可以有效地提升程序的易读性. 在 CLion 中, 可以使用 ctrl + shift + L, 对代码进行排版美化. 建议每行只书写一条语句.
printf("%3.0f %6.1f\n", mile, kilometre);
printf 是格式化输出函数.
printf 的第一个参数是待打印字符串, 其中每一个百分号表示后续参数 (第二个参数, 第三个参数, 以此类推) 的替换位置, 这些参数必须在类型与数目上相匹配; 其余部分是打印格式.
ANSI 标准定义了 printf 函数的行为.
%3.0f 表示待打印的浮点数至少占 3 个字符, 不包括小数点与小数.
%6.1f 表示待打印的浮点数至少占 6 个字符, 包括小数点与 1 位小数.
格式 | 说明 |
---|---|
%d | 整数 |
%f | 浮点数 |
%o | 八进制数 |
%x | 十六进制数 |
%c | 字符 |
%s | 字符串 |
%% | 百分号本身 |
mile = lower;
如果某个算术运算符的所有操作数均为整型, 那么直接执行整型运算.
如果某个算术运算符一边为整型, 另一边为浮点型(如上代码所示), 那么在开始运算之前, 整型操作数会被转化为浮点型.
现在让我们编写一个打印从英里到公里的对照表吧:
- #include <stdio.h>
- /* print kilometre to mile table*/
- main() {
- float mile, kilometre;
- int lower = 0;//lower limit
- int upper = 1000;//upper limit
- int step = 30;//step size
- printf("Mile Kilometre\n");
- kilometre = lower;
- while (kilometre <= upper) {
- mile = kilometre / 1.61;
- printf("%3.0f %6.1f\n", kilometre, mile);
- kilometre = kilometre + step;
- }
输出结果:
原理相同, 只不过这次是以 "公里" 作为递增项和范围限制的对象而已 O(∩_∩)O~
来源: http://www.jianshu.com/p/604d9094ce3c