C语言程序设计-Chap.2


程序设计初步

1.程序的基本结构

函数

函数 是C语言程序的基本单位
函数以 {} 为开始/结束标志
作为一个程序,必须有一个主函数,即 main 函数
每个函数由语句构成,每个语句以 结尾

预编译命令

每个C语言程序都含有预编译命令
预编译命令有三类:

  1. 宏定义
    #define PI 3.14
  2. 文件引入
    #include <stdio.h>
  3. 条件编译 (我没用过)
    #ifdef

注释

注释在程序的编译与运行中均不起作用,仅仅增加程序可读性
具体格式:

//这是一条注释

2.基本概念

基本字符

C语言源程序只能存在基本字符,否则无法通过编译
基本字符包括:

  1. 大小写字母
  2. 数字
  3. 其他的可显示字符
  4. 特殊字符

注: 程序中所有的字符(除了注释中的内容)必须是英文格式

标识符

标识符用于标识程序中的名字,描述变量(其实就是你给函数或变量取的名)
分为三类:

  1. 用户自定义标识符
  2. 预定义标识符
  3. 关键字

几个重要特征:

  1. 标识符只能由 字母,数字及下划线 组成
  2. 标识符对大小写敏感

关于关键字:
系统给其赋予了特定功能,不能用于其他目的
如:

int
float
double
char
break
...

3.数据类型

C语言中的数据区分类型

分类

  1. 基本类型
    1. 整形:int
    2. 字符型:char
    3. 浮点型:
      1. 单精度浮点型:float
      2. 双精度浮点型:double
  2. 构造类型
    1. 数组类型
    2. 结构体类型
    3. 共用体类型
    4. 枚举类型
  3. 指针类型
  4. 空类型

限于章节原因,本处仅对基本类型进行说明

基本数据类型

整形(int)

用于描述整数
取值范围:$-2^{31}$~$2^{31}-1$

浮点型(float,double)

用于描述实数
其中 floatdouble 的区别在于前者精度更低,占用内存也更小
由于计算机以指数形式存储浮点型,因此存在误差

字符型(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;

常量

分类:

  1. 整形常量
  2. 实型常量
  3. 字符型常量
  4. 字符串常量
  5. 符号常量
关于字符型常量参与计算

由于字符型常量存储的是相应字符的 ASCⅡ码,因此可以将其作为整形进行相应计算
如:

char c = 'a';
c = c - 32;
printf("%c", c);

这里的输出结果应该是 ‘A’

关于转义字符

用转义字符表示 ASCⅡ码 中不可打印的功能性字符
如:换行表示为‘ \n ’, 制表(tab)表示为‘ \t ’, …

关于字符串常量

字符串常量利用双引号括起来,可表示多个字符的集合
如:

"Hello world"

4. 数据的输入与输出

输出函数printf

一般格式:

printf("格式控制串", 输出表列);

格式控制串决定输出的数据类型,分别表示为:

  1. %d -> int
  2. %f -> float/double
  3. %c -> char
  4. %ld -> long
  5. %s -> 字符串

输入函数scanf(在Visual Studio中为scanf_s)

一般格式:

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

注:
格式控制串与printf大抵相同,但是这里将 double 的格式控制串更改为了 %lf
同时后面的地址表列为地址,故需要在变量前加上取地址符号 &

字符型数据的输入与输出

C语言为字符型数据设定了新的输入方式( getchar )与新的输出方式( putchar
格式为:

char ch = getchar();
putchar(ch);

5.运算符与表达式

运算符

运算符是C语言中表示相应运算的特殊符号
运算符表

关于运算符的运算顺序与层级,博主认为依靠个人的编程经验与计算习惯可以判断,故这里不再详述。

几点提示:

  1. C语言中整形除以整形得出的数字还是整形,如:
    printf("%d", 8/5);
    这个语句的输出应当是1
  2. size of 是个运算符,不是个函数,要记牢
  3. 自增(减)时,如果符号在前,就先加减,再运算,反之,若符号在后,就先运算,再加减
  4. 关于 +,*,%= 的连用:
    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>
在需要使用时,在函数前进行相应的预编译即可

math.h中的常用函数

以上,是编程前需要了解的一些知识

这篇博文就到这里~


文章作者: MUG-chen
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 MUG-chen !
  目录
加载中...