C语言复习(持续更新~)

  • C语言复习
    • 1 数据类型与关键字
      • 1.1 数据类型
      • 1.2 关键字
    • 2 输入与输出
      • 2.1 输入函数
      • 2.2 输出函数
      • 2.3 文件输入和输出
    • 3 运算符与表达式
      • 3.1 运算符
      • 3.2 表达式
    • 4 语句结构
      • 4.1 选择结构
      • 4.2 循环结构
      • 4.3 break与continue
    • 5 函数
      • 5.1 函数的定义、声明和调用
      • 5.2 变量
      • 5.3 main函数
      • 5.4 预定义函数
    • 6 数组
      • 6.1 数组的概念
      • 6.2 数组定义和初始化
      • 6.3 字符串、字符数组、字符串数组
    • 7 指针
    • 8 结构体、共用体、枚举
      • 8.1 结构体
      • 8.2 共用体
      • 8.3 枚举
    • 9 文件操作
      • 9.1 文件概念
      • 9.2 文件操作
    • 10 预处理
      • 10.1 预处理概念
      • 10.2 预处理指令与使用
    • 11 多文件编程

C语言复习

1 数据类型与关键字

1.1 数据类型

  • 基本数据类型
    • 整型(Integer Types): 用于存储整数值。主要包括int、short、long等不同变体。
    • 字符型(Character Type): 用于存储单个字符。通常使用char。
    • 浮点型(Floating-Point Types): 用于存储浮点数(带有小数点的数字)。包括float和double。
    • 布尔型(Boolean Type): 用于表示真(1)或假(0)值。C99引入了_Bool类型。
  • 复合数据类型
    • 数组(Array): 一组具有相同数据类型的元素,通过索引访问。
    • 指针(Pointer): 存储变量的内存地址,用于间接访问变量的值。指针还可以用于动态内存分配。
    • 结构体(Structure): 允许将不同数据类型的成员组合在一起,创建一个自定义的复合数据类型。
    • 联合(Union): 类似于结构体,但联合的所有成员共享同一块内存,只能同时存储其中一个成员的值。
    • 枚举(Enumeration): 允许定义一组具名的整数常数,以提高代码的可读性。
    • typedef: 用于创建已有数据类型的别名,使代码更加清晰。

32位操作系统下常见编译器下的数据类型大小及表示的数据范围:

类型名称类型关键字占字节数其他叫法表示的数据范围
字符型char1signed char-128 ~ 127
无符号字符型unsigned char1none0 ~ 255
整型int4signed int-2,147,483,648 ~ 2,147,483,647
无符号整型unsigned int4unsigned0 ~ 4,294,967,295
短整型short2short int-32,768 ~ 32,767
无符号短整型unsigned short2unsigned short int0 ~ 65,535
长整型long4long int-2,147,483,648 ~ 2,147,483,647
无符号长整型unsigned long4unsigned long0 ~ 4,294,967,295
单精度浮点数float4none3.4E +/- 38 (7 digits)
双精度浮点数double8none1.7E +/- 308 (15 digits)
长双精度浮点数long double10none1.2E +/- 4932 (19 digits)
长整型long long8__int64-9223372036854775808~9223372036854775808

1.2 关键字

1.自动变量类型关键字:

  • auto:用于声明自动存储持续时间的变量。

2.控制流关键字:

  • if:用于条件语句,执行基于条件的代码块。
  • else:用于条件语句中的可选分支,当条件不满足时执行。
  • switch:用于多重选择语句,根据表达式的值跳转到不同的分支。
  • case:用于在switch语句中标识不同的分支。
  • defaultswitch语句中的默认分支。

3.循环关键字:

  • for:用于循环语句,指定初始化、条件和迭代表达式。
  • while:用于循环语句,根据条件循环执行代码块。
  • do:用于循环语句,先执行代码块,然后根据条件继续执行。

4.跳转关键字:

  • goto:用于无条件跳转到指定的标签位置。

