本节书摘来自华章出版社《C语言程序设计与实践(第2版)》一书中的第1章,第1.1节,作者:凌云等著,更多章节内容可以访问云栖社区“华章计算机”公众号查看
第1章 C语言与程序设计概述
1.1 初见C语言程序
我国古代数学家张邱建在其编写的《算经》里提出了历史上著名的“百钱买百鸡”问题:今有鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。凡百钱买鸡百只,问鸡翁、母、雏各几何?对于这个问题,很多读者在小学或初中的竞赛中可能都见到过,而且通常都采用不定方程求解。现在我们用C语言解决该问题。通过例1-1所示的程序,初学者一方面可以对C语言有一个感性的认识,另一方面可以初步领略计算机高效和强大的解决问题的能力。
例1-1 用C语言程序解决“百钱买百鸡”问题。
#include <stdio.h> /* 包含标准库的信息 */
int main() /* 定义名为main的函数,它不接受参数值 */
{
int x, y, z, money; /* 声明x,y,z,money为整型变量 */
printf("cocks hens chicks\n"); /* 输出表头信息 */
for (x = 0; x <= 20; x++) /* 控制循环次数,x由0变到20,共循环21次 */
for (y = 0; y <= 33; y++) /* 控制循环次数,y由0变到33,共循环34次 */
for (z = 0; z <= 100; z++)
{
money = 5 * x + 3 * y + z / 3;
if (x + y + z == 100 && money == 100 && z % 3 == 0)
printf("%5d%5d%7d\n", x, y, z); /* 输出可行解 */
}
return 0;
}
运行程序,得到图1-1所示的结果。
例1-1显示了一个完整的C语言程序,虽然规模很小,功能很简单,但能解决一个实际的问题。从程序中可以看出,在该问题的求解过程中,我们采用穷举法对所有可能的组合逐一进行检测,将符合要求的筛选出来。假设购买的鸡翁数量为x,购买的鸡母数量为y,购买的鸡雏数量为z,共买鸡100只,则x、y、z均应小于等于100。进一步分析,如果100元钱全部用来买鸡翁,则最多可买鸡翁20只,因此x的取值范围为0~20,同理,y的取值范围为0~33,z的取值范围为0~100。对以上范围内所有x、y、z的组合,如果x + y + z的总和为100,并且购买x、y、z花费的总钱数为100,则x、y、z就是满足条件的解。事实上,穷举法是计算机求解问题时常用的一种方法。
例1-1所示的程序称为C语言的源程序。在C语言源程序的描述中,要注意以下几点:
1)C语言源程序的扩展名必须为.c或.cpp。
2)C语言是大小写敏感的,也就是说,在C语言的源程序中,大小写是有区别的。
3)如果源程序中出现的逗号、分号、单引号和双引号等符号不是出现在双引号的内部,则均应该在英文半角状态下输入,比如分号不能写成中文分号,而应写成英文半角分号。
4)花括号、小括号、用作界定符的单引号和双引号等都必须成对出现。
例1-1是一个用C语言编写的解决实际问题的程序示例。读者可以思考一下,我们生活中碰到的哪些问题可以用类似的方法让计算机帮助我们解决。