敢说敢作敢为, 无怨无恨无悔。这篇文章主要讲述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
推荐阅读
- 全志D1-H Dock ProYoC RTOS 实战(HaaS UI UED桌面显示)
- SpringBoot2.x整合Prometheus+Grafana附源码
- 超大规模数据中心内的数据链路层自动测试案例
- 多线程原理和常用方法以及Thread和Runnable的区别
- 数据库数据恢复磁盘空间不足导致sql server故障的数据恢复案例
- 在游戏开发中运用测试
- windows修改图片默认程序打开方式
- 技术分享| 云服务器的使用-nginx的安装及使用
- SRE,了解一下(35+岁程序员新选择)