C学习教程,从入门到精通,C语言概述 —— 知识点详解(1)

C语言概述 ------ 知识点详解


一、C语言的发展史

1.1 程序语言简述

什么是程序?

程序(Program)是为解决某一特定问题而用某种计算机语言编写的一系列指令集合。计算机本质上只能识别二进制数据(0和1),因此早期的程序员需要直接用机器语言(即二进制代码)编写程序,效率极低且容易出错。

程序设计语言的发展经历了三个阶段:

阶段 语言类型 特点 代表
第一阶段 机器语言 由0和1组成的二进制指令,计算机可直接执行,但人类难以阅读和编写 机器指令
第二阶段 汇编语言 用助记符(如 MOV、ADD)代替二进制指令,需要通过汇编器翻译为机器语言 Assembly
第三阶段 高级语言 接近自然语言和数学表达式,可读性强,需要通过编译器或解释器翻译为机器语言 C、Java、Python等

高级语言又分为两类:

  • 编译型语言:源代码通过编译器一次性翻译成机器码(可执行文件),运行速度快。代表:C、C++。
  • 解释型语言:源代码由解释器逐行翻译并执行,运行速度相对较慢,但跨平台性好。代表:Python、JavaScript。

C语言属于编译型高级语言,兼具高级语言的可读性和底层语言的高效性。


1.2 C语言的发展历程

C语言的发展历程可以概括为以下几个关键节点:

(1) 起源------BCPL与B语言(1960s-1970s)

  • 1967年 ,英国剑桥大学的 Martin Richards 开发了 BCPL(Basic Combined Programming Language)语言,主要用于操作系统和编译器的开发。
  • 1970年 ,美国贝尔实验室的 Ken Thompson 在BCPL的基础上简化设计了 B语言,并用B语言编写了第一个运行在PDP-7上的UNIX操作系统。

(2) 诞生------C语言(1972年)

  • 1972年 ,贝尔实验室的 Dennis Ritchie(丹尼斯·里奇) 在B语言的基础上重新设计和改进,诞生了C语言。
  • C语言最初被用来重写UNIX操作系统,使得UNIX成为第一个用高级语言编写的操作系统。

(3) 标准化------K&R C(1978年)

  • 1978年 ,Brian Kernighan 和 Dennis Ritchie 合著出版了《The C Programming Language》一书(俗称K&R C),该书成为C语言的事实标准。

(4) ANSI C标准(1989年)

  • 1989年 ,美国国家标准学会(ANSI)正式发布了C语言标准,称为 ANSI C(也称C89),这是C语言的第一个正式国际标准。

(5) ISO C标准

  • 1990年 ,国际标准化组织(ISO)采纳了ANSI C标准,发布为 ISO/IEC 9899:1990(也称C90)。
  • 1999年 ,ISO发布了 C99 标准,增加了许多新特性,如 // 单行注释、变长数组、long long 类型等。
  • 2011年 ,ISO发布了 C11 标准,增加了多线程支持、泛型选择等特性。
  • 2018年 ,ISO发布了 C17(C18)标准,主要是对C11的缺陷修正。

C语言发展时间线图:

复制代码
1967 BCPL → 1970 B语言 → 1972 C语言诞生 → 1978 K&R C → 1989 ANSI C(C89) → 1999 C99 → 2011 C11 → 2018 C17

1.3 C语言的特点

C语言之所以经久不衰,至今仍被广泛使用,主要因为它具有以下显著特点:

(1) 简洁紧凑、灵活方便

C语言一共只有32个关键字(ANSI C标准)、9种控制语句,语法简洁明了。程序书写形式自由,区分大小写。

(2) 运算符丰富

C语言共有34种运算符,包括算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符、条件运算符等。运算符的丰富使得C语言可以实现非常灵活的表达式。

(3) 数据结构丰富

C语言的数据类型包括:整型(int)、浮点型(float、double)、字符型(char)、数组类型、指针类型、结构体类型(struct)、共用体类型(union)、枚举类型(enum)等。能够实现各种复杂的数据结构,如链表、树、图等。

(4) 结构化语言

C语言采用函数作为程序的基本模块,支持顺序结构、选择结构(if-else、switch)、循环结构(for、while、do-while),使程序层次清晰,便于维护。

(5) 语法限制不太严格,程序设计自由度大

C语言允许程序员对底层内存进行直接操作(通过指针),给予程序员极大的自由度,但同时也要求程序员对自己的代码负责。

