C语言程序设计知识

220 阅读7分钟

基本数据类型和顺序程序设计

1. C语言基本数据类型

C语言中的数据类型可以分为两类:

  1. 基本数据类型(Primitive Data Types):包括整型、字符型、浮点型等。
  2. 派生数据类型(Derived Data Types):例如数组、指针、结构体等。

2. 基本数据类型

2.1 整型(Integer)

整型用于存储整数值。根据存储的大小不同,C语言提供了多个整型数据类型:

  • int:标准整型,通常为4字节(32位)。
  • short:短整型,通常为2字节。
  • long:长整型,通常为4字节。
  • long long:更长的整型,通常为8字节。

每种类型有无符号和有符号之分,默认情况下,int 是有符号的。

示例程序:
#include <stdio.h>

int main() {
    int a = 10;          // 定义一个整数变量a
    short b = 32767;     // 定义一个短整型变量b
    long c = 100000L;    // 定义一个长整型变量c
    long long d = 1000000000LL;  // 定义一个长长整型变量d
    
    printf("int: %d\n", a);
    printf("short: %d\n", b);
    printf("long: %ld\n", c);
    printf("long long: %lld\n", d);
    
    return 0;
}

2.2 字符型(Character)

字符型用于存储单个字符。C语言使用 char 数据类型来表示字符。char 类型通常占用1个字节。

  • char:用于表示单个字符,存储ASCII码。
  • unsigned char:无符号字符类型,存储0到255之间的值。
  • signed char:有符号字符类型,存储-128到127之间的值。
示例程序:
#include <stdio.h>

int main() {
    char ch = 'A';       // 定义字符变量ch,存储字符A
    unsigned char uch = 255; // 无符号字符变量

    printf("char: %c\n", ch);        // 输出字符
    printf("unsigned char: %u\n", uch);  // 输出无符号字符值
    
    return 0;
}

2.3 浮点型(Floating Point)

浮点型用于存储实数。C语言提供了两种浮点类型:

  • float:单精度浮点数,通常占用4字节。
  • double:双精度浮点数,通常占用8字节。
  • long double:扩展精度浮点数,通常占用12或16字节。
示例程序:
#include <stdio.h>

int main() {
    float a = 3.14f;        // 定义一个浮点型变量a
    double b = 3.1415926535; // 定义一个双精度浮点型变量b
    long double c = 3.141592653589793; // 定义一个扩展精度浮点型变量c
    
    printf("float: %.2f\n", a);        // 输出浮点数,保留两位小数
    printf("double: %.10f\n", b);      // 输出双精度浮点数,保留十位小数
    printf("long double: %.15Lf\n", c); // 输出扩展精度浮点数,保留十五位小数
    
    return 0;
}
2.4 布尔型(Boolean)

C语言本身不直接提供布尔类型,但可以通过 stdbool.h 头文件定义布尔类型。

  • bool:布尔类型,值为 truefalse
  • truefalse 是在 stdbool.h 中定义的。
示例程序:
#include <stdio.h>
#include <stdbool.h> // 引入stdbool.h头文件

int main() {
    bool isEven = true;  // 定义一个布尔型变量isEven
    bool isOdd = false;  // 定义一个布尔型变量isOdd
    
    if (isEven) {
        printf("The number is even.\n");
    }
    if (!isOdd) {
        printf("The number is not odd.\n");
    }
    
    return 0;
}
2.5 空类型(Void)

void 是一种特殊的数据类型,表示“没有类型”。void 通常用于函数返回类型,表示该函数不返回任何值。

  • 用于函数的返回类型,表示该函数没有返回值。
  • 用于指针类型,表示指针指向未知类型的数据。
示例程序:
#include <stdio.h>

void printMessage(void) {  // 返回类型为void,表示函数没有返回值
    printf("Hello, this function doesn't return anything!\n");
}

int main() {
    printMessage();
    return 0;
}

3. 总结

  1. 整型:用于存储整数,常见的有 intshortlonglong long
  2. 字符型:用于存储单个字符,通常使用 char
  3. 浮点型:用于存储实数,常用的有 floatdouble
  4. 布尔型:用于存储真或假,可以通过 stdbool.h 使用 bool 类型。
  5. 空类型:用于表示函数没有返回值或指针类型不确定。

通过理解和掌握这些基本数据类型,你可以为后续的C语言学习打下坚实的基础。

4. 课后练习

  1. 编写一个程序,输入一个整数,判断它是正数、负数还是零。
  2. 修改一个程序,输入一个浮点数,判断它是整数还是小数。
  3. 编写一个程序,使用 unsigned int 数据类型,输出一个无符号整数的值。

