《C语言程序设计与实践(第2版)》——第1章 C语言与程序设计概述 1.1初见C语言程序

简介: 我国古代数学家张邱建在其编写的《算经》里提出了历史上著名的“百钱买百鸡”问题:今有鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。凡百钱买鸡百只,问鸡翁、母、雏各几何?对于这个问题,很多读者在小学或初中的竞赛中可能都见到过,而且通常都采用不定方程求解。

本节书摘来自华章出版社《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所示的结果。
screenshot

例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语言编写的解决实际问题的程序示例。读者可以思考一下,我们生活中碰到的哪些问题可以用类似的方法让计算机帮助我们解决。

相关文章
|
1月前
|
存储 自然语言处理 编译器
【C语言】编译与链接:深入理解程序构建过程
【C语言】编译与链接:深入理解程序构建过程
|
28天前
|
存储 算法 C语言
通义灵码在考研C语言和数据结构中的应用实践 1-5
通义灵码在考研C语言和数据结构中的应用实践,体验通义灵码的强大思路。《趣学C语言和数据结构100例》精选了五个经典问题及其解决方案,包括求最大公约数和最小公倍数、统计字符类型、求特殊数列和、计算阶乘和双阶乘、以及求斐波那契数列的前20项和。通过这些实例,帮助读者掌握C语言的基本语法和常用算法,提升编程能力。
|
1月前
|
C语言 定位技术 API
【C语言】实践:贪吃蛇小游戏(附源码)(二)
【C语言】实践:贪吃蛇小游戏(附源码)
【C语言】实践:贪吃蛇小游戏(附源码)(二)
|
1月前
|
存储 文件存储 C语言
深入C语言:文件操作实现局外影响程序
深入C语言:文件操作实现局外影响程序
|
1月前
|
C语言
【C语言】实践:贪吃蛇小游戏(附源码)(三)
【C语言】实践:贪吃蛇小游戏(附源码)
|
1月前
|
存储 API C语言
【C语言】实践:贪吃蛇小游戏(附源码)(一)
【C语言】实践:贪吃蛇小游戏(附源码)
|
1月前
|
存储 编译器 C语言
【C语言篇】数组和函数的实践:扫雷游戏(附源码)
【C语言篇】数组和函数的实践:扫雷游戏(附源码)
35 0
|
1月前
|
存储 编译器 C语言
【C语言】自定义类型:联合与枚举的简明概述
【C语言】自定义类型:联合与枚举的简明概述
|
1月前
|
程序员 编译器 数据处理
【C语言】深度解析:动态内存管理的机制与实践
【C语言】深度解析:动态内存管理的机制与实践
|
2月前
|
存储 C语言
C语言程序设计核心详解 第十章:位运算和c语言文件操作详解_文件操作函数
本文详细介绍了C语言中的位运算和文件操作。位运算包括按位与、或、异或、取反、左移和右移等六种运算符及其复合赋值运算符,每种运算符的功能和应用场景都有具体说明。文件操作部分则涵盖了文件的概念、分类、文件类型指针、文件的打开与关闭、读写操作及当前读写位置的调整等内容,提供了丰富的示例帮助理解。通过对本文的学习,读者可以全面掌握C语言中的位运算和文件处理技术。