(6) 兼具高级语言和低级语言的功能

C语言可以直接访问物理地址,进行位操作,具有汇编语言的底层操控能力,同时又具有高级语言的结构化和可读性。因此C语言有时被称为"中级语言"。

(7) 生成目标代码质量高,程序执行效率高

C语言编译后的程序运行效率仅比汇编语言低10%~20%,是开发系统软件和嵌入式系统的首选语言。

(8) 可移植性强

C语言的源代码可以在不同的平台上通过相应的编译器编译运行,无需修改或只需少量修改。UNIX操作系统的成功移植就得益于C语言的这一特性。


二、一个简单的C程序

2.1 一个完整的C程序

下面是一个最经典的C语言入门程序------"Hello, World!"程序:

c 复制代码
/* 
 * 文件名:hello.c
 * 功能:在屏幕上输出 "Hello, World!"
 * 作者:初学者
 * 日期:2024-01-01
 */

#include <stdio.h>   /* 引入标准输入输出头文件,提供printf等函数的声明 */

int main()            /* 主函数,程序的入口点,每个C程序必须有且只有一个main函数 */
{                     /* 函数体开始 */
    printf("Hello, World!\n");  
    /* printf是格式化输出函数,用于在屏幕上打印文本 */
    /* "Hello, World!\n" 是要输出的字符串 */
    /* \n 是转义字符,表示换行 */
    /* 每条语句以分号 ; 结尾 */

    return 0;        
    /* return 0; 表示程序正常结束,向操作系统返回值0 */
    /* 0通常表示程序执行成功 */
}                     /* 函数体结束 */

程序运行结果:

复制代码
Hello, World!

程序结构剖析:

组成部分 说明
#include <stdio.h> 预处理指令,将标准输入输出头文件的内容包含到程序中
int main() 主函数,程序执行的入口,返回值类型为整型(int)
{ } 花括号,标识函数体的开始和结束
printf("Hello, World!\n"); 调用printf函数输出字符串到屏幕
return 0; 函数返回语句,将0返回给操作系统
/* */ 注释,用于解释代码,编译器会忽略注释内容

2.2 C语言程序的格式

(1) 基本格式规范

c 复制代码
/* 预处理指令区域 */
#include <stdio.h>

/* 函数定义区域 */
int main()
{
    /* 变量声明区域 */
    int a;          /* 声明一个整型变量a */
    int b;          /* 声明一个整型变量b */

    /* 执行语句区域 */
    a = 10;         /* 给变量a赋值为10 */
    b = 20;         /* 给变量b赋值为20 */
    printf("a + b = %d\n", a + b);  /* 输出a+b的结果 */
    /* %d 是格式说明符,表示在此位置输出一个整型值 */

    return 0;       /* 程序正常返回 */
}

(2) 格式要点总结

规则 说明 示例
区分大小写 C语言严格区分大小写,main 和 Main 是不同的标识符 int main() 正确,int Main() 错误
分号结尾 每条执行语句必须以英文分号 ; 结尾 a = 10;
花括号配对 每个 { 必须有对应的 } 函数体用 {} 包围
缩进格式 函数体内的语句建议缩进(通常为4个空格或1个Tab),提高可读性 良好的缩进习惯
一行一条语句 虽然C语言允许一行写多条语句,但建议每行只写一条语句 提高可读性
注释 C89/C90使用 /* */,C99起也可以使用 // 单行注释 // 这是单行注释
标识符命名 由字母、数字、下划线组成,不能以数字开头,不能使用关键字 myVar、count_1 正确;1abc 错误

(3) 关键字(32个,ANSI C标准)

复制代码
auto     break    case     char     const     continue
default  do       double   else     enum      extern
float    for      goto     if       int       long
register return   short    signed   sizeof    static
struct   switch   typedef  union    unsigned  void
volatile while

注意:关键字是C语言预定义的具有特殊含义的标识符,不能用作变量名、函数名等。

(4) 一个综合的格式示例程序

c 复制代码
/*
 * 程序功能:演示C语言程序的基本格式
 * 包含:头文件引用、主函数、变量声明、赋值、运算、输出
 */
#include <stdio.h>      /* 包含标准输入输出头文件 */