5.函数关键字:

  • return:用于从函数中返回值。
  • void:用于声明函数不返回值。

6.存储类关键字:

  • auto:用于声明自动存储类别的变量(已在前面提到)。
  • register:用于声明寄存器存储类别的变量。
  • static:用于声明静态存储类别的变量和函数。
  • extern:用于声明外部链接存储类别的变量和函数。

7.数据类型关键字:

  • int:用于声明整型数据类型。
  • char:用于声明字符数据类型。
  • float:用于声明单精度浮点数据类型。
  • double:用于声明双精度浮点数据类型。
  • short:用于声明短整型数据类型。
  • long:用于声明长整型数据类型。
  • signed:用于声明有符号整数数据类型。
  • unsigned:用于声明无符号整数数据类型。

8.其他关键字:

  • sizeof:用于获取数据类型或表达式的大小(字节数)。
  • typedef:用于创建自定义数据类型的别名。
  • enum:用于声明枚举类型。
  • struct:用于声明结构体类型。
  • union:用于声明联合类型。
  • const:用于声明常量。
  • volatile:用于声明易失变量,表示可能会被意外更改。
  • static:用于声明静态成员或局部变量。

2 输入与输出

2.1 输入函数

1.scanf
用于从标准输入(通常是键盘)读取数据。它可以读取不同类型的数据,如整数、浮点数和字符串。格式化字符串指定了读取的数据类型。
例如:

int age;
printf("Enter your age: ");
scanf("%d", &age);

2.getchar
输入单个字符,保存到字符变量中。

3.gets
输入一行数据,保存到字符串变量中。

2.2 输出函数

1.printf
用于将格式化数据输出到标准输出(通常是屏幕)。可以使用格式化字符串指定输出的格式和内容。
例如:

int num = 37;
printf("The number is: %d\n", num);

常见的输出控制符:
(1) %d:以十进制形式输出整数。
示例:printf("%d", 42); // 输出:42

(2) %f:以浮点数形式输出实数(默认保留6位小数)。
示例:printf("%f", 3.14159); // 输出:3.141590

(3) %c:输出单个字符。
示例:printf("%c", 'A'); // 输出:A

(4) %s:输出字符串。
示例:printf("%s", "Hello, World!"); // 输出:Hello, World!

(5) %o:以八进制形式输出整数。
示例:printf("%o", 18); // 输出:22

(6) %x 或 %X:以十六进制形式输出整数,%x 输出小写字母,%X 输出大写字母。
示例:printf("%x", 255); // 输出:ff

(7) %u:以无符号十进制形式输出整数。
示例:printf("%u", 123); // 输出:123

(8) %e 或 %E:以指数形式输出浮点数,%e 输出小写字母,%E 输出大写字母。
示例:printf("%e", 0.00123); // 输出:1.230000e-03

(9) %g 或 %G:以%f 或 %e 格式输出浮点数,视数值大小自动选择。
示例:printf("%g", 123456.789); // 输出:123457

(10) %%:输出百分号 % 字符。
示例:printf("100%%"); // 输出:100%

这些输出控制符可以与一些修饰符一起使用,例如用于指定字段宽度、精度等。例如:

  • %5d:输出整数,至少占5个字符宽度。
  • %.2f:输出浮点数,保留两位小数。
  • %10s:输出字符串,至少占10个字符宽度。

2.putchar
输出单个字符。

3.puts
输出字符串。

2.3 文件输入和输出

1.文件打开函数

  • fopen:用于打开文件,并返回一个文件指针,供后续操作使用。

2.文件读取函数

  • fscanf:类似于scanf,但从文件中读取数据。
  • fgets:从文件中读取一行文本。

3.文件写入函数

  • fprintf:类似于printf,但将输出写入文件。
  • fputs:将文本写入文件。
  • fputc:写入单个字符到文件。

4.文件关闭函数

  • fclose:用于关闭已打开的文件。

