C 语言是一个强大而通用的编程语言。这款诞生于 1972 年的编程语言起初用于开发 UNIX 操作系统,而它如今已是广泛用于开发各类操作系统、数据库、编译器及其他软件等的主流编程语言。
作为编程界的奠基语言之一,学习 C 语言有助于软件编程领域的学生甚至专业人士深入了解编程原理。学习 C语言其实非常简单,C语言本身的语言结构化,而其高效的程序编译过程也能让初学者深入浅出地掌握编程知识,从最基础的程序开始到复杂的操作系统都能实现。
这篇教程通过使用 C语言编写简易单位转化器,从而讲解如何从最基本的编辑器开始接触 C语言,通过说明变量类型、绘制程序流程、编写程序等过程,讲解编程中的逻辑、函数功能及原理。
C语言编辑器选择
纵使 C语言是老编程语言,我们依旧可以借助比 C语言更年轻的编辑器来进行编程。如果将编辑器与编程语言相对比,那么编辑器就像纸笔一样,只要是自己用的称心的纸笔都能写程序。编辑器的选择有很多,但好的编程体验从合适的编辑器开始,而类似 C语言在线编译器 Lightly 就能满足我们的编程需求。
在信息爆炸的年代,好的编辑器能提高编程效率,降低学习编程的成本。原本复杂的环境部署程序,在 Lightly 只需要登录编辑器,选择 C语言在线编程即可。
引入 C语言库
#include <stdio.h> 是 C语言的标准库头文件,其中的 std 为英语 Standard 的缩写,i/o 分别表示 input 和 output,而 .h 则是头文件 header 的后缀。另外,这篇教程也会使用 #include <stdlib.h>,即 Standard Library。
C语言的标准库头文件中包含 printf()、scanf()、system()、exit() 等常用的功能函数,这篇教程将重复使用这些函数,从而巩固大家对这些函数的应用能力。
定义变量
在 C语言中,变量大致可分为以上几种类型。我们在 C 语言中使用变量之前,需要为这些变量定义,以便程序识别变量类型。 看到长串的变量先不必慌张,我们只需要养成建立变量清单的习惯,在编写程序的过程中逐个添加即可。注意:每一行程序末端需要写上分号 ;,以结束一行程序,否则编译的时候就会报错。
绘制程序流程图
我们在开始编程之前,可以养成绘制流程图的习惯,以便编写程序的时候逻辑更加清洗。这种流程图不一定需要用软件绘制,即便是最原始的纸笔有时候也能有效地帮助我们理清程序思路。
编写主程序
我们的主程序一般写在 int main() 函数内,其中的程序内容包含在花括号 { ... } 中。
也许有细心的同学发现,我们的主程序函数和前面列出的子程序函数不太一样,主程序的变量使用的是 int 整数而非 void 空变量。没错,主程序本身确实会返回整数!当我们结束程序时,一般会使用 return 0 或 exit(0)。如此一来,主程序就会读取变量,根据返回的变量判断程序是否运行。
int main() 和 void main() 之间的差别
当我们使用 void 变量来保存函数时,这类函数并不会保存整数。因此,当我们需要程序完整运行,而非使用 exit() 函数终止程序时,我们就可以使用 void 作为变量类型。然而,当我们需要返回特定整数时,void 变量就不再适用。因此,我们需要适当地判断程序用途来选择变量类型。
在我们的主程序中,除了前面已经讲解过的 int main(),我们还使用了几种不同的新函数。
While 循环
while() 是 C 语言中的一种循环类型,当变量与括号 () 中数值相符时,程序便会持续运行。
Printf 输出
printf() 即输出括号中的内容。其中的内容可以是文本,也可以是数字。如果需要在文本下方空格,还可以输入 \n。
Scanf 输入
scanf() 即监听输入。我们通过这个函数向程序输入数据并保存在相应的变量中。其中,"%c" 表示数据类型为文本,另外也有 "%d" 等表示整数的输入类型;而后者的 &category 则表示储存数据的变量。
Switch 切换
switch() 可根据输入的内容切换子程序,我们需要在括号内填入读取的变量内容,然后通过不同的 case 切换程序。
System 系统
system("clear") 即清屏。
编写子程序
完成主程序编写后,我们可以再逐个转到子程序。这种区分主次的编程方法可以让程序变得更加简洁,减少代码出错。如果代码出现错误,我们只需根据报错修改相应的代码即可,而其他程序之间也不会因此受到影响。 与主程序中的 switch() 函数不同,我们在编写温度转换器时使用了 if()、else if() 和 else 函数切换程序。
If 条件
在 if() 函数中,程序通过判断变量是否符合条件来执行接下来的步骤。若条件不符,则程序会直接执行 else 中的内容。 在 printf() 中调用变量 在我们的转换器子程序中,我们同样通过 scanf()函数监听所输入的数据,然后再通过相应的公式计算出结果。在 printf() 中调用结果时,同样可以使用 "%d" 指定数据类型,但指定的变量则无需添加 &,直接写入变量名称即可。
即便在子程序中,我们也同样可以引用类似 backTemp() 等更多的子程序,减少代码的重复性,也让代码变得更简洁。
恭喜你,你已完全解锁制作单位转换器所需要的编程知识!通过这一方法继续完成另外两个货币转换器 currencyConverter() 及质量转换器 massConverter() 中的程序,即可完成程序流程图中所列出的所有内容。