C语言简介

本文档目的:了解C语言基本语法,能基本看懂代码和常见简单错误修改

C 语言是一门经典的结构化编程语言,应用广泛(如操作系统、嵌入式、底层开发等)。

1.C 语言程序基本结构
  (1)一个完整的 C 程序包含头文件、主函数、变量/语句、输出/输入等核心部分
         头文件不准确的理解:类似python库使用目的,无需自己手写基础功能;复用官方 / 第三方提供的成熟代码;简化开发,减少重复造轮子。

// 头文件:引入标准输入输出库(printf/scanf需要)
#include <stdio.h>

// 主函数:程序入口(必须有且仅有一个main函数)
int main() {
    // 变量定义:数据类型 变量名 = 初始值;
    int age = 20;
    char name[] = "C语言";  // 字符数组(字符串)
    
    // 输出:printf("格式控制符", 变量/常量);
    printf("Hello %s!\n", name);  // \n是换行符
    printf("年龄:%d\n", age);     // %d对应整数,%s对应字符串
    
    // 输入:scanf("格式控制符", &变量地址);
    printf("请输入新年龄:");
    scanf("%d", &age);  // &是取地址符,必须加(除字符数组)
    printf("更新后的年龄:%d\n", age);
    
    // 返回值:main函数返回0表示程序正常结束
    return 0;
}

  (2)编译运行步骤:
          保存为 test.c(C 语言源文件后缀);
          用编译器(如 GCC)编译:gcc test.c -o test;
          运行程序:Windows 输入test.exe,Linux/Mac 输入./test。


2.核心语法
  (1)条件判断(if-else/switch)

#include <stdio.h>
int main() {
    int score = 85;
    
    // if-else判断
    if (score >= 90) {
        printf("优秀\n");
    } else if (score >= 80) {
        printf("良好\n");
    } else if (score >= 60) {
        printf("及格\n");
    } else {
        printf("不及格\n");
    }
    
    // switch多分支(适合固定值判断)
    int num = 2;
    switch (num) {
        case 1: printf("周一\n"); break;  // break防止穿透
        case 2: printf("周二\n"); break;
        default: printf("其他\n");
    }
    return 0;
}

  (2)循环(for/while/do-while)

#include <stdio.h>
int main() {
    // for循环(适合已知循环次数)
    printf("1-5的整数:");
    for (int i = 1; i <= 5; i++) {  // 初始化;条件;自增
        printf("%d ", i);
    }
    printf("\n");
    
    // while循环(适合未知循环次数)
    int sum = 0, n = 1;
    while (n <= 100) {  // 先判断条件,再执行
        sum += n;
        n++;
    }
    printf("1-100求和:%d\n", sum);
    
    // do-while循环(至少执行一次)
    int x = 0;
    do {
        printf("执行一次\n");
    } while (x > 0);  // 条件不成立,但仍执行一次
    return 0;
}

  (3)数组(批量存储同类型数据)

#include <stdio.h>
int main() {
    // 一维数组
    int arr[5] = {10, 20, 30, 40, 50};  // 长度5,索引0-4
    printf("数组第3个元素:%d\n", arr[2]);  // 索引从0开始
    
    // 遍历数组
    printf("数组所有元素:");
    for (int i = 0; i < 5; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");
    
    // 二维数组(行×列)
    int matrix[2][3] = {{1,2,3}, {4,5,6}};
    printf("二维数组[1][2]:%d\n", matrix[1][2]);  // 输出6
    return 0;
}

  (4)函数(代码复用)

#include <stdio.h>

// 自定义函数:求两数之和
int add(int a, int b) {  // 返回值类型 函数名(参数列表)
    return a + b;        // 返回结果
}

// 无返回值函数(void)
void printHello() {
    printf("Hello 函数!\n");
}

int main() {
    printHello();
    int res = add(10, 20);
    printf("10+20=%d\n", res);  // 输出30
    return 0;
}

3.常见实战场景
  (1)计算阶乘(递归 + 循环)

#include <stdio.h>

// 递归求阶乘
int factorial(int n) {
    if (n == 0 || n == 1) return 1;  // 递归终止条件
    return n * factorial(n-1);       // 递归调用
}

int main() {
    int n = 5;
    // 循环方式
    int res = 1;
    for (int i = 1; i <= n; i++) {
        res *= i;
    }
    printf("循环:%d! = %d\n", n, res);       // 输出120
    printf("递归:%d! = %d\n", n, factorial(n));  // 输出120
    return 0;
}

  (2)冒泡排序(数组排序)

#include <stdio.h>

void bubbleSort(int arr[], int len) {
    for (int i = 0; i < len-1; i++) {  // 外层循环:控制轮数
        for (int j = 0; j < len-1-i; j++) {  // 内层循环:比较交换
            if (arr[j] > arr[j+1]) {
                // 交换两数
                int temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp;
            }
        }
    }
}

int main() {
    int arr[] = {5, 2, 9, 1, 5, 6};
    int len = sizeof(arr)/sizeof(arr[0]);  // 计算数组长度
    bubbleSort(arr, len);
    
    printf("排序后:");
    for (int i = 0; i < len; i++) {
        printf("%d ", arr[i]);  // 输出1 2 5 5 6 9
    }
    return 0;
}

4.C 语言核心注意事项

  (1)数据类型:int(整数)、float/double(浮点)、char(字符)、void(空类型)等;
  (2)指针:C 语言的核心(int *p = &num; 表示指针 p 指向 num 的地址),后续可深入学习;
  (3)内存管理:手动分配 / 释放内存(malloc/free),避免内存泄漏;
  (4)语法规范:语句以;结尾,花括号{}包裹代码块,变量必须先定义后使用;
  (5)常见错误
          忘记加&(scanf 输入变量时)
          数组越界(访问超出索引范围)
          递归无终止条件(导致栈溢出)

 

posted on 2025-12-20 10:30  枫飘过的天1  阅读(3)  评论(0)    收藏  举报