C语言程序设计A

周哲泓、文晟、马万仑

目录

  • 1 绪论
    • 1.1 为什么学习C语言
    • 1.2 C语言概述
    • 1.3 基本语法单位
    • 1.4 C语言基本程序结构
    • 1.5 Visual C++6.0介绍
    • 1.6 测试
  • 2 数据类型
    • 2.1 基本数据类型
      • 2.1.1 整型
      • 2.1.2 浮点型
    • 2.2 常量
    • 2.3 变量
    • 2.4 运算符与表达式
      • 2.4.1 算术运算符和算术表达式
      • 2.4.2 赋值运算符和赋值表达式
      • 2.4.3 关系运算符和关系表达式
      • 2.4.4 逻辑运算符和逻辑表达式
      • 2.4.5 位运算符和位表达式
      • 2.4.6 条件运算符和条件表达式
      • 2.4.7 逗号运算符和逗号表达式
      • 2.4.8 其他运算符
    • 2.5 数据的输入输出
    • 2.6 章节测试
  • 3 选择结构程序设计
    • 3.1 章节介绍
    • 3.2 关系运算符和关系表达式
    • 3.3 逻辑运算符和逻辑表达式
    • 3.4 if分支语句
    • 3.5 条件运算符和条件表达式
    • 3.6 switch多路开关语句
    • 3.7 实验方法
    • 3.8 本章小结
    • 3.9 选择结构程序设计电子课件
    • 3.10 选择结构程序设计视频推荐
    • 3.11 章节测试
  • 4 循环结构程序设计
    • 4.1 章节介绍
    • 4.2 while和do...while循环语句
    • 4.3 for 循环语句
    • 4.4 break和continue语句
    • 4.5 goto语句
    • 4.6 嵌套循环结构
    • 4.7 实验方法
    • 4.8 本章小结
    • 4.9 电子课件
    • 4.10 推荐视频
    • 4.11 章节测试
  • 5 数组
    • 5.1 一维数组
    • 5.2 二维数组
    • 5.3 字符数组与字符串
    • 5.4 章节测试
    • 5.5 实验方法
    • 5.6 电子课件
    • 5.7 推荐视频
  • 6 函数
    • 6.1 函数概述
    • 6.2 函数的定义
    • 6.3 函数的参数和返回值
    • 6.4 函数的调用
    • 6.5 函数的嵌套和递归调用
    • 6.6 数组作为函数的参数
    • 6.7 局部变量和全局变量
    • 6.8 变量的存储类别
    • 6.9 内部函数和外部函数
    • 6.10 实验
    • 6.11 电子课件
    • 6.12 章节测试
  • 7 编译预处理
    • 7.1 宏定义
      • 7.1.1 不带参数的宏定义
      • 7.1.2 带参数的宏定义
    • 7.2 “文件包含”处理
    • 7.3 条件编译
    • 7.4 推荐视频
    • 7.5 电子课件
  • 8 指针
    • 8.1 指针的基本概念
      • 8.1.1 变量的地址
      • 8.1.2 指针变量的定义
      • 8.1.3 指针变量的引用
    • 8.2 指针与一维数组
      • 8.2.1 指向一维数组的指针变量
      • 8.2.2 通过指针引用一维数组元素
      • 8.2.3 指针使用的几个细节
    • 8.3 指针与字符串
      • 8.3.1 使用指针处理字符串
      • 8.3.2 字符型指针变量作函数参数
      • 8.3.3 字符指针变量与字符数组的区别
    • 8.4 指针与二维数组
      • 8.4.1 二维数组的指针
      • 8.4.2 行指针变量
      • 8.4.3 二维数组的指针作函数参数
    • 8.5 指针数组与多级指针
      • 8.5.1 指针数组
      • 8.5.2 多级指针的概念
    • 8.6 指针与函数
      • 8.6.1 指针变量作为函数的参数
      • 8.6.2 函数的指针
      • 8.6.3 返回指针值的函数
    • 8.7 main函数的参数
      • 8.7.1 main函数参数的概念
      • 8.7.2 main函数参数的处理
    • 8.8 程序设计举例
    • 8.9 实验
    • 8.10 电子课件
    • 8.11 参考视频
C语言基本程序结构

                                 基本程序结构

任何一种程序设计语言都具有特定的语法规则和规定的表达方法。一个程序只有严格按照语言规定的方法和表达方式编写,才能保证编写的程序在计算机中能正确地被执行,同时也便于阅读和理解。

为了了解C语言的基本程序结构,先看下面的一个例子。

例1-1 在显示屏上输出字符串。

img40

这是一个简单的C语言程序,执行结果是在显示屏上原样显示程序中的三个字符串

img41

本程序只有6行,其中main()表示“主函数”。任何C语言程序都必须有一个main()函数,它表示程序从这里开始执行。由花括号“{”和“ }”括起来的部分是函数体,花括号表示具有函数功能的函数体的开始和结束。本函数体内的3条语句具有相同的作用,其功能是调用C编译程序提供的标准库函数printf()输出一个字符串。在printf()函数中,被原样显示输出的字符串用双引号""括起来。双引号中的符号"\n"没有在屏幕上显示,实际上"\n"是一个专用的输出格式控制符,它表示输出字符串后回车换行,即把光标移到下一行的起始位置。第4行字符串of前的空格为of定起始位置。C语言规定,函数体内各语句间用“;”分隔,即“;”表示一条语句的结束。main()函数前的void表示该函数运行结果无返回数值。

