基于《C语言程序设计第四版》
简单程序解析
- main为函数名,每个C语言程序都必须有一个main函数。
- int为返回值类型。
- 预处理指令:inclube关键字,类似java语言中得import,导入依赖。此处为导入stdio.h库。
- 注释方式:“//”单行注释,“/* */”多行注释。
- 每行代码必须使用“;”作结束标志,否则报错。
- 函数总是从main函数开始执行,不管main函数的位置在哪里
//注释:简单程序
#inclube<stdio.h>
int main()
{
printf("hello world");
return 0;
}
函数组成:函数头、函数体“{}”
编译过程
源程序(test.c) —>
目标程序(test.obj):初步编译之后的程序,此时程序尚不能运行 —>
与函数库进行连接,即inclube引入依赖加载过来 ---->
获得可执行程序 test.exe
算法简介
算法特性
- 有穷性
- 确定性
- 有零个或多个输入:指在执行时需要从外界获取的必要信息
- 有一个或多个输出:没有输出的算法是没有意义的
- 有效性
算法表示
- 自然语言表示算法
- 流程图表示算法:BS传统流程图、N-S结构化流程图
- 伪代码表示算法
- 计算机语言表示
算法设计原则
- 自顶向下/自下而上
- 逐步细化/逐步积累
- 模块化设计
- 结构化编码
数据表现形式
计算机高级语言中,数据有两种表现形式:常量和变量
常变量和符号常量(#define)的区别:
#define是预编译指令,在预编译之后,符号常量就不存在了(置换成后面的常量了)。并且符号常量的符号是不会存储到存储单元中。但是常变量是一直存在的,存储在存储单元中。
逻辑语句
- if语句
优先度: ! > && > ||
非0为true,0为false。例:a=4,b=5; a&&b 值为1;!a||b值为1;4 && 0 || 2值为1;
if(表达式)
语句1
else if (表达式)
语句2
else
语句3
- 三目表达式
表达式1?表达式2:表达式3; - switch语句
同java的switch语句,需要break。否则顺次执行。
循环语句
break跳出循环体。continue结束本次循环
//while循环语句
while( 条件语句 ){
//do something
}
//do while语句
do{
//do something
}while(条件语句);
//for循环for(表达式1;表达式2;表达式3)
//表达式1可以是1个也可以是多个
for(i=0;i<10;i++){
//do something
}
函数定义
函数的调用,必须是在函数声明的后面。
函数分为内部函数和外部函数:static修饰的函数为内部函数,仅当前文件可以调用;extern修饰的函数为外部函数,其他文件也可以调用。
//无参函数
//类型名为指定函数的返回值类型
类型名 函数名(){
//函数体
}
//void 表示空
类型名 函数名(void){
//函数体
}
//有参函数
类型名 函数名(形式参数列表){
//函数体
}
//空函数
//作用:可视为一个占位符,用于扩展功能之类的
类型名 函数名(){}
//数组做参数函数
//[]中可有值为指定大小,无值为不指定数组大小
//数组的参数传递也是非值传递而是引用传递
类型名 函数名(float arr[10]){
//函数体
}
//二维数组函数
//[][]这样写是不正确的,内部数组必须指定长度
类型名 函数名(int arr[][2]){
//函数体
}
函数的声明和定义是不同的概念:
声明:只是把函数的名字、函数类型以及形参的类型、个数和顺序通知编译系统;
定义:将完整的函数功能的确立。
函数中不可以定义函数。
函数可以递归调用。递归函数,自己调用自己时,不需要声明。