int main()               /* 主函数,程序入口 */
{
    /* ---- 变量声明区域 ---- */
    int length;          /* 声明整型变量,表示长方形的长 */
    int width;           /* 声明整型变量,表示长方形的宽 */
    int area;            /* 声明整型变量,表示长方形的面积 */
    int perimeter;       /* 声明整型变量,表示长方形的周长 */

    /* ---- 赋值语句区域 ---- */
    length = 10;         /* 将10赋值给变量length */
    width = 5;           /* 将5赋值给变量width */

    /* ---- 计算语句区域 ---- */
    area = length * width;             /* 计算面积:长 × 宽 */
    perimeter = 2 * (length + width);  /* 计算周长:2 × (长 + 宽) */

    /* ---- 输出语句区域 ---- */
    printf("长方形的长 = %d\n", length);        /* 输出长 */
    printf("长方形的宽 = %d\n", width);         /* 输出宽 */
    printf("长方形的面积 = %d\n", area);        /* 输出面积 */
    printf("长方形的周长 = %d\n", perimeter);   /* 输出周长 */

    return 0;           /* 程序正常结束,返回0给操作系统 */
}

运行结果:

复制代码
长方形的长 = 10
长方形的宽 = 5
长方形的面积 = 50
长方形的周长 = 30

三、C语言开发环境

要编写和运行C语言程序,需要一个集成开发环境(IDE)或编译器。下面详细介绍三种常用的C语言开发环境及其安装步骤。


3.1 Visual C++ 6.0(VC6.0)

简介:

Visual C++ 6.0(简称VC6.0)是微软公司于1998年发布的一款经典C/C++集成开发环境。虽然它已经非常古老,但由于其界面简洁、体积小、上手容易,至今仍是许多高校C语言课程的教学工具。

注意:VC6.0是较老的软件,不完全支持C99/C11标准,在Windows 10/11上可能会存在兼容性问题。建议作为学习了解,实际开发推荐使用较新的工具。

安装步骤:

第一步:获取安装包

从合法渠道获取Visual C++ 6.0的安装镜像文件(ISO格式)或安装光盘。

第二步:启动安装程序

  1. 使用虚拟光驱软件加载ISO文件,或者直接解压安装包
  2. 找到 setup.exe 安装程序,双击运行
  3. 如果系统弹出兼容性提示,选择"运行程序"

第三步:输入产品密钥

  1. 在安装向导界面,点击"Next"
  2. 阅读并同意许可协议(选择"I accept the agreement",点击"Next")
  3. 输入产品ID和姓名信息,点击"Next"

第四步:选择安装类型

  1. 选择"Custom"(自定义安装)或"Typical"(典型安装)
  2. 建议选择典型安装,点击"Next"
  3. 选择安装目录(默认路径为 C:\Program Files\Microsoft Visual Studio),也可以修改为其他路径,如 D:\VC6

第五步:安装过程

  1. 点击"Install"开始安装
  2. 等待安装进度条完成(约几分钟)
  3. 安装过程中可能需要注册环境变量,选择"是"

第六步:安装完成与配置

  1. 安装完成后,点击"Finish"
  2. 首次启动时,可能会提示注册,可以选择稍后注册

第七步:创建并运行第一个C程序

  1. 启动VC6.0后,点击菜单栏 File → New
  2. 在弹出的对话框中,选择 Files 选项卡
  3. 选择 C++ Source File(也适用于C语言)
  4. 在"File name"框中输入文件名,如 hello.c(注意后缀是 .c 而不是 .cpp)
  5. 点击"OK"
  6. 在编辑区输入以下代码:
c 复制代码
#include <stdio.h>    /* 包含标准输入输出头文件 */

int main()             /* 主函数入口 */
{
    printf("Hello, VC6.0!\n");   /* 输出字符串并换行 */
    return 0;           /* 返回0,表示程序正常结束 */
}
  1. 点击菜单栏 Build → Execute hello.exe (或按快捷键 Ctrl + F5)
  2. 如果弹出提示"This build command requires an active project workspace",选择"是"创建一个默认项目工作区
  3. 程序编译运行后,控制台窗口将显示 Hello, VC6.0!

3.2 Visual Studio 2022(VS2022)

简介:

Visual Studio 2022是微软公司最新一代的集成开发环境(IDE),功能强大,支持C、C++、C#、Python等多种编程语言的开发。社区版(Community)对个人开发者和小型团队免费。它是目前Windows平台下最主流的C/C++开发工具之一。

安装步骤:

