前言

C语言,作为一门历史悠久且应用广泛的编程语言,是许多编程爱好者和专业人士的入门首选。它以其简洁、高效和强大的功能,在操作系统、嵌入式系统、游戏开发等领域有着广泛的应用。本笔记将带你走进C语言的世界,通过课堂实用笔记和案例解析,帮助你快速掌握C语言编程的基础。

第一部分:C语言基础

1.1 C语言简介

C语言由Dennis Ritchie在1972年发明,最初用于编写操作系统UNIX。它是一种过程式编程语言,具有以下特点:

  • 简洁明了
  • 高效
  • 可移植性强
  • 强大的库函数支持

1.2 C语言开发环境

要开始学习C语言,你需要安装以下开发环境:

  • 编译器:如GCC、Clang等
  • 编辑器:如VS Code、Sublime Text等
  • 调试器:如GDB等

1.3 C语言基本语法

C语言的基本语法包括:

  • 数据类型:整型、浮点型、字符型等
  • 变量:用于存储数据的容器
  • 运算符:用于进行数学运算、逻辑运算等
  • 控制语句:用于控制程序流程,如if、for、while等

第二部分:C语言进阶

2.1 函数

函数是C语言的核心组成部分,用于封装代码块,提高代码复用性。以下是一个简单的函数示例:

#include <stdio.h>

// 函数声明
int add(int a, int b);

int main() {
    int result = add(10, 20);
    printf("Result: %d\n", result);
    return 0;
}

// 函数定义
int add(int a, int b) {
    return a + b;
}

2.2 指针

指针是C语言中的一种特殊数据类型,用于存储变量的内存地址。以下是一个使用指针的示例:

#include <stdio.h>

int main() {
    int a = 10;
    int *ptr = &a; // 指针ptr指向变量a的地址

    printf("Value of a: %d\n", a);
    printf("Address of a: %p\n", (void *)&a);
    printf("Value of ptr: %p\n", (void *)ptr);
    printf("Value of *ptr: %d\n", *ptr);

    return 0;
}

2.3 结构体

结构体是C语言中的一种用户自定义数据类型,用于将多个不同类型的数据组合成一个整体。以下是一个结构体的示例:

#include <stdio.h>

// 定义一个学生结构体
typedef struct {
    char name[50];
    int age;
    float score;
} Student;

int main() {
    Student stu1;
    strcpy(stu1.name, "Alice");
    stu1.age = 20;
    stu1.score = 90.5;

    printf("Name: %s\n", stu1.name);
    printf("Age: %d\n", stu1.age);
    printf("Score: %.1f\n", stu1.score);

    return 0;
}

第三部分:案例解析

3.1 计算器程序

以下是一个简单的计算器程序,用于实现加、减、乘、除运算:

#include <stdio.h>

int main() {
    char operator;
    double num1, num2, result;

    printf("Enter an operator (+, -, *, /): ");
    scanf("%c", &operator);

    printf("Enter two operands: ");
    scanf("%lf %lf", &num1, &num2);

    switch (operator) {
        case '+':
            result = num1 + num2;
            break;
        case '-':
            result = num1 - num2;
            break;
        case '*':
            result = num1 * num2;
            break;
        case '/':
            if (num2 != 0)
                result = num1 / num2;
            else {
                printf("Error! Division by zero.\n");
                return 1;
            }
            break;
        default:
            printf("Error! Invalid operator.\n");
            return 1;
    }

    printf("Result: %.2lf\n", result);

    return 0;
}

3.2 排序算法

以下是一个使用冒泡排序算法对整数数组进行排序的示例:

#include <stdio.h>

void bubbleSort(int arr[], int n) {
    int i, j, temp;
    for (i = 0; i < n - 1; i++) {
        for (j = 0; j < n - i - 1; j++) {
            if (arr[j] > arr[j + 1]) {
                temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }
}

int main() {
    int arr[] = {64, 34, 25, 12, 22, 11, 90};
    int n = sizeof(arr) / sizeof(arr[0]);

    bubbleSort(arr, n);

    printf("Sorted array: \n");
    for (int i = 0; i < n; i++)
        printf("%d ", arr[i]);
    printf("\n");

    return 0;
}

结语

通过本笔记的学习,相信你已经对C语言有了初步的了解。在实际编程过程中,不断练习和积累经验是非常重要的。希望你能将所学知识应用到实际项目中,成为一名优秀的C语言程序员。