C语言教程 - 制作单位转换器

敢说敢作敢为, 无怨无恨无悔。这篇文章主要讲述C语言教程 - 制作单位转换器相关的知识,希望能为你提供帮助。

C 语言是一个强大而通用的编程语言。这款诞生于 1972 年的编程语言起初用于开发 UNIX 操作系统,而它如今已是广泛用于开发各类操作系统、数据库、编译器及其他软件等的主流编程语言。
作为编程界的奠基语言之一,学习 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()?? 等常用的功能函数,这篇教程将重复使用这些函数,从而巩固大家对这些函数的应用能力。

#include < stdio.h>
#include < stdlib.h>


定义变量
【C语言教程 - 制作单位转换器】在 C 语言中,变量大致可分为以上几种类型。我们在 C 语言中使用变量之前,需要为这些变量定义,以便程序识别变量类型。
char category; // 种类选择
int backChoice; // 返回选项
int tempChoice; // 温度选择
int currencyChoice; // 货币选择
int massChoice; // 质量选择
int userinputF; // 输入华氏度
int userinputC; // 输入摄氏度
int userinputUSDtoEuro; // 输入美金 → 欧元
int userinputUSDtoJPY; // 输入美金 → 日元
int userinputUSDtoRMB; // 输入美金 → 人民币
int userinputOunce; // 输入盎司
int userinputGram; // 输入克
int fahrenheitToCelcius; // 华氏度 → 摄氏度
int celciusToFahrenheit; // 摄氏度 → 华氏度
float USDtoEURO; // 美金 → 欧元
float USDtoJPY; // 美金 → 日元
float USDtoRMB; // 美金 → 人民币
float ounceToPounds; // 盎司 → 斤
float gramsToPounds; // 克 → 斤

// 子程序清单
void tempConverter(); // 温度转换器
void currencyConverter(); // 货币转换器
void massConverter(); // 质量转换器
void backTemp(); // 温度返回界面
void backCurrency(); // 货币返回界面
void backMass(); // 质量返回界面


看到长串的变量先不必慌张,我们只需要养成建立变量清单的习惯,在编写程序的过程中逐个添加即可。注意:每一行程序末端需要写上分号 ??; ??,以结束一行程序,否则编译的时候就会报错。


绘制程序流程图我们在开始编程之前,可以养成绘制流程图的习惯,以便编写程序的时候逻辑更加清洗。这种流程图不一定需要用软件绘制,即便是最原始的纸笔有时候也能有效地帮助我们理清程序思路。



编写主程序我们的主程序一般写在 ??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")?? 即清屏。
编写子程序完成主程序编写后,我们可以再逐个转到子程序。这种区分主次的编程方法可以让程序变得更加简洁,减少代码出错。如果代码出现错误,我们只需根据报错修改相应的代码即可,而其他程序之间也不会因此受到影响。
void tempConverter()

system("clear");
printf("欢迎使用温度转换器! \\n\\n");
printf("请选择需要转换的类型: \\n\\n");
printf("华氏度 → 摄氏度请按 1 \\n");
printf("摄氏度 → 华氏度请按 2 \\n\\n");
printf("返回页面请按 0 \\n\\n");
scanf("%d", & tempChoice);

if (tempChoice == 1)
system("clear");
printf("\\n输入华氏度: \\n");
scanf("%d", & userinputF);
fahrenheitToCelcius = ((userinputF - 32) * (5.0 / 9.0));
printf("\\n摄氏度: %d", fahrenheitToCelcius);

backTemp();

else if (tempChoice == 2)
system("clear");
printf("\\n请输入摄氏度: \\n");
scanf("%d", & userinputC);
celciusToFahrenheit = ((9.0 / 5.0) * userinputC + 32);
printf("\\n华氏度: %d", celciusToFahrenheit);

backTemp();

else if (tempChoice == 0)
else
printf("请输入正确的数字。\\n");


与主程序中的 ??switch()??? 函数不同,我们在编写温度转换器时使用了 ??if()???、??else if()??? 和 ??else?? 函数切换程序。


If 条件
在 ??if()??? 函数中,程序通过判断变量是否符合条件来执行接下来的步骤。若条件不符,则程序会直接执行 ??else?? 中的内容。


在 ??printf()?? 中调用变量
在我们的转换器子程序中,我们同样通过 ??scanf()???函数监听所输入的数据,然后再通过相应的公式计算出结果。在 ??printf()??? 中调用结果时,同样可以使用 ??"%d"??? 指定数据类型,但指定的变量则无需添加 ??& ??,直接写入变量名称即可。
即便在子程序中,我们也同样可以引用类似 ??backTemp()?? 等更多的子程序,减少代码的重复性,也让代码变得更简洁。
恭喜你,你已完全解锁制作单位转换器所需要的编程知识!通过这一方法继续完成另外两个货币转换器 ??currencyConverter()??? 及质量转换器 ??massConverter()?? 中的程序,即可完成程序流程图中所列出的所有内容。完整程序代码可查看:https://ed88ed3901-share.lightly.teamcode.com

    推荐阅读