第一步:下载安装程序

  1. 打开浏览器,访问微软官方网站:https://visualstudio.microsoft.com/
  2. 在页面中找到"Visual Studio 2022"部分
  3. 点击"免费下载"按钮(选择Community社区版,个人免费使用)
  4. 下载得到一个引导安装程序,文件名类似 vs_Community.exe(文件很小,约几MB)

第二步:运行安装程序

  1. 双击下载的 vs_Community.exe 文件运行
  2. 系统可能会弹出用户账户控制(UAC)提示,点击"是"允许
  3. 安装程序会先下载并安装必要的组件,请耐心等待

第三步:选择工作负载

  1. 安装程序启动后,进入"Visual Studio Installer"界面
  2. 切换到"工作负载"(Workloads)选项卡
  3. 找到并勾选"使用C++的桌面开发 "(Desktop development with C++)
    • 这是编写C/C++程序必需的工作负载
    • 右侧的"安装详细信息"中确认包含以下组件:
      • MSVC v143 - VS 2022 C++ x64/x86 生成工具
      • Windows 10/11 SDK
      • C++ CMake工具(可选)
      • C++ ATL(可选)

第四步:选择单个组件(可选)

  1. 切换到"单个组件"(Individual components)选项卡
  2. 可以根据需要额外勾选组件,一般使用默认即可

第五步:选择语言包

  1. 切换到"语言包"(Language packs)选项卡
  2. 默认已勾选"中文(简体)",如果需要英文界面可勾选"English"

第六步:选择安装位置

  1. 切换到"安装位置"选项卡
  2. 可以修改Visual Studio的安装路径(建议安装到非系统盘,如D盘)
  3. 注意:共享组件、工具和SDK的路径也可以在此修改

第七步:开始安装

  1. 点击右下角的"安装"按钮
  2. 等待下载和安装完成(根据网速和选择的组件,可能需要30分钟到1小时以上)
  3. 安装完成后,可能需要重启计算机

第八步:首次启动和配置

  1. 启动Visual Studio 2022
  2. 首次启动时会要求登录微软账户(可选,也可跳过)
  3. 选择开发设置为"Visual C++"
  4. 选择喜欢的主题颜色(深色、浅色或蓝色)

第九步:创建并运行第一个C程序

  1. 在启动窗口点击"创建新项目"
  2. 在搜索框中输入"空项目 "或"Empty Project",选择"空项目"模板(语言选择C++,平台选择Windows)
  3. 点击"下一步"
  4. 输入项目名称,如 HelloC,选择项目保存位置,点击"创建"
  5. 在"解决方案资源管理器 "(右侧)中,右键点击"源文件 "文件夹 → 添加 → 新建项
  6. 在弹出的对话框中选择"C++文件(.cpp) ",将文件名改为 main.c(注意后缀改为 .c,这样编译器会以C语言标准编译)
  7. 点击"添加"
  8. 在打开的编辑器中输入以下代码:
c 复制代码
#include <stdio.h>    /* 包含标准输入输出头文件 */
#include <stdlib.h>   /* 包含标准库头文件,提供system函数 */

int main()             /* 主函数,程序入口 */
{
    int num1;          /* 声明第一个整型变量 */
    int num2;          /* 声明第二个整型变量 */
    int sum;           /* 声明用于存储和的变量 */

    num1 = 100;        /* 给num1赋值100 */
    num2 = 200;        /* 给num2赋值200 */
    sum = num1 + num2; /* 计算num1和num2的和,结果存入sum */

    printf("第一个数: %d\n", num1);    /* 输出num1的值 */
    printf("第二个数: %d\n", num2);    /* 输出num2的值 */
    printf("两数之和: %d\n", sum);     /* 输出sum的值 */

    system("pause");   /* 调用system函数执行pause命令,使窗口暂停等待按键 */
    /* 注意:system("pause")不是标准C语句,仅在Windows下使用 */
    return 0;          /* 程序正常结束 */
}
  1. 点击菜单栏 调试 → 开始执行(不调试) (快捷键 Ctrl + F5)
  2. 如果弹出提示需要生成项目,选择"是"
  3. 控制台窗口将显示运行结果

运行结果:

复制代码
第一个数: 100
第二个数: 200
两数之和: 300
请按任意键继续. . .

3.3 Dev-C++

简介:

