2.1 简单C语言程序设计
本节的目标是通过一些简单的程序了解C语言编程的基本结构,理解常量、变量、数据类型、表达式这四个基本概念。
学习C的第一个程序是在屏幕上显示“Hello world”。您可以使用printf 函数完成此任务,该函数允许您逐字、逐字符或整个字符串打印。让我们看一下这个在屏幕上显示“Hello world”符号字符串的完整程序。
/*在屏幕上输入Hello,world*/#includestdio.hint main(void){ printf('Hello,world\n'); 仔细看上面的程序。第一行以开头。 “/*”以“*/”开头,以“*/”结尾,表示程序的功能。预编译处理语句第二行使用#include语句引入stdio.h头文件。第三行是主函数定义,由三部分组成。 main是函数名,前面的int表示返回值。函数的值是整数数据。括号“()”表示main是一个函数。从第四行到最后一行称为函数体,左大括号“{”表示函数的开始。右大括号“}”表示函数的结束。
该函数有两行,第一行使用printf 函数在屏幕上显示一个字符串。第二行的return用于结束main函数的执行,后面跟一个分号。 (;) 结束。 printf被称为输出函数,Hello world两边的双引号表明它是一个字符串(也称为字符串常量)。该字符串中的最后一个符号是“\n”。这称为转义字符,用于表示新行。
根据这个方案,可以看到三个方面:首先,任何程序只能有一个名为main 的函数,其次,一个程序可以由多个语句组成,第三,每个语句后面都跟一个分号。
现在我们来看第二个程序。与第一个程序相比,使用了两个printf 语句来打印两行字符串。
#include stdio.h /*预编译命令*/int main (void){ printf ('编程很有趣!\n'); printf ('C 编程更有趣!\n');请参阅,这两个printf 语句使用一对双引号来分隔括号内的字符串,并使用反斜杠'\n' 来分隔每个字符串中的行。如果我去掉第一行的“\n”,屏幕还会显示两行文字吗?答案是否定的。这两个字符串连接起来并打印在一行上。
第三个程序将华氏温度转换为相应的摄氏度。使用公式c=(5/9)*(f-32) 进行转换。 f 代表华氏温度,c 代表转换后的摄氏温度。那么我们如何表示100 华氏度呢?我们可以使用f 来表示它,并使用c 将结果存储为摄氏度。步骤如下:
#include stdio.hint main (void){ int c, f; /*变量定义*/f=100; /*变量使用*/c=5 * (f - 32)/9 , c=% d\n ', f, c);/*输出结果*/return 0;} 函数体第一行用于定义c和f,我们知道它们的数据类型都是整数。(int),称为整型变量。变量定义的作用是向计算机请求存储空间来存储数据。在第二行中,f 等于100。它的功能是将100赋值给名为f的变量。等号“=”称为赋值运算符,其后面的分号称为赋值语句。 “赋值”就是赋予,赋值就是把等号“=”右边的值赋给等号左边的变量。第三行计算表达式5*(f-32)/9 的值并将其分配给变量c。 5*(f-32)/9,也称为表达式,是将运算符和操作数连接起来形成一个值的算术表达式。使用它时,请将表达式视为一个值。另外,请注意乘号(*)和除号(/)的书写方式。表达式中不能省略乘号(*)。第4行printf的用法与前面的printf不同。前面的printf 只有两个用双引号分隔的字符串。这里,printf字符串包含两个%d字符,称为格式字符。这是一个占位符。也就是说,当打印一个字符串时,它稍后会被替换为相应位置表达式的值。在此示例中,%d 被替换为printf 输出中相应表达式的值。例如,第一个%d 替换为f 的值,第二个%d 替换为c 的值。程序运行结果如下。
f=100,c=37 根据C语言的计算规则,整数数据的算术运算结果也是整数,因此表达式5*(f-32)/9的值为整数数据37。与我的预期不同。实际数字是37.777777。如果整数表达式的结果包含小数,则直接截去小数点后的小数部分,而不是四舍五入为整数。那么如何才能得到更精确的实数呢?只要表达式至少有一个浮点操作数,就可以将f 定义为浮点变量,可以是float 也可以是double ,或者像Can 一样将常量改为浮点变量保持不变。可以看到,正确定义和使用5.0*(f-32)/9或5*(f-32)/9.0等数据类型对于程序设计非常重要。
接下来,您将学习三个非常重要的概念:常量、变量和数据类型。函数“int c, f;”的第一行称为变量定义,其中c和f指的是在程序执行期间可以改变的量。在赋值语句中,“c=5*(f-32)/9;” 5、32、9称为常量,是指在程序执行过程中不发生变化的量。常量和变量统称为操作数,本质上都是数据。数据类型用于限制数据的存储格式、大小以及可以对数据执行的操作。 5、32、9都是整型,c和f指定为int,称为整型变量。它们通常占用内存中2 或4 个字节的存储空间。整数(int) 的长度因不同的C 编译器而异。
定义变量的一般格式为:
类型名称变量名称列表。
五种不同类型的变量定义如下:
int c,f; float x; double 区域,长度; 指定每个变量的数据类型。变量名表使用逗号分隔不同的变量名。例如,在“int c,f;”的情况下,“c,f”被称为变量名称列表,int是整数类型名称。 “float x;”定义单精度浮点类型float的变量x。 “双精度区域,长度;”定义了两个双精度浮点变量区域,长度。单精度或双精度浮点变量的存储遵循上面1.2 中提到的IEEE 754 标准。单精度浮点类型float占用4个字节,双精度浮点类型double占用8个字节。 Double类型数据比float类型数据精度更高,取值范围更广。这是因为double 使用53 位来表示尾数,而float 仅使用23 位来表示尾数,从而为double 提供了更广泛的数字范围和更高的精度。
定义变量时,变量名称必须有意义,以实现了解名称并具有对阅读和理解程序很重要的含义的目标。所谓知道名字,就是说变量名必须与该变量所存储的内容相关联。该名称告诉您该变量的用途。变量定义的目的是将变量名与内存相匹配,并告诉计算机内存空间中存储的数据的格式和大小以及该数据可以参与的计算。该图显示了我们之前定义的五个变量所占用的内存:c、f、x、area 和length。
可变内存映像
可以看到,整型变量占用的存储空间较小,而单精度浮点变量x占用的空间是两个整型变量的精确总和。双精度变量占用的空间是四个整型变量或两个单精度浮点变量大小的总和。变量名代表一个存储单元。您需要将变量名称视为内存空间的一部分。变量占用的内存空间大小由其数据类型决定。
变量通常必须在程序中的第一个可执行语句之前定义,并且变量必须在使用之前定义。不允许使用未定义的变量。此外,未分配值的变量不可用。如方案3:
int c, f=100; 两个语句的顺序不能互换,因为变量f必须在使用f之前定义。程序中的语句之间有顺序,如果在表达式中使用变量f,则必须在表达式完成计算之前执行f=100才能获取具体数据。变量可以在程序、文件、函数、复合语句或子程序中定义。同一级程序块内不能重复定义变量名。变量名和存储区域一一对应。
在程序3中,如果去掉赋值语句f=100,那么后面的“c=5*(f-32)/9”语句的结果会是什么呢?由于f的值未知,所以结果会怎样?计算我不懂。如果定义的变量未分配值,则该变量的值将成为“垃圾”数据。因此,如果删除f=100这行代码,f的值是未知的,变量c的结果也是不可预测的。
本节介绍C语言程序的基本结构,并简要介绍常量、变量、数据类型等基本概念和应用。这就是本节的内容。下次见。
版权声明:本文由今日头条转载,如有侵犯您的版权,请联系本站编辑删除。