以下是一个读取文件并将内容输出到屏幕的简单示例:

#include <stdio.h>

int main() {
    FILE *file = fopen("example.txt", "r"); // 打开文件只读模式
    if (file == NULL) {
        printf("Failed to open the file.\n");
        return 1;
    }

    char buffer[100];
    while (fgets(buffer, sizeof(buffer), file) != NULL) {
        printf("%s", buffer);
    }

    fclose(file); // 关闭文件

    return 0;
}


3 运算符与表达式

3.1 运算符

1. 算术运算符:

  • +:加法运算符,用于相加两个操作数。
  • -:减法运算符,用于从第一个操作数中减去第二个操作数。
  • *:乘法运算符,用于将两个操作数相乘。
  • /:除法运算符,用于将第一个操作数除以第二个操作数。
  • %:取余运算符,用于计算除法的余数部分。
  • ++:自增运算符,将操作数的值增加1。
  • --:自减运算符,将操作数的值减少1。

2. 关系运算符:

  • ==:等于运算符,检查两个操作数是否相等。
  • !=:不等于运算符,检查两个操作数是否不相等。
  • <:小于运算符,检查第一个操作数是否小于第二个操作数。
  • >:大于运算符,检查第一个操作数是否大于第二个操作数。
  • <=:小于等于运算符,检查第一个操作数是否小于等于第二个操作数。
  • >=:大于等于运算符,检查第一个操作数是否大于等于第二个操作数。

3. 逻辑运算符:

  • &&:逻辑与运算符,用于检查两个条件是否同时为真。
  • ||:逻辑或运算符,用于检查两个条件是否至少一个为真。
  • !:逻辑非运算符,用于取反一个条件的值。

4. 赋值运算符:

  • =:赋值运算符,将右侧的值赋给左侧的变量。
  • +=-=*=/=%=++=--= 等:复合赋值运算符,用于在赋值的同时进行其他运算。

5. 位运算符:

  • &:按位与运算符,对两个操作数的每一位进行与操作。
  • |:按位或运算符,对两个操作数的每一位进行或操作。
  • ^:按位异或运算符,对两个操作数的每一位进行异或操作。
  • ~:按位取反运算符,对操作数的每一位取反。

6. 移位运算符:

  • <<:左移运算符,将第一个操作数的二进制表示左移指定的位数。
  • >>:右移运算符,将第一个操作数的二进制表示右移指定的位数。

7. 条件运算符:

  • ? ::条件运算符(三元运算符),根据条件选择两个操作数中的一个进行返回。

8. 逗号运算符:

  • ,:逗号运算符,用于分隔多个表达式,返回最后一个表达式的值。

9. sizeof

  • sizeof:以字节为单位返回某操作数的大小,用于求某一类型变量的长度。其运算对象可以是任何数据类型或变量。

3.2 表达式

在C语言中,表达式是由操作数和运算符组成的组合,可以执行各种计算和操作。表达式的结果可以是一个值,一个变量,或者一个组合的值。表达式可以包含常量、变量、运算符和函数调用等。
例如:

3+2
a=(2+b/3)/5
x=i++
m=2*5


4 语句结构

4.1 选择结构

1.if else
例如:

4 语句结构
4.1 选择结构
1.if else
例如:

2.switch case
例如:

#include <stdio.h>

int main() {
    int choice;

    printf("Choose an option:\n");
    printf("1. Start\n");
    printf("2. Pause\n");
    printf("3. Stop\n");
    printf("Enter your choice: ");
    scanf("%d", &choice);

    switch (choice) {
        case 1:
            printf("Starting...\n");
            break;
        case 2:
            printf("Pausing...\n");
            break;
        case 3:
            printf("Stopping...\n");
            break;
        default:
            printf("Invalid choice.\n");
            break;
    }

    return 0;
}
------本页内容已结束,喜欢请分享------

感谢您的来访,获取更多精彩文章请收藏本站。

© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容