Dev-C++(也称为Dev-Cpp)是一款免费、开源、轻量级的C/C++集成开发环境(IDE),内置了MinGW(Minimalist GNU for Windows)编译器(基于GCC)。它体积小、安装简单、上手快,非常适合C语言初学者使用。目前社区维护的版本是小熊猫Dev-C++和Embarcadero Dev-C++等。

安装步骤:

第一步:下载Dev-C++

  1. 打开浏览器,访问以下任一下载地址:
    • 官方SourceForge页面:https://sourceforge.net/projects/orwelldevcpp/
    • 或搜索"Embarcadero Dev-C++"从官网下载
  2. 下载最新版本的安装程序(如 Dev-Cpp.6.3.Setup.exe 或更新版本)

第二步:运行安装程序

  1. 双击下载的安装程序
  2. 首先选择安装语言,建议选择"Chinese (中文简体)"
  3. 点击"OK"

第三步:接受许可协议

  1. 阅读GNU通用公共许可证
  2. 点击"我接受"(I Agree)

第四步:选择安装组件

  1. 选择安装类型,建议选择"Full"(完整安装),包括MinGW编译器
  2. 确保勾选了以下组件:
    • MinGW Compiler System(编译器,必须勾选)
    • Dev-C++ IDE(IDE本身,必须勾选)
    • Additional Icons(额外图标,可选)
  3. 点击"下一步"

第五步:选择安装路径

  1. 默认安装路径为 C:\Program Files (x86)\Dev-Cpp
  2. 建议修改为非系统盘,如 D:\Dev-Cpp
  3. 点击"安装"

第六步:等待安装完成

  1. 安装过程通常很快(1~3分钟)
  2. 安装完成后点击"完成"

第七步:首次启动配置

  1. 首次启动Dev-C++时,会弹出语言选择界面,选择"简体中文/Chinese"
  2. 点击"Next"
  3. 可以选择界面主题和字体大小等,使用默认即可
  4. 点击"OK"完成初始配置

第八步:创建并运行第一个C程序

方法一:直接新建源文件

  1. 点击菜单栏 文件 → 新建 → 源代码 (快捷键 Ctrl + N)
  2. 如果弹出提示是否创建新项目,选择"否"(仅创建源代码文件)
  3. 在编辑区输入以下代码:
c 复制代码
#include <stdio.h>    /* 包含标准输入输出头文件,提供printf函数 */

/* 主函数:程序从这里开始执行 */
int main()
{
    /* 声明变量 */
    char name[50];     /* 声明一个字符数组,用于存储姓名,最多50个字符 */
    int age;           /* 声明一个整型变量,用于存储年龄 */

    /* 使用printf输出提示信息 */
    printf("请输入您的姓名: ");    
    /* scanf函数用于从键盘读取输入 */
    /* %s 表示读取一个字符串,存入name数组 */
    scanf("%s", name);              

    printf("请输入您的年龄: ");    
    /* %d 表示读取一个整数,存入age变量 */
    /* &age 表示变量age的内存地址 */
    scanf("%d", &age);              

    /* 输出结果 */
    printf("\n===== 欢迎信息 =====\n");  
    printf("姓名: %s\n", name);     /* 输出姓名 */
    printf("年龄: %d\n", age);      /* 输出年龄 */
    printf("欢迎您学习C语言!\n");   /* 输出欢迎语 */

    return 0;           /* 程序正常结束 */
}
  1. 点击菜单栏 运行 → 编译运行 (快捷键 F11)
  2. 如果是新建的未保存文件,会提示保存,选择保存位置并输入文件名,如 hello.c
  3. 控制台窗口弹出,按照提示输入信息即可

方法二:创建项目

  1. 点击菜单栏 文件 → 新建 → 项目
  2. 选择"Console Application "(控制台应用),语言选择"C项目"
  3. 输入项目名称,如 MyFirstProject
  4. 选择保存路径,点击"确定"
  5. Dev-C++会自动生成包含 main.c 的项目框架
  6. 在 main.c 中编写代码并按 F11 编译运行

3.4 三种开发环境对比

特性 Visual C++ 6.0 Visual Studio 2022 Dev-C++
发布年份 1998 2021 持续更新
费用 商业软件 社区版免费 完全免费
安装大小 ~100MB ~5GB+ ~100MB
编译器 MSVC 6.0 MSVC 2022 MinGW(GCC)
C标准支持 C89 C11/C17 C11/C17
适用场景 教学怀旧 专业开发 初学入门
上手难度 较简单 中等 最简单
运行平台 Windows Windows/Mac/Linux Windows
推荐度 不推荐新用 推荐(功能强大) 推荐(轻量入门)

