C语言笔记 - 概述
基本概念
- 程序设计语言:编写计算机程序的语言,按照特定的规则组织计算机指令,使计算机能够自动进行 各种操作处理
- 程序:按照程序设计语言的规则组织起来的一组计算指令、语句序列
- 程序设计语言分类:
机器语言:01代码;机器能够直接执行;人学习使用理解较难
汇编语言:符号化的机器语言,汇编后可执行(编辑–汇编–链接)
高级语言:类英文(编辑–编译–链接)
超高级语言:运行效率较低 - C语言:高级语言
1972年由美国的Dennis Ritchie设计发明。
1983年,美国国家标准协会(ANSI)根据C语言问世以来各种版本对C的发展和扩充,制定了C的标准,称为ANSI C。
1987年ANSI公布了新的标准——87 ANSI C。
示例:输出Hello World!
#include <stdio.h> //#:表示预处理 <stdio.h>:标准输入输出头文件
void main(){ //():表示函数 {}:函数的开始和结束标记
printf("Hello World!") //printf:输出函数 ;是语句的标记
}
- #include<stido.h>:编译系统在系统头文件所在目录搜索包含头文件stdio.h。
- #include“stdio.h”:编辑系统首先在当前源文件目录中查找stdio.h,找不到转系统头文件所在目录搜索。(用户写的优先)
示例:从 键盘输入一个整数,若其值小于0,输出-1;等于0,输出0;大于0,输出1
#include<stdio.h>
void main(){
int x; //定义整数变量(刚定义后内存中的值为任意)
scanf("%d",&x); //scanf:键盘输入 &:取地址 从键盘上给内存的x单元赋一个由%d决定的
整数
if(x<0) //判断x的范围
printf("\n-1\n"); // \n:换行
else if(x==0)
printf("\n0\n");
else
printf("\n1\n");
}
示例:求1到100的和
#include<stdio.h>
void main(){
int i=1,s=0; //从1开始求和,和的初值为0
while(i<=100){ //循环控制
s=s+i; //数据累加
i=i+1; //生成下一个要累加的数字
}
printf("sum=%d\n",s); //输出结果
}
程序=数据结构+算法
- 算法:为计算机处理问题而设计的解题步骤,最终实现是计算机程序
算法的描述方法:
- 伪代码
- 自然语言
- 流程图
- N-S图
- PAD图
算法的伪代码描述:求1到100的和
void main(){
int i=1,s=0;
while(i<=100);{
s=s+i;
i=i+1;
}
printf(s);
}
算法的自然语言描述:求1到100的和
- 步骤1:被求和的数i和s赋初值,i=1,s=0
- 步骤2:由i的值决定是否求和,若i小于等于100,则执行步骤3,否则转步骤5
- 步骤3:s加i
- 步骤4:i增加1,给出下一个被求和的数,转步骤2
- 步骤5:显示和s,算法结束
流程图符号说明
- 长直边椭圆:开始、结束
- 矩形:处理
- 扁菱形:判断
- 平行四边形:输入、输出
- 箭头:流程方向
算法流程图描述:求1到100的和
算法的三种结构:
- 顺序结构
- 分支结构
- 循环结构
三种结构互相结合,可实现任何逻辑控制
顺序结构
- 各个步骤由前到后一次执行,每个步骤都执行一次。
如:属于一个学生的两门课程成绩,计算并输出平均分
选择结构
- 某些步骤是否执行,取决于当前条件
如:输入某学生两门课成绩,若平均分不低于90,输出“优等生”,否则输出“加油!”
循环结构
- 有条件的重复执行某些步骤,如求1到100的和
算法的的特性和评价
算法特性
- 有穷性:算法必须经过有限步骤后结束。“有限步骤”指步骤有限,且合理。
- 确定性:每一步所规定的的操作必须确定,不能有二义性。
- 有效性:每一步所描述的操作必须能够通过已实现的基本运算有效执行,并且得到确定的结果
- 输入和输出特性:有意义的算法有零个或多个输入,并且有一个或多个输出。(可0输入,至少1个输出)
算法评价
- 时间复杂性:算法执行时间与问题规模的关系,为执行效率指标
- 空间复杂性:算法对计算机内存的临时需求程度,越少越好、
- 可读性:算法可供人们阅读的难易程度(加注释)
- 健壮性(容错性):算法对不合理输入的反应和处理能力
- 通用性:算法应适应某类问题,而不是某特定问题
- 正确性:算法最根本的评价指标,执行结果是否满足预先规定的功能和性能
C语言基础知识
C语言程序结构
- 预处理:编译时进行的处理,如:包含、宏
- 函数:
- C语言程序由函数构成
- 任何一个C程序均有且仅有一个主函数:main()
- main()函数是C程序的执行起点和终点
- 一个函数可以调用另一个函数
- 函数可以递归调用,但不允许递归、嵌套定义
- 被调用函数在调用函数之后定义,则需要在调用之前先声明
- 变量定义:
- 格式:类型名 变量名
类型:大小、取值范围 - 语句组
- 注释:
- 同一行://
不同行:/* */
C语言的标识符、保留字
标识符:程序中使用的变量名、函数名等
- 构成:字母(A-Z,a-z)、数字(0-9)、下划线“_”构成的,以字母或下划线打头的字符串(区分大小写),尽量有意义。
- 合法标识符:符合构成规则的标识符,如:BOOK1 、_add等
- 非法标识符:以数字开头,使用非法字符等不符合构成规则的标识符,如:3sum、ab#cd等
保留字:
- C语言中已经定义过、不能作为用户变量名或过程名的标识符
如:int、clear、float等等
C语言程序处理流程
- 编辑:源程序,后缀:.c
- 编译:目标程序,后缀:.obj
- 链接:可执行文件,后缀:.exe/.com
- 运行:输入可执行文件名