C语言程序与设计

第一章 程序设计的基本概念

历史:1972-1973 贝尔实验室在B语言的基础上设计出了C语言

1989年(C89)1999年(C99)标准不一,但都可行(C99为C89标准的扩充)

C语言特点

  1. 运算符丰富880
  2. 数据类型丰富
  3. 用函数作为程序的模块单位
  4. 程序可移植性好
  5. 允许直接访问物理地址
  6. 可以直接硬件进行操作

计算机程序

  • 一组计算机能识别和执行的命令
  • 一个特定的指令序列用来完成一定的功能
    • 软件
      1. 与计算机操作有关的计算机程序,规则,以及可能有的文件,文档及数据。

语言的分类

  1. 机器语言
    • 二进制代码的机器指令
  2. 汇编语言
    • 符号语言,汇编指令。英文字母与数字
  3. 高级语言
    • 自然语言,数学语言 源程序通过编译程序转换为目标程序

C

C语言的编译

字符的表示

第一个C语言程序

#include <stdio.h>	//编译预处理指令
int mian(){			//定义主函数
	printf("this is a c program.\n");//输出函数
	return 0;		// 函数执行完毕后返回函数值0
}
# include <stdio.h>
int mian()	//C99
void mian()	//C89
mian()		//C99
{
    printf(""tset\n")
}			//单行注释,注释不参与编译
           /*多行注释 
           这是一个多行注释*/

/ 斜杠

\ 反斜杠

C语言的程序结构

image-20250915154752256

  1. 一个程序由一个或者多个源程序文件组成
  • 源程序文件
    • 预处理命令
    • 全局声明
    • 函数定义

2.函数是C程序的主要组成部分

  • 一个C语言程序是有一个或多个函数组成的其中必须包含唯一一个mian函数
  • 函数中被调用的函数可以是系统提供的库函数,也可以是用户根据自己编制设计的函数

3.程序总是从mian函数开始执行

4.程序中的操作是由函数中的C语句完成的

5.在每个数据声明和语句的最后必须要有一个分号

6.C语言本身不提供输入输出语句,输入输出操作由函数完成

7.程序应当适当注释

  • 算法的特性
    • 有穷性:一个算法应该包含有限的操作步骤,而不是无限的
    • 确定性:算法中的每一个步骤都应该是确定的,不能模糊
    • 有零个或多个输入:输入指在执行算法时需要从外界取得必要的信息
    • 有一个或多个输出:算法的目的是为了求解,“解”就是输出
    • 有效性:算法中的每一个步骤都能有效执行,并得到确定的结果

第二章 C程序的初步知识

C语言执行顺序

  1. 编辑
    • 在**.C**源文件中编辑
  2. 编译
    • 转换成**.OBJ**文件交给计算机编译
  3. 链接
    • 库函数+OBJ 生成 .EXE文件
  4. 执行
    • 执行EXE文件

函数是C程序的主要组成部分

C语言的基本结构

1 输入输出

输入输出是以计算机为主体而言的

2 C语言本身不提供输入输出语句输入输出功能由C标准函数库中的函数来实现的

**printf(**格式控制,输出列表)

printf("i=%d,c=%c\n",i,c)

​ 格式控制是用双引号括起来的一个字符串,称为格式控制字符,简称格式字符串

  • 格式声明格式声明由%和格式字符组成。作用是将字符格式化输出
  • 转义字符
  • 普通字符。 输出时原样输出

输出列表是程序需要的一些数据可以是常量,变量或表达

scanf(格式控制,地址列表)

scanf("a=%f,b=%f,c=%f",&a,&b,&c)	// & 取地址运算符

格式控制 是用双括号括起来的一个字符串,含义同printf函数。

  • 格式声明 以%开始,以一个格式字符结束,中间可以插入附加字符
  • 普通字符 原样输出

地址列表 是由若干个地址组成的列表,可以是变量的地址,或字符串的首地址

3还在程序文件的开头用预处理(编译前处理)指令—#include把有关头文件放在本程序中

//三种形式
#include"c:\cpp\inulude\myfile.h"//按指定路径查找文件
#include"myfile.h"		//源程序文件所在目录
#include<myfile.h>		//C编译系统指定的include目录

常量,变量,标识符

标识符就是一个对象的名字,用于标识变量,符号常量,函数,数组,类型等

命名规则

  1. 只能由字母,数字和下划线等三种字符组成
  2. 第一个字符必须为字母或者下划线
  3. 不能使用关键字(都是小写字母)
  4. 区分大小写字母
  5. 见名知义

常量&变量

常量——在程序运行过程中不能改变的值

变量——在程序运行过程中可以发生改变的值

常量
整形常量
  1. 十进制数
  2. 八进制数
    1. 每一位上的有效数字 0—7
    2. 必须以数字0开头
    3. 转换成十进制数:每一位的有效数字*该位的权,再求和
  3. 十六进制数
    1. 每一位上的有效数字:0—9 a—f或A—F
    2. 必须以数字0x或0X开头
    3. 转换成十进制数 :每一位的有效数字*该位权,再求和
实型常量
  • 小数形式
  • 指数形式:以“e”或“E”后跟一个整数表示以10为底的幂数(E前后必须有整数)
字符常量

单引号引起来的一个字符

image-20250919150335749

字符串常量

双引号引起来的字符序列

计算字符串长度:双引号中字符的个数

符号常量

预处理指令,宏定义#define PI 3.1416

  • 在编译前,用常量3.1416替换程序中所有的PI

const double a=3.14 (只读)

#define指令,是预编译指令,它只是用符号常量代表一个字符串,在编译时仅进行字符替换,在预编译之后,符号常量就不存在了(全部被置换成数字了)

用const定义语句的符号常量的优点,使用更方便。

变量

变量代表一个有名字的,具有特定属性的一个存储单元。

变量用来存放数据,也就是存放变量的值。

在程序运行期间,变量的值是可以改变的

变量必须先定义后使用

整型数据

只有整形(包括字符型)数据可以加signed和unsigned修饰符实型数据不能加

整形变量

  • int 4b
  • short 2b
  • long 4b
  • unsignde int
int main() {
  int a,b,c;
  a=10;
  b=010;
  c=0x10;
  printf("%d\n",a);
  printf("%o\n",b);
  printf("%x\n",c)
  return 0;
}// %d 带符号十进制 %o八进制无符号 %x 十六进制无符号

标识符命名规则

  1. 数字字母下划线组成
  2. 第一个字符必须是字母或者下划线
  3. 不能是关键字

#define pi=3.1415926 预处理指令,宏定义,在编译前用常量去执行

const float pi = 3.1415926 增加只读属性

实型数据

算数表达式

赋值表达式

自加自减,逗号运算符

类型转换

变量

数据类型 变量名

int a=b

变量代表一个名字,具有特定属性的一个存储单元

变量用来存放数据,也就是存放变量的值

在程序运行期间,变量的值是可以改变的

变量必须先定义,后使用