四、实践与练习

练习1:输出个人信息

编写一个C程序,输出你的个人信息(姓名、年龄、学校、专业)。

c 复制代码
#include <stdio.h>    /* 包含标准输入输出头文件 */

/*
 * 程序功能:输出个人信息
 * 演示:printf函数的基本使用,\n换行符和\t制表符的使用
 */
int main()
{
    /* 使用printf函数逐行输出个人信息 */
    /* \n 表示换行 */
    /* \t 表示制表符(Tab键效果),用于对齐输出 */
    printf("===== 个人信息卡片 =====\n");    /* 输出标题 */
    printf("姓名:\t张三\n");                  /* 输出姓名,\t用于对齐 */
    printf("年龄:\t20岁\n");                  /* 输出年龄 */
    printf("学校:\t某某大学\n");              /* 输出学校 */
    printf("专业:\t计算机科学与技术\n");       /* 输出专业 */
    printf("========================\n");     /* 输出分隔线 */

    return 0;    /* 程序正常结束 */
}

运行结果:

复制代码
===== 个人信息卡片 =====
姓名:	张三
年龄:	20岁
学校:	某某大学
专业:	计算机科学与技术
========================

知识点说明:

  • \n:换行符,将光标移到下一行的开头
  • \t:水平制表符,相当于按下Tab键,用于输出对齐

练习2:简单计算器(两数之和)

编写一个C程序,从键盘输入两个整数,计算并输出它们的和。

c 复制代码
#include <stdio.h>    /* 包含标准输入输出头文件 */

/*
 * 程序功能:从键盘输入两个整数,计算并输出它们的和
 * 演示:变量声明、scanf输入、算术运算、printf输出
 */
int main()
{
    /* 声明三个整型变量 */
    int a;      /* 用于存储第一个输入的整数 */
    int b;      /* 用于存储第二个输入的整数 */
    int sum;    /* 用于存储a和b的和 */

    /* 提示用户输入第一个数 */
    printf("请输入第一个整数: ");
    /* scanf函数从键盘读取一个整数,存入变量a */
    /* &是取地址运算符,&a表示变量a的内存地址 */
    scanf("%d", &a);

    /* 提示用户输入第二个数 */
    printf("请输入第二个整数: ");
    scanf("%d", &b);    /* 从键盘读取第二个整数,存入变量b */

    /* 计算两数之和 */
    sum = a + b;        /* 将a加b的结果赋值给sum */

    /* 输出结果 */
    /* printf中可以使用多个格式说明符 */
    /* %d会被后面的变量值依次替换 */
    printf("%d + %d = %d\n", a, b, sum);
    /* 第一个%d被a的值替换,第二个%d被b的值替换,第三个%d被sum的值替换 */

    return 0;    /* 程序正常结束 */
}

运行结果:

复制代码
请输入第一个整数: 15
请输入第二个整数: 25
15 + 25 = 40

知识点说明:

  • int:整型数据类型,用于声明整数变量
  • scanf:标准输入函数,用于从键盘读取数据
  • %d:格式说明符,表示十进制整数
  • &:取地址运算符,&a 获取变量 a 的内存地址
  • printf 中可以使用多个 %d,按顺序对应后面的变量

练习3:计算圆的面积和周长

编写一个C程序,输入圆的半径,计算并输出圆的面积和周长(π取3.14159)。

c 复制代码
#include <stdio.h>    /* 包含标准输入输出头文件 */

/*
 * 程序功能:根据输入的半径,计算圆的面积和周长
 * 演示:浮点型变量(float/double)、数学公式计算、%.2f格式化输出
 */
int main()
{
    /* 定义常量PI的值 */
    /* 使用#define预处理指令定义宏常量 */
    #define PI 3.14159   /* PI代表圆周率3.14159 */

    /* 声明浮点型变量 */
    double radius;       /* 半径,使用double双精度浮点型 */
    double area;         /* 面积 */
    double circumference;/* 周长 */

    /* 提示用户输入 */
    printf("请输入圆的半径: ");

    /* 从键盘读取半径值 */
    /* %lf 是double类型对应的格式说明符 */
    scanf("%lf", &radius);

    /* 计算面积:S = π × r² */
    /* radius * radius 表示r的平方 */
    area = PI * radius * radius;

    /* 计算周长:C = 2 × π × r */
    circumference = 2 * PI * radius;

    /* 输出结果 */
    /* %.2f 表示输出浮点数并保留2位小数 */
    printf("\n===== 计算结果 =====\n");
    printf("圆的半径 = %.2f\n", radius);           /* 输出半径,保留2位小数 */
    printf("圆的面积 = %.2f\n", area);             /* 输出面积 */
    printf("圆的周长 = %.2f\n", circumference);    /* 输出周长 */

    return 0;    /* 程序正常结束 */
}

