第一周笔记-C语言

C语言入门教程

第一节 初识C语言

一、预处理指令

  1. #include - 文件包含指令
  2. #define - 宏定义(例如:#define PI 3.14

二、变量声明

  1. 基本数据类型

    • int - 整型
    • float - 单精度浮点型
  2. 变量命名规则

    • 只能包含字母、数字和下划线
    • 不能以数字开头,只能以字母或下划线开头
    • 不能与C语言关键字重复
    • 区分大小写
  3. 多变量声明

    • 可以一次性声明多个同类型变量
    • 示例:int a, b, c, d = 2;

三、格式化输入输出

  1. 输出函数

    printf("格式字符串", 变量);
    
  2. 输入函数

    scanf("格式字符串", &变量);
    
    • 注意:需要改变变量值时必须使用取地址符&
  3. 常用格式说明符

    • %d - 整型
    • %f - 浮点型
  4. 转义序列

    • \n - 换行符
  5. 赋值操作

    • 示例:int a = 1; float b = 1.0;
    • 赋值操作不改变变量地址
  6. 格式控制

格式符 说明
%n.md m表示显示的最小位数,不足补0,超过正常显示
%n.mf m表示小数点后的位数,默认为6位

四、综合练习

#include <stdio.h>   // 标准输入输出库
#include <stdlib.h>  // 标准库

#define PI 3.14159   // 定义圆周率常量

/* 变量定义区 */
int r;               // 第一个圆的半径
int r2;              // 第二个圆的半径
float volume;        // 第一个圆的体积
float volume2;       // 第二个圆的体积

int main(int argc, char *argv[]) 
{
    // 主函数 - C程序执行的起点
    
    printf("请输入第一个圆的半径:");
    scanf("%d", &r);
    printf("请输入第二个圆的半径:");
    scanf("%d", &r2);
    
    // 计算球体体积:V = 4/3 * π * r³
    volume = 4.0f / 3.0f * PI * r * r * r;
    printf("第一个球的体积 = %f\n", volume);
    
    volume2 = 4.0f / 3.0f * PI * r2 * r2 * r2;
    printf("第二个球的体积 = %f\n", volume2);
    
    return 0;
}

第二节 表达式与选择语句

一、表达式

  1. 类型转换规则

    • int型与float型运算,结果为float
  2. 运算符限制

    • %取模运算只能用于整数
    • /除法和%取模用于负数时,结果与编译器相关
  3. 负数运算示例-9/7-9%7):

取整方式 除法结果 取模结果
向零取整 -1 -2
向负无穷取整 -2 5
  1. 优先级建议:使用括号明确运算顺序

  2. 自增运算符

    • i++:先使用值,后自增
    • ++i:先自增,后使用值

二、选择语句

  1. 逻辑运算符

    • &&:逻辑与(全真为真)
    • ||:逻辑或(全假为假)
    • !:逻辑非
  2. 真假值

    • 真:1(非零值)
    • 假:0
  3. if语句结构

    if (条件) {
        语句块;
    } else if (条件) {
        语句块;
    } else {
        语句块;
    }
    
  4. 条件运算符

    变量 = 条件 ? 表达式1 : 表达式2;
    
  5. 布尔类型_Bool

  6. switch语句

    switch (表达式) {
        case 常量1:
            语句块;
            break;
        case 常量2:
            语句块;
            break;
        default:
            语句块;
            break;
    }
    

第三节 循环语句

一、循环结构

  1. while循环

    while (条件表达式) {
        循环体语句;
    }
    
  2. do-while循环

    do {
        循环体语句;
    } while (条件表达式);
    
  3. for循环

    for (初始化; 条件; 更新) {
        循环体语句;
    }
    
  4. 循环控制语句

语句 功能
break 跳出整个循环
continue 跳过本次循环剩余部分
  1. goto语句示例

    #include <stdio.h>
    
    int a = 1, b = 2, c = 3;
    
    int main() {
        goto c;
        
    a:
        printf("%d", a);
    b:
        printf("%d", b);
    c:
        printf("%d", c);
        
        return 0;
    }
    

第四节 数制与码值和基本数据类型

一、数制系统

  1. 常用进制:二进制、八进制、十进制、十六进制

  2. 位权概念:每位数字代表的实际值

二、计算机存储体系

  1. 二进制基础:0/1对应低电平/高电平

  2. 存储单位:1字节 = 8比特

  3. CPU字长:处理器一次性处理的数据长度

    • 8位、16位:常用于嵌入式系统
    • 32位、64位:现代计算机
  4. 进制转换:4位二进制对应1位十六进制

三、码制系统

  1. 整数表示:使用最高位作为符号位

  2. 编码方式

    • 原码:直接二进制表示

    • 反码:符号位不变,其余取反

    • 补码:反码加1(现代计算机标准)

  3. 浮点数存储:采用IEEE 754标准

四、C语言基本数据类型

  1. 有符号整型

    • int / signed int:4字节(-2³¹ ~ 2³¹-1)
  2. 无符号整型

    • unsigned int:4字节(0 ~ 2³²-1)
  3. 其他整型

类型 大小(字节)
short int 2
long int 4/8
long long int 8
  1. 字符类型

    • char / signed char:1字节(-128 ~ 127)
    • unsigned char:1字节(0 ~ 255)
  2. ASCII码表:字符与数字的映射关系

  3. 浮点类型

类型 符号位 指数位 尾数位 总位数
单精度(float) 1 8 23 32
双精度(double) 1 11 52 64
  1. 精度处理:浮点数比较应使用误差范围

  2. 宏定义应用

    #define UINT unsigned int
    UINT i;  // 等同于 unsigned int i;
    

第五节 数组与指针入门

一、一维数组

  • 定义数据类型 数组名[大小] = {初始值};
  • 访问数组名[索引](索引从0开始)

二、多维数组

  • 定义数据类型 数组名[行数][列数] = {初始值};
  • 访问数组名[行索引][列索引]

三、数组存储特性

  • 数组元素在内存中连续存储
  • 多维数组按行优先顺序存储

四、特殊数组类型

  1. const修饰符:定义不可修改的常量

  2. 字符串

    • 双引号表示,自动添加\0结束符
    • 字符使用单引号
  3. 字符串初始化

    char str1[] = "abc";        // 自动计算长度
    char str2[4] = {'a','b','c','\0'}; // 显式声明
    
  4. 格式说明符

    • 字符串:%s
    • 字符:%c

五、指针基础

  1. 指针概念:存储内存地址的变量

  2. 指针声明

    数据类型 *指针变量名 = &目标变量;
    
  3. 初始化建议:定义时初始化为NULL

第六节 函数与程序结构

一、函数基础

  1. 函数结构

    返回类型 函数名(参数列表) {
        函数体;
        return 返回值;
    }
    
  2. 函数声明:提前声明函数原型

  3. 参数传递

    • 需要修改原变量时传递地址
    • 否则传递值副本
  4. 返回值:可以是值或表达式

  5. 函数组织

    • 声明可放在前面,定义放在main函数后
    • 提高代码可读性

二、程序结构

  1. 变量作用域
类型 位置 初始化 生命周期
全局变量 函数外部 默认为0 程序运行期间
局部变量 函数内部 值随机 函数执行期间
  1. extern关键字

    • 用于引用其他文件的变量
    • 不推荐过度使用
  2. 模块化设计:合理组织函数和文件结构