第一章:C语言简介

1.1 C语言的历史与特点

C语言是一种广泛使用的计算机编程语言,由丹尼斯·里奇在1972年发明。它以其简洁、高效、可移植性强而著称。C语言是许多其他高级语言的基石,包括C++、C#和Java。

1.2 C语言的优势

  • 接近硬件:C语言允许程序员与硬件进行直接交互,这使得它在系统编程、嵌入式系统和操作系统开发中非常有用。
  • 高效性:C语言编写的程序通常比用其他高级语言编写的程序运行得更快。
  • 可移植性:C语言编写的程序可以很容易地在不同的计算机系统上运行。

第二章:C语言基础语法

2.1 基本数据类型

在C语言中,有几种基本的数据类型,包括整数(int)、浮点数(float和double)、字符(char)和布尔值(int)。

2.2 变量和常量

变量是用于存储数据的标识符,而常量是具有固定值的标识符。

int age = 25;
const float pi = 3.14159;

2.3 运算符

C语言提供了丰富的运算符,包括算术运算符、赋值运算符、比较运算符和逻辑运算符。

第三章:控制流程

3.1 条件语句

条件语句用于根据条件执行不同的代码块。

if (age > 18) {
    printf("你是成年人。\n");
} else {
    printf("你不是成年人。\n");
}

3.2 循环语句

循环语句用于重复执行代码块。

for (int i = 0; i < 10; i++) {
    printf("%d\n", i);
}

3.3 分支语句

分支语句允许程序根据条件选择执行不同的代码路径。

switch (grade) {
    case 'A':
        printf("优秀。\n");
        break;
    case 'B':
        printf("良好。\n");
        break;
    case 'C':
        printf("中等。\n");
        break;
    default:
        printf("不及格。\n");
        break;
}

第四章:函数

4.1 函数的定义与调用

函数是C语言中用于组织代码和重用代码的一种方式。

#include <stdio.h>

void sayHello() {
    printf("你好,世界!\n");
}

int main() {
    sayHello();
    return 0;
}

4.2 递归函数

递归函数是能够调用自身的函数。

int factorial(int n) {
    if (n <= 1) {
        return 1;
    } else {
        return n * factorial(n - 1);
    }
}

int main() {
    int result = factorial(5);
    printf("5的阶乘是:%d\n", result);
    return 0;
}

第五章:指针

5.1 指针的概念

指针是存储变量地址的变量。它们在内存管理、动态分配和高级数据结构中非常重要。

5.2 指针的使用

int main() {
    int x = 10;
    int *ptr = &x;

    printf("x的值是:%d\n", x);
    printf("ptr指向的值是:%d\n", *ptr);

    return 0;
}

第六章:结构体与联合体

6.1 结构体

结构体是用于组合不同类型的数据的复合数据类型。

struct Person {
    char name[50];
    int age;
    float height;
};

int main() {
    struct Person person;
    strcpy(person.name, "张三");
    person.age = 25;
    person.height = 1.75;

    printf("姓名:%s\n", person.name);
    printf("年龄:%d\n", person.age);
    printf("身高:%f\n", person.height);

    return 0;
}

6.2 联合体

联合体是用于存储不同类型数据的内存区域,但同一时间只能存储其中一种类型的数据。

union Data {
    int i;
    float f;
    char c;
};

int main() {
    union Data data;
    data.i = 10;
    printf("整数值:%d\n", data.i);

    data.f = 3.14;
    printf("浮点数值:%f\n", data.f);

    data.c = 'A';
    printf("字符值:%c\n", data.c);

    return 0;
}

第七章:文件操作

7.1 文件的概念

文件是存储在磁盘上的数据集合。C语言提供了丰富的文件操作函数,包括打开、读取、写入和关闭文件。

7.2 文件操作示例

#include <stdio.h>

int main() {
    FILE *fp = fopen("example.txt", "w");

    if (fp == NULL) {
        perror("打开文件失败");
        return 1;
    }

    fprintf(fp, "这是一段测试文本。\n");
    fclose(fp);

    return 0;
}

第八章:C语言编程实战

8.1 编写一个简单的计算器程序

#include <stdio.h>

int main() {
    char operator;
    double first, second;

    printf("请输入一个运算符 (+, -, *, /): ");
    scanf("%c", &operator);

    printf("请输入两个操作数: ");
    scanf("%lf %lf", &first, &second);

    switch (operator) {
        case '+':
            printf("%.1lf + %.1lf = %.1lf\n", first, second, first + second);
            break;
        case '-':
            printf("%.1lf - %.1lf = %.1lf\n", first, second, first - second);
            break;
        case '*':
            printf("%.1lf * %.1lf = %.1lf\n", first, second, first * second);
            break;
        case '/':
            if (second != 0.0)
                printf("%.1lf / %.1lf = %.1lf\n", first, second, first / second);
            else
                printf("除数不能为0。\n");
            break;
        default:
            printf("无效的运算符。\n");
    }

    return 0;
}

8.2 编写一个简单的学生信息管理系统

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX_STUDENTS 100

struct Student {
    char name[50];
    int age;
    float score;
};

void addStudent(struct Student students[], int *count) {
    struct Student newStudent;
    printf("请输入学生姓名: ");
    scanf("%49s", newStudent.name);
    printf("请输入学生年龄: ");
    scanf("%d", &newStudent.age);
    printf("请输入学生成绩: ");
    scanf("%f", &newStudent.score);

    students[*count] = newStudent;
    (*count)++;
}

void printStudents(const struct Student students[], int count) {
    for (int i = 0; i < count; i++) {
        printf("姓名:%s, 年龄:%d, 成绩:%.2f\n", students[i].name, students[i].age, students[i].score);
    }
}

int main() {
    struct Student students[MAX_STUDENTS];
    int count = 0;

    while (1) {
        printf("\n学生信息管理系统\n");
        printf("1. 添加学生\n");
        printf("2. 打印所有学生\n");
        printf("3. 退出\n");
        printf("请输入选项: ");
        int choice;
        scanf("%d", &choice);

        switch (choice) {
            case 1:
                addStudent(students, &count);
                break;
            case 2:
                printStudents(students, count);
                break;
            case 3:
                exit(0);
            default:
                printf("无效的选项。\n");
        }
    }

    return 0;
}

第九章:C语言编程技巧与注意事项

9.1 命名规范

在C语言中,命名规范非常重要。通常,变量、函数和宏的名字应该具有描述性,并且遵循小写字母和下划线的命名约定。

9.2 注释

注释是编写可读代码的重要部分。在C语言中,可以使用单行注释(//)和多行注释(/* … */)。

9.3 错误处理

在编写C语言程序时,错误处理非常重要。应该检查每个函数调用的返回值,并且处理可能出现的错误情况。

第十章:C语言编程资源

10.1 书籍

  • 《C程序设计语言》(K&R)
  • 《C陷阱与缺陷》(Andrew Koenig)
  • 《C专家编程》(Peter van der Linden)

10.2 网站

通过以上内容,相信你已经对C语言入门有了更深入的了解。祝你学习愉快!