运行结果:

复制代码
请输入圆的半径: 5.0

===== 计算结果 =====
圆的半径 = 5.00
圆的面积 = 78.54
圆的周长 = 31.42

知识点说明:

  • double:双精度浮点型,用于存储小数,精度比 float 更高
  • %lf:double 类型的格式说明符(注意与 %f 的区别)
  • %.2f:输出浮点数,保留小数点后2位
  • #define PI 3.14159:宏定义,定义一个符号常量,编译时所有 PI 会被替换为 3.14159

练习4:数据类型演示

编写一个C程序,演示C语言基本数据类型的使用。

c 复制代码
#include <stdio.h>    /* 包含标准输入输出头文件 */

/*
 * 程序功能:演示C语言中各种基本数据类型的使用
 * 包括:int、float、double、char
 */
int main()
{
    /* ===== 整型 int ===== */
    /* int类型用于存储整数(没有小数部分的数字) */
    int iAge = 20;              /* 声明并初始化一个整型变量 */
    int iScore = 95;            /* 声明并初始化考试分数 */
    printf("年龄: %d\n", iAge);    /* %d 用于输出整型 */
    printf("分数: %d\n", iScore);  /* 输出分数 */

    /* ===== 单精度浮点型 float ===== */
    /* float类型用于存储单精度浮点数(小数),精度约为6~7位有效数字 */
    float fHeight = 1.75f;      /* 声明并初始化身高,f后缀表示float类型 */
    float fWeight = 65.5f;      /* 声明并初始化体重 */
    printf("身高: %.2f米\n", fHeight);   /* %f 用于输出浮点型,%.2f保留2位小数 */
    printf("体重: %.1f公斤\n", fWeight);  /* %.1f保留1位小数 */

    /* ===== 双精度浮点型 double ===== */
    /* double类型用于存储双精度浮点数,精度约为15~16位有效数字 */
    double dPi = 3.14159265358979;  /* 声明并初始化圆周率 */
    double dSalary = 8500.50;       /* 声明并初始化工资 */
    printf("圆周率: %.10f\n", dPi);      /* %.10f保留10位小数 */
    printf("工资: %.2f元\n", dSalary);   /* 保留2位小数 */

    /* ===== 字符型 char ===== */
    /* char类型用于存储单个字符,占用1个字节 */
    /* 字符用单引号''括起来 */
    char cGender = 'M';         /* 声明并初始化性别字符 */
    char cGrade = 'A';          /* 声明并初始化等级字符 */
    printf("性别: %c\n", cGender);   /* %c 用于输出字符型 */
    printf("等级: %c\n", cGrade);    /* 输出等级 */

    /* ===== 使用sizeof运算符查看各类型占用的字节数 ===== */
    /* sizeof是运算符,不是函数,用于计算数据类型或变量占用的字节数 */
    printf("\n===== 各数据类型占用字节数 =====\n");
    printf("int    占用 %zu 字节\n", sizeof(int));      /* 输出int类型占用的字节数 */
    printf("float  占用 %zu 字节\n", sizeof(float));    /* 输出float类型占用的字节数 */
    printf("double 占用 %zu 字节\n", sizeof(double));   /* 输出double类型占用的字节数 */
    printf("char   占用 %zu 字节\n", sizeof(char));     /* 输出char类型占用的字节数 */

    return 0;    /* 程序正常结束 */
}

运行结果:

复制代码
年龄: 20
分数: 95
身高: 1.75米
体重: 65.5公斤
圆周率: 3.1415926536
工资: 8500.50元
性别: M
等级: A

===== 各数据类型占用字节数 =====
int    占用 4 字节
float  占用 4 字节
double 占用 8 字节
char   占用 1 字节

知识点说明:

