新编C语言程序设计教程(第2版)
上QQ阅读APP看书,第一时间看更新

1.5 初识简单的C语言程序

为了说明C语言源程序结构的特点,先看以下几个程序。这几个程序由简到难,表现了C语言源程序在组成结构上的特点。虽然有关内容还未介绍,但可从这些例子直观地了解到组成一个C语言源程序的基本部分和书写格式等。

例1-1】显示“Hello, World!”。

注意:程序的每行后用“/* …*/”或“//”引出的内容为注释部分,起到说明语句或程序的作用,程序不执行注释部分。

说明:main是主函数的函数名,表示这是一个主函数。每一个C语言源程序都必须有且只能有一个主函数(main函数)。函数调用语句printf函数的功能是把要输出的内容送到显示器去显示。printf函数是一个由系统定义的标准函数(即库函数),可在程序中直接调用。

注意:“return 0(或其他整数值);”通常是main函数的最后一个语句,表示结束main函数执行,返回0(或其他整数值)到运行main程序的环境或调用者(譬如某种操作系统)。对于本书的main程序,都不再利用这个返回值,为此,省略return语句也无妨。

扩展阅读:规范标准的main函数

【例1-2】输入数x,计算sin(x)的值。程序每条语句的功能由注释可知。

说明:程序的功能是从键盘输入一个数x,求x的正弦值,然后输出结果。

在main()之前的两行称为预处理命令。预处理命令还有其他几种,这里的include称为文件包含命令,其意义是把尖括号<>或引号""内指定的文件包含到本程序来,成为本程序的一部分。被包含的文件通常是由系统提供的,其扩展名为.h,因此也称为头文件或首部文件。C语言的头文件中包括了各个标准库函数的函数原型。因此,凡是在程序中调用一个库函数时,一般都要包含该函数原型所在的头文件。在本例中,使用了3个库函数:输入函数scanf、正弦函数sin和输出函数printf。sin函数是数学函数,其头文件为math.h文件,因此在程序的主函数前用include命令包含了math.h。scanf和printf是标准输入/输出函数,其头文件为stdio.h,因此在主函数前也用include命令包含了stdio.h文件。

需要说明的是,C语言规定对scanf和printf这两个函数可以省去对其头文件的包含命令。所以在本例中也可以删去第二行的包含命令#include<stdio.h>。

例题中的主函数体又分为两部分,一部分为说明部分(可选),另一部分为执行部分。说明是指变量的类型定义或函数声明等。【例1-1】中未使用任何变量,因此无说明部分。

C语言规定,源程序中所有用到的变量都必须先说明,后使用,否则将会出错。这一点是编译型高级程序设计语言的一个共同特点,与解释型的BASIC语言是不同的。说明部分是C语言源程序结构中很重要的组成部分。

【例1-2】中使用了两个变量x与s,用来表示输入的自变量和sin函数值。由于sin函数要求这两个量必须是双精度浮点型,故用类型说明符double来说明这两个变量。

说明部分后的4行为执行部分或称为执行语句部分,用以完成程序的功能。执行部分的第一行是输出语句,调用printf函数在显示器上输出提示字符串,用于提示操作人员输入自变量x的值。第二行为输入语句,调用scanf函数,接受键盘上输入的数并存入变量x中。第三行是调用sin函数并把函数值送到变量s中。第四行是用printf函数输出变量s的值,即x的正弦值。程序结束。

在前两个例子中用到了输入函数(scanf)和输出函数(printf),下面先简单介绍一下它们的格式,以便后续使用。

scanf和printf这两个函数分别称为格式输入函数和格式输出函数。其意义是按指定的格式输入/输出值。因此,这两个函数在括号中的参数表都由以下两部分组成:“格式控制串”和“参数表”。其中,“格式控制串”是一个字符串,必须用双引号括起来,它表示了输入/输出量的数据类型。各种类型的格式控制符可参阅第4章。在printf函数中还可以在格式控制串内出现非格式控制字符,这时它们在显示屏幕上将原文照印。“参数表”中给出了输入或输出的量;当有多个量时,用逗号间隔。

例如,“printf("sin(%lf)=%lf\n",x,s);”其中%lf为格式控制字符串,表示按双精度浮点数处理。它在格式串中出现两次,对应x和s两个变量。其余字符为非格式字符,则照原样输出到屏幕上。

【例1-3】从文件infile.txt或键盘输入x,y两整数,经处理后,输出两数、两数中的最大值与最小值到显示屏上和输出到文件outfile.txt中。

注意:一个C语言程序可由一个、两个或多个C语言源程序文件组成,如下程序设计分成两个源程序文件(若运行包含多文件的程序有困难,可以先作为一个文件运行)。

说明:本程序由3个函数组成,main主函数、max函数和min函数。函数之间是并列关系,可从主函数中调用其他函数。max函数的功能是比较两个数,然后把较大的数返回给主函数,min函数把较小的数返回给主函数。max函数和min函数是用户自定义函数。因此在主函数中要给出函数声明(程序第7、8行),其中min函数还来自另一个源文件,为此是外部函数声明。可见,在程序的说明部分中,不仅可以有变量说明,还可以有内部和外部函数声明。本程序还涉及对文件的打开、输入、输出和关闭等操作。关于函数与文件的详细内容将在本书第8章和第11章介绍。刚开始学习,读者对本章程序功能与程序结构有初步了解即可。

上例中程序的执行过程是,首先尝试打开infile.txt,若打开文件失败,则在屏幕上显示提示字符串(Input two numbers),按〈Enter〉键后由scanf函数语句接收这两个数赋给变量x,y;若文件存在并打开成功,则自动由fscanf函数语句从该输入文件中读取两个整数(若读取正确,要求在程序所在目录中先建立infile.txt输入文件,该文件首行有空格隔开的两个整数),读后关闭文件。然后程序调用max函数和min函数,并把x,y的值及其max函数得到的最大值、min函数得到的最小值分别输出到屏幕上和输出文件outfile.txt中。程序运行后观察屏幕上显示结果及outfile.txt文件中的输出内容,查看运行结果是否正确。

本程序故意分成两个文件组织存放,只是想让读者尽早了解与实践C语言支持多文件的程序结构。实际上,简单的程序完全可以在一个文件中编辑存放、编译、连接与运行。

上面认识了几个简单的C语言程序,下面从总体上了解C程序的结构、编写规则和组成要素等。