程序设计初步
1.程序的基本结构
函数
函数 是C语言程序的基本单位
函数以 {} 为开始/结束标志
作为一个程序,必须有一个主函数,即 main 函数
每个函数由语句构成,每个语句以 ; 结尾
预编译命令
每个C语言程序都含有预编译命令
预编译命令有三类:
- 宏定义
#define PI 3.14
- 文件引入
#include <stdio.h>
- 条件编译
(我没用过)#ifdef
注释
注释在程序的编译与运行中均不起作用,仅仅增加程序可读性
具体格式:
//这是一条注释
2.基本概念
基本字符
C语言源程序只能存在基本字符,否则无法通过编译
基本字符包括:
- 大小写字母
- 数字
- 其他的可显示字符
- 特殊字符
注: 程序中所有的字符(除了注释中的内容)必须是英文格式
标识符
标识符用于标识程序中的名字,描述变量(其实就是你给函数或变量取的名)
分为三类:
- 用户自定义标识符
- 预定义标识符
- 关键字
几个重要特征:
- 标识符只能由 字母,数字及下划线 组成
- 标识符对大小写敏感
关于关键字:
系统给其赋予了特定功能,不能用于其他目的
如:
int
float
double
char
break
...
3.数据类型
C语言中的数据区分类型
分类
- 基本类型
- 整形:int
- 字符型:char
- 浮点型:
- 单精度浮点型:float
- 双精度浮点型:double
- 构造类型
- 数组类型
- 结构体类型
- 共用体类型
- 枚举类型
- 指针类型
- 空类型
限于章节原因,本处仅对基本类型进行说明
基本数据类型
整形(int)
用于描述整数
取值范围:$-2^{31}$~$2^{31}-1$
浮点型(float,double)
用于描述实数
其中 float 与 double 的区别在于前者精度更低,占用内存也更小
由于计算机以指数形式存储浮点型,因此存在误差
字符型(char)
用于存储单个字符信息
存储的是对应字符的 ASCⅡ码
在此举一例:
printf("%c", 63);
printf("%c", ?);
这两条语句的输出结果应当都是字符 ‘ ?’
基本数据类型的扩充
短整型(short int / short)
与 整形(int) 的区别在于取值范围更小,占用内存也更小
取值范围:$-2^{15}$~$2^{15}-1$
长整型(long int / long)
与 整形(int) 的区别在于取值范围大于等于int的范围,主要用于处理一些比较大的整数问题
无数据类型(unsigned)
unsigned 可以加在 int, short, long, char 的前面,取消其二进制数第一位表示符号的限制,因此unsigned类型只能表示正数
变量 & 常量
顾名思义,变量在函数编译过程中可变,而常量不可变
如:
double x = 2.3;
这一语句中,x是被定义出来的变量,2.3是个常量
变量
系统在编译过程中会为变量分配相应的内存空间,不同类型的变量被分配的空间不同
变量的定义:
int i;
char c;
...
变量的赋值:
int i;
i = 10;
常量
分类:
- 整形常量
- 实型常量
- 字符型常量
- 字符串常量
- 符号常量
关于字符型常量参与计算
由于字符型常量存储的是相应字符的 ASCⅡ码,因此可以将其作为整形进行相应计算
如:
char c = 'a';
c = c - 32;
printf("%c", c);
这里的输出结果应该是 ‘A’
关于转义字符
用转义字符表示 ASCⅡ码 中不可打印的功能性字符
如:换行表示为‘ \n ’, 制表(tab)表示为‘ \t ’, …
关于字符串常量
字符串常量利用双引号括起来,可表示多个字符的集合
如:
"Hello world"
4. 数据的输入与输出
输出函数printf
一般格式:
printf("格式控制串", 输出表列);
格式控制串决定输出的数据类型,分别表示为:
- %d -> int
- %f -> float/double
- %c -> char
- %ld -> long
- %s -> 字符串
输入函数scanf(在Visual Studio中为scanf_s)
一般格式:
scanf("格式控制串", 地址表列);
注:
格式控制串与printf大抵相同,但是这里将 double 的格式控制串更改为了 %lf
同时后面的地址表列为地址,故需要在变量前加上取地址符号 &
字符型数据的输入与输出
C语言为字符型数据设定了新的输入方式( getchar )与新的输出方式( putchar )
格式为:
char ch = getchar();
putchar(ch);
5.运算符与表达式
运算符
运算符是C语言中表示相应运算的特殊符号
关于运算符的运算顺序与层级,博主认为依靠个人的编程经验与计算习惯可以判断,故这里不再详述。
几点提示:
- C语言中整形除以整形得出的数字还是整形,如:
这个语句的输出应当是1printf("%d", 8/5);
- size of 是个运算符,不是个函数,要记牢
- 自增(减)时,如果符号在前,就先加减,再运算,反之,若符号在后,就先运算,再加减
- 关于 +,*,% 与 = 的连用:
等价于:a += 2;
上述法则对于 *,%同样适用,不再赘述a = a + 2;
6.数据类型的转换
自动类型转换
在运算时,如果程序识别到两个不同类型的数据进行运算,会以 向高看齐 的原则进行格式转换
注意:此时可能会出现数值溢出的问题,通常警告为:
warning: overflow in implicit constant conversion
强制类型转换
在编程过程中,如果需要令一个变量以另一个数据类型参与运算,可以采用强制类型转换的方式,具体格式为:
int i;
double x;
x = (double)i + 3.14;
可以看到,上述过程中对原本为整形的 i 进行了强制类型转换,将其转换为 double 类型参与运算
需要注意的是,强制类型转换后,被转换的变量类型是不变的,即 i 仍然是int型变量
7.数学函数
在C语言中有相应的对各种数学函数进行定义的库: <math.h>
在需要使用时,在函数前进行相应的预编译即可
以上,是编程前需要了解的一些知识
这篇博文就到这里~