C语言常量与变量

1. 常量与变量的基本概念

1.1 常量(Constant)

常量是指在程序执行过程中其值不发生变化的数据。常量的定义通常在声明时赋值,并且不能在程序的后续部分修改。

常量的种类:
  • 字面常量(Literal Constants) :直接在程序中写出的常量值,例如整数 10、字符 'A' 等。
  • 常量变量(Constant Variables) :使用 const 关键字定义的常量变量,值在初始化后不可修改。
定义常量的方式:
  1. 字面常量

    • 直接使用常量值,例如 103.14'A' 等。
  2. 常量变量

    • 使用 const 关键字,定义不可修改的常量。
    const int MAX_SIZE = 100; // 定义常量MAX_SIZE
    
示例程序:
#include <stdio.h>

int main() {
    const int MAX_SIZE = 100;  // 定义常量MAX_SIZE
    int arr[MAX_SIZE];         // 使用常量MAX_SIZE作为数组的大小

    printf("The maximum size of the array is: %d\n", MAX_SIZE);
    
    // MAX_SIZE = 200; // 错误:尝试修改常量的值

    return 0;
}

1.2 变量(Variable)

变量是程序中可以存储并改变数据的内存位置。变量有名称、类型、作用域和生命周期。与常量不同,变量的值可以在程序的执行过程中多次修改。

定义变量的格式:
type variable_name; // 声明一个变量,类型为type,名称为variable_name
示例程序:
#include <stdio.h>

int main() {
    int x = 10;  // 定义一个整型变量x,并初始化为10
    float y = 3.14f;  // 定义一个浮点型变量y,并初始化为3.14
    char ch = 'A';  // 定义一个字符型变量ch,并初始化为'A'
    
    printf("x = %d\n", x);
    printf("y = %.2f\n", y);
    printf("ch = %c\n", ch);
    
    x = 20;  // 修改变量x的值
    printf("Updated x = %d\n", x);
    
    return 0;
}

2. 常量与变量的区别

特性常量(Constant)变量(Variable)
定义在程序中一旦赋值后,值不能改变值在程序执行过程中可以改变
使用用于存储固定不变的值(如数学常数、数组大小等)用于存储可能变化的值(如计数器、用户输入等)
定义方式使用 const 关键字定义使用普通数据类型定义
修改性不可修改可以修改
初始化必须在定义时初始化可在定义时或稍后赋值

3. 常量与变量的应用场景

3.1 常量的应用场景

常量通常用于:

  1. 数学常数,例如 PI
  2. 程序中的配置值,例如数组大小、最大值、限制条件等。
  3. 程序中不希望被修改的值,例如错误代码、日期、常见字符等。
示例:使用常量定义PI值
#include <stdio.h>

#define PI 3.14159  // 使用宏定义常量PI

int main() {
    float radius = 5.0;
    float area = PI * radius * radius; // 使用常量PI来计算圆的面积
    
    printf("The area of the circle is: %.2f\n", area);
    
    return 0;
}
3.2 变量的应用场景

变量通常用于:

  1. 存储用户输入的数据。
  2. 存储需要在程序中动态改变的值。
  3. 用作临时数据存储,例如循环计数器、条件判断等。
示例:计算矩形的面积
#include <stdio.h>

int main() {
    float length, width, area;

    // 用户输入矩形的长度和宽度
    printf("Enter the length of the rectangle: ");
    scanf("%f", &length);
    printf("Enter the width of the rectangle: ");
    scanf("%f", &width);

    area = length * width;  // 计算面积

    printf("The area of the rectangle is: %.2f\n", area);
    
    return 0;
}

4. 常量与变量的总结

  1. 常量用于存储不变的数据值,例如物理常数、程序配置等。常量的值在程序执行过程中不可改变,因此适合用于固定值的存储。
  2. 变量用于存储可能变化的数据值,程序中的变量值可以随时修改,因此适合用于动态计算和用户交互。
重点回顾:
  • 常量使用 const 关键字进行定义,不能被修改。
  • 变量可以修改,存储程序执行过程中需要频繁更改的数据。

5. 课后练习

  1. 编写程序,定义一个常量 MAX_SIZE 表示数组的最大大小,并使用该常量来创建数组。
  2. 编写程序,要求用户输入一个整数,输出该整数的平方。
  3. 修改上一个程序,添加常量 PI,然后计算输入半径的圆的面积。