数据类型 关键字 占用字节 格式说明符 用途
整型 int 4字节 %d 存储整数
单精度浮点型 float 4字节 %f 存储小数(精度较低)
双精度浮点型 double 8字节 %lf 存储小数(精度较高)
字符型 char 1字节 %c 存储单个字符

练习5:转义字符演示

编写一个C程序,演示C语言中常用转义字符的使用。

c 复制代码
#include <stdio.h>    /* 包含标准输入输出头文件 */

/*
 * 程序功能:演示C语言中常用的转义字符
 * 转义字符是以反斜杠(\)开头的特殊字符序列
 */
int main()
{
    /* \n ------ 换行符:将光标移到下一行开头 */
    printf("第一行\n第二行\n第三行\n");

    /* \t ------ 水平制表符:相当于Tab键,用于对齐 */
    printf("\n姓名\t年龄\t城市\n");
    printf("张三\t20\t北京\n");
    printf("李四\t22\t上海\n");

    /* \\ ------ 反斜杠字符:输出一个反斜杠 */
    printf("\n文件路径: C:\\Users\\Documents\\file.c\n");

    /* \" ------ 双引号字符:在字符串中输出双引号 */
    printf("\n他说: \"C语言很有趣!\"\n");

    /* \' ------ 单引号字符:在字符或字符串中输出单引号 */
    printf("\n字符常量用单引号: \'A\'\n");

    /* \0 ------ 空字符(NULL):表示字符串的结束标志 */
    /* 在此仅做说明,实际输出不会显示任何内容 */
    printf("\n\0(空字符,不可见)\n");

    /* \r ------ 回车符:光标移到当前行的开头(注意覆盖效果) */
    printf("12345\rABC\n");  /* 输出12345后光标回到行首,然后输出ABC覆盖前3个字符 */

    return 0;    /* 程序正常结束 */
}

运行结果:

复制代码
第一行
第二行
第三行

姓名	年龄	城市
张三	20	北京
李四	22	上海

文件路径: C:\Users\Documents\file.c

他说: "C语言很有趣!"

字符常量用单引号: 'A'

(空字符,不可见)
ABC45

常用转义字符汇总表:

转义字符 含义 ASCII码值
\n 换行 10
\t 水平制表符(Tab) 9
\\ 反斜杠 \ 92
\' 单引号 ' 39
\" 双引号 " 34
\0 空字符(字符串结束标志) 0
\r 回车(光标移到行首) 13
\a 响铃(系统发出提示音) 7
\b 退格(光标前移一格) 8

本章小结

知识点 核心内容
C语言发展史 1972年由Dennis Ritchie在贝尔实验室创建,经历了K&R C → ANSI C(C89) → C99 → C11 → C17的标准化过程
C语言特点 简洁紧凑、运算符丰富、数据类型丰富、结构化、可直接访问硬件、可移植性强、执行效率高
程序结构 预处理指令(#include) + 主函数(int main()) + 函数体({}) + 语句(以;结尾) + 返回值(return 0)
数据类型 int(整型)、float(单精度)、double(双精度)、char(字符型)
输入输出 printf输出函数、scanf输入函数、格式说明符(%d、%f、%lf、%c、%s)
转义字符 \n(换行)、\t(制表)、\\(反斜杠)、\"(双引号) 等
开发环境 VC6.0(老旧不推荐)、VS2022(功能强大推荐)、Dev-C++(轻量入门推荐)
相关推荐
大草原的小灰灰43 分钟前
Python面向对象编程
开发语言·python
想做小南娘,发现自己是女生喵1 小时前
i.MX6ULL嵌入式Linux入门学习文档
linux·运维·学习
东木月1 小时前
Windows C 盘清理指南:安全删除临时文件、缓存与 Prefetch
c语言·windows·安全
Chen_harmony1 小时前
一、C++入门基础
开发语言·c++
学逆向的1 小时前
远程线程注入
开发语言·jvm·网络安全·win32
水饺编程2 小时前
第1章,[Win32 章节]:Windows 的方方面面
c语言·c++·windows·visual studio
阡陌数智2 小时前
RAG 系统的召回退化:向量库、分块、重排全链路问题排查与优化实践
开发语言·人工智能·语言模型·自然语言处理·推荐算法
我就是不信2 小时前
用 C 语言实现一个支持 HTML 与视频的 HTTP(S) 服务器
c语言·html·音视频
geovindu2 小时前
rust: Flyweight Pattern
开发语言·后端·设计模式·rust·享元模式·结构型模式