完成以下问题, 表示你完成了一门编程语言的学习。
以下涉及了项目中常用的主题,可根据具体场景选择完成。

1.入门

1.1 官网地址,特性和应用场景有哪些

C语言网
C语言是一种强大的专业化编程语言,深受业余和专业编程人员的欢迎。
第一种工程化的高级语言。
它允许你访问硬件,并可以操纵内存中的特定位。
场景:嵌入式系统,操作系统

1.2 安装与运行

Windows下有VS,Linux下可使用Gcc,Mac下可使用Clang

1.3 镜像(选答)

不需要

1.4 编辑器(选答)

VSCode

1.5 包管理工具

没有

1.6 书籍

书籍推荐

2.基本语法

  1. // 头文件
  2. #include <stdio.h>
  3. // 常量
  4. // 名称和值之间用空格,不用等号,也不用写类型。
  5. #define MAX_SIZE 3
  6. // 自定义类型
  7. // MAFO 可要可不要
  8. typedef struct _INFO
  9. {
  10. int num;
  11. int age;
  12. } MAFO;
  13. typedef int INTEGER; /*指定用 INTEGER 代表 int 类型*/
  14. typedef float REAL; /*指定用 REAL 代表 float 类型*/
  15. // 函数定义
  16. void sayHi()
  17. {
  18. printf("hello ren\n");
  19. }
  20. int main(int argc, char const *argv[])
  21. {
  22. // 变量
  23. int a = 5;
  24. // 判断
  25. if (a > MAX_SIZE)
  26. {
  27. printf("less than %d\n", MAX_SIZE);
  28. }
  29. // 循环
  30. for(int i=0;i<10;i++)
  31. {
  32. printf("i count is %d\n",i);
  33. }
  34. // 函数
  35. sayHi();
  36. // 结构体
  37. MAFO mafo = {1, 2};
  38. // 指针
  39. // 任何类型的指针变量都占四个字节
  40. int *pa = &a; // 取地址
  41. printf("a point is %p\n", pa);
  42. printf("a value is %d", *pa); // 取值
  43. }

基本数据类型:

类型名称 占字节数 其他叫法 表示的数据范围
char 1 signed char -128 ~ 127
unsigned char 1 none 0 ~ 255
int 4 signed int -2,147,483,648 ~ 2,147,483,647
unsigned int 4 unsigned 0 ~ 4,294,967,295
short 2 short int -32,768 ~ 32,767
unsigned short 2 unsigned short int 0 ~ 65,535
long 4 long int -2,147,483,648 ~ 2,147,483,647
unsigned long 4 unsigned long 0 ~ 4,294,967,295
float 4 none 3.4E +/- 38 (7 digits)
double 8 none 1.7E +/- 308 (15 digits)
long double 10 none 1.2E +/- 4932 (19 digits)

变量类型
C 语言中定义了 4 种存储属性,即自动变量外部变量静态变量寄存器变量,它关系到变量在内存中的存放位置, 由此决定了变量的保留时间和变量的作用范围。

3.基本数据类型

3.1 数字

  1. #include <stdio.h>
  2. #include <math.h>
  3. int main(int argc, char const *argv[])
  4. {
  5. double a = 5.0;
  6. double b = 3.0;
  7. // 取商
  8. printf("a/b=%f\n", a/b);
  9. // 小数点后两位
  10. printf("a/b=%.2f\n", a/b);
  11. int c = 5;
  12. int d = 3;
  13. // 取余
  14. printf("c%%d=%d\n", c%d);
  15. // 整数和小数转换
  16. double f = 2.2;
  17. printf("f=%d\n", (int)f);
  18. printf("c=%f\n", (float)c);
  19. // 指数,a的b次方
  20. double x = pow(a, b);
  21. printf("5的3次方等于:%.0f\n", x);
  22. // 进制转换没有现成的函数
  23. return 0;
  24. }

3.2 字符

定义, 转义, 拼接, 格式化, 截取, 长度, 遍历, 拆分, 替换, 匹配(正则表达式)

  1. #include <stdio.h>
  2. #include <string.h>
  3. int main(int argc, char const *argv[])
  4. {
  5. // 定义
  6. char a[10];
  7. // 自动加 \0
  8. char b[]={"china"};
  9. // 最常用的写法
  10. char c[] = "Welcome to dotcpp.com";
  11. // 字符串指针的初始化
  12. // 指针指向数组首地址
  13. char *s1 = "www.dotcpp.com" ;
  14. char *s2;
  15. // 复制字符串, 后者复制到前者
  16. strcpy(s2, s1);
  17. printf("strcp=%s\n", s2);
  18. // 拼接字符串
  19. // char s3[20];
  20. // char *s4 = "www";
  21. // char *s5 = ".baidu";
  22. // char *s6 = ".com";
  23. // strcat(s3, s4);
  24. // strcat(s3, s5);
  25. // strcat(s3, s6);
  26. // puts(s3);
  27. // 比较
  28. char *s7 = "abc";
  29. char *s8 = "abc";
  30. int cmp = strcmp(s7, s8);
  31. if (cmp == 0)
  32. {
  33. printf("s7 == s8\n");
  34. }
  35. // 长度
  36. char *string = "hello";
  37. int len = strlen(string);
  38. printf("str length is %d\n", len);
  39. return 0;
  40. }

3.3 列表

定义
增: 单个, 批量, 任意位置
删: 单个, 批量, 全部
改: 单个, 批量
查: 根据索引找值, 根据值找索引
截取: 根据范围截取
遍历(正反)
排序

3.4 字典(键值对)

定义
增: 单个, 批量
删: 单个, 批量, 全部
改: 单个, 批量
查: 根据键找值, 根据值找键
遍历(键的正反)
排序

3.5 集合

定义, 增删改查
集合(set) 是一个无序不重复元素的集

3.6 栈和队列

3.7 元组(选做)

4.练习

4.1 时间

当前时间戳
格式化输出, 年-月-日 时:分:秒
格式化时间转时间戳
时间戳转格式化时间

4.2 文件

4.2.1 文件

全部读
按行读
创建文件并写入
原文件追加
原文件覆盖写入
删除文件
文件大小
修改文件名

4.2.2 目录

当前目录
列出目录中的文件和目录
获取文件的绝对路径
分离后缀名,文件名和路径
拼接路径与文件
目录或文件是否存在
复制粘贴
删除目录

4.3 加密

MD5, SHA1

4.4 异步

线程与协程

4.5 网络服务

http, websocket, UDP 等等

4.6 命令行

4.7 测试

4.8 图片

缩放, 旋转, 修改格式, 色彩等等

4.10 数据库操作

4.11 数据处理

json,xml

5.练手小项目

根据不同的场景选择,可以在 Github 上克隆项目