例1-2 求两个整数之和。

img42

输出结果:

  sum is 480

该程序共有10行,main()函数的作用是求两个整数a与b之和sum。程序第5行是变量定义,说明a、b和sum为整型(int)变量。第7行是两个赋值语句,使a和b的值分别赋为357和123。第8行使sum的值为a+b之和,第9行printf函数双引号中的%d是输入输出“格式控制”符号,用以指定输入/输出的数据类型和格式,这里,表示在%d的位置上把输出变量sum的值(480)用“十进制整数形式输出”。

该程序的第2行“#include 〈stdio.h〉”为预处理命令,其功能是告诉编译器printf()和scanf()两个标准库函数是在stdio.h头文件中定义的,以便程序能正确地使用这两个函数。通常在一个程序中,若仅使用了这两个函数,则该预处理命令可以省略不写,如例1-1所示。

例1-3 输入长方体的长、宽和高,计算长方体的体积。

img43

程序的执行结果是:

输入:

  5 8 6

输出:

  v=240

本程序的功能是对用键盘输入的长方体的长、宽、高三个整型量求其体积的值。程序中除主函数main()外,还包括一个被主函数调用的volume(a,b,c)函数。volume()称为用户自定义的函数。自定义函数由函数头和函数体两个部分组成。函数头用以指定函数名称、形参名称及函数返回值的类型,如第12行。函数体包括执行函数功能使用的变量定义和语句,如第13~17行所示。

为了便于程序的阅读和理解,程序中使用了注释,用“/*”开头到“*/”结尾的部分表示,注释在程序运行中不起作用,注释可以加在程序中便于使用者理解的位置,可以使用英语或汉字注释。第7行的输入语句是调用C编译程序提供的标准输入函数scanf(),作用是用键盘输入变量x、y和z的值。语句的双引号("%d %d %d",&x,&y,&z)中是3个输入格式控制符,表示输入3个十进制整数,&x,&y和&z中的符号“&”的含义是指变量的地址,表示将输入的3个变量数值分别送入变量x、y和z的存储地址中,也就等效于输入给变量x、y和z。这种输入方式是C语言特有的。C语言程序中用键盘向变量输入数据时,都必须指明变量的地址而不是变量本身。第8行为对volume()函数的函数调用,执行调用时,将输入x、y和z的值作为实参数分别传递给volume()函数中的形参数a、b和c。在函数中对a、b和c的计算就等效于对x、y和z的计算。计算结果p的值通过返回语句return(p)带回调用处赋给main()函数中的变量v,然后通过调用printf()函数显示在屏幕上。由于返回值p为整型,函数volume()也被称为整型函数。该函数的int即表示函数返回值的整型数。

从本例可以看出,当C语言程序中包括有多个函数时,程序的执行从main()函数开始,当执行到调用函数的语句时,程序将控制转移到调用函数中执行,执行结束后再返回主函数中继续运行,直至程序执行结束。这种控制转移称为函数调用,显然在程序中除了可以调用系统提供的标准库函数(如printf()和scanf())外,还可以调用用户根据编程需要编写的自定义函数(如本例中的volume()函数)。

从以上程序例子,可以看出C语言程序的基本结构是:

C语言程序为函数模块结构,每个C语言程序都是由一个或多个函数组成,其中至少有一个main()函数。程序从main()函数开始执行,程序在执行中可以调用由编译系统提供的各种标准库函数和由用户自定义的函数。

函数的基本形式是:

img44

其中,函数头 包括函数名和圆括号中的形式参数的数据类型及名称(如例1-3中的int volume(int a,int b,int c)),如果函数调用无参数传递,圆括号中形式参数为空(如例中的main()函数)。

img45

函数体 包括函数体内使用的数据说明和执行函数功能的语句。花括号{ }表示函数体的开始和结束。

C语言程序的最简单形式为即程序中无自定义函数,如例1-1和例1-2所示。

从上述三个示例中,我们可以把书写C语言程序的基本点归纳如下:


1.语言程序习惯上使用小写英文字母,常量和其他特殊用途的符号可用大写字母。C语言对大、小写字母是有区别的,如果将main写成MAIN或Main,程序将不能运行。

2.C语言程序不存在程序行概念。一行中可以有多个语句(如例1-2中第7行有两个赋值语句),一个语句也可以允许使用多行。语句之间必须用分号“;”分隔。

3.充分利用注释功能。在编写一个程序时,把关于编写这个程序的目的、程序的使用方法、变量名的意义、各函数的作用,以及一段复杂语句完成的功能等信息以注释的方式加到程序中,以增加可读性,以便于修改和调试。

4.把程序中的各语句组根据其功能和嵌套关系缩进编排,使程序的模块和复合关系都变得十分明显。

5.用一对花括号标志一个程序功能块的开始和结束时,尽管C语言对花括号的书写位置没有做规定,但为了方便起见,一般总是让每一对花括号{ }按列对齐。

6.在程序中加上适当的空格或空行(如在变量定义和函数执行语句间)可使程序更加清晰。

虽然,C语言本身对程序的书写格式要求很宽松,书写比较灵活,但是良好的编程风格有助于对程序的阅读、理解和记忆,在学习C语言的过程中,要注意养成良好的编写程序的习惯。