C语言基础与控制结构

目录

C语言基础

C语言的起源和特点:

举例

 变量和常量的定义和使用

举例 

 运算符和表达式

 输入输出函数

示例

控制结构

条件语句

 循环语句

常见的循环语句包括for循环、while循环和do-while循环:

跳转语句

总结


C语言基础

C语言的起源和特点:

C语言起源于20世纪70年代初,由贝尔实验室的丹尼斯·里奇(Dennis Ritchie)和肯·汤普逊(Ken Thompson)共同开发。最初,C语言是为了在Unix操作系统上编写系统软件而设计的。

C语言的特点包括:

  1. 简洁高效:C语言的语法相对简单,能够以较少的代码完成复杂的任务。它提供了一些基本的数据类型和控制结构,使程序员能够更直观地表达算法和逻辑。

  2. 可移植性强:C语言的代码可以在不同的操作系统和硬件平台上进行移植。这是因为C语言的设计目标之一是提供一个中间层,能够与底层硬件和操作系统进行有效的交互。

  3. 高性能:C语言的代码经过优化后,可以获得很高的执行效率。C语言支持低级别的操作,例如位运算和指针操作,使程序员能够更好地控制内存和计算资源。

  4. 直接访问内存:C语言提供了指针的概念,允许程序直接访问内存地址。这使得C语言在处理底层系统和资源时非常灵活,例如动态内存分配和数据结构的实现。

  5. 丰富的库函数:C语言提供了丰富的标准库函数,涵盖了各种常见的操作,例如输入输出、字符串处理、数学运算等。这些库函数使得开发人员能够快速地实现各种功能。

  6. 应用广泛:由于C语言的高性能和可移植性,它被广泛应用于系统软件、嵌入式系统、游戏开发、科学计算、网络编程等领域。

C语言的数据类型(int, float, double, char等) 

  1. 基本整数类型:

    • int:用于表示整数,通常占用4个字节。
    • short:用于表示短整数,通常占用2个字节。
    • long:用于表示长整数,通常占用4或8个字节,取决于系统位数。
    • char:用于表示字符,通常占用1个字节。
  2. 浮点数类型:

    • float:用于表示单精度浮点数,通常占用4个字节。
    • double:用于表示双精度浮点数,通常占用8个字节。
  3. 枚举类型(Enum):用于定义一组具名的常量值,例如定义颜色、状态等。

  4. void类型:表示“无类型”,常用于函数返回类型、指针类型等。

  5. 指针类型(Pointer):用于存储内存地址,可以用来间接访问数据。

  6. 数组类型:用于存储一组具有相同数据类型的元素。

此外,C语言还提供了一些复合数据类型,包括结构体(struct)和联合体(union),用于存储不同类型的数据成员。

C语言还支持通过类型修饰符来扩展数据类型的含义:

  • signed 和 unsigned:用于修饰整数类型,指定是否允许负数。
  • const:用于修饰变量,表示其值不可修改。
  • volatile:用于修饰变量,表示其值可能被程序以外的因素修改。

举例

  1. 整数类型:
int num = 10;
short count = 5;
long largeNum = 1000000L;
  1. 浮点数类型:
float average = 85.5f;
double pi = 3.1415926;
  1. 字符类型:
char ch = 'A';
  1. 枚举类型:
enum Color { RED, GREEN, BLUE };
enum Color chosenColor = GREEN;
  1. 指针类型:
int* ptr;  // 声明一个指向整数的指针变量
int num = 20;
ptr = #  // 将指针变量指向num的地址
printf("num的值为:%d\n", *ptr);  // 输出:num的值为:20
  1. 数组类型:
int arr[5] = {1, 2, 3, 4, 5};  // 声明一个包含5个整数的数组
printf("arr[2]的值为:%d\n", arr[2]);  // 输出:arr[2]的值为:3

  1. 结构体类型:

struct Person {
    char name[20];
    int age;
    float height;
};

struct Person p1;  // 声明一个Person类型的结构体变量
strcpy(p1.name, "John");  // 对结构体成员进行赋值
p1.age = 25;
p1.height = 175.5;

 变量和常量的定义和使用

  1. 变量的定义和使用:

    • 定义变量:在使用变量之前,需要先定义它们的数据类型和名称。定义变量的语法是:数据类型 变量名; 例如:int num;
    • 初始化变量:可以选择在定义变量的同时为其赋初值,也可以稍后在程序中进行赋值操作。例如:int num = 10; 或者 num = 20;
    • 使用变量:在程序中可以通过变量名来访问和修改变量的值。例如:printf("num的值为:%d\n", num); 或者 num = num + 5;
  2. 常量的定义和使用:

    • 定义常量:常量是指在程序中不可更改的固定值。在C语言中,可以使用#define预处理指令或const关键字来定义常量。
      • #define预处理指令:#define 常量名 常量值。例如:#define PI 3.1415926
      • const关键字:const 数据类型 常量名 = 常量值;。例如:const int MAX_NUM = 100;
    • 使用常量:在程序中可以直接使用常量名来代表其对应的值。例如:int radius = 5; int area = PI * radius * radius;

举例 

  1. 变量的定义和使用:

int num;  // 定义一个整数类型的变量
num = 10; // 对变量进行赋值
printf("num的值为:%d\n", num); // 输出:num的值为:10

float salary = 1000.50f; // 定义并初始化一个浮点数类型的变量
salary = salary + 500.75f; // 修改变量的值
printf("当前的工资为:%.2f\n", salary); // 输出:当前的工资为:1501.25
  1. 常量的定义和使用:
    #define PI 3.1415926 // 定义一个宏常量
    const int MAX_NUM = 100; // 定义一个常量
    
    float radius = 5.5;
    float circumference = 2 * PI * radius; // 使用宏常量计算圆的周长
    printf("圆的周长为:%.2f\n", circumference); // 输出:圆的周长为:34.56
    
    int score;
    scanf("%d", &score);
    if (score > MAX_NUM) { // 使用常量进行条件判断
        printf("分数超过了最大值\n");
    }
    

 运算符和表达式

 运算符是用于在表达式中执行各种操作的符号。表达式由运算符和操作数组成,通过运算符对操作数进行计算得到结果。

  1. 算术运算符:
    int a = 10, b = 3;
    int sum = a + b; // 加法运算
    int difference = a - b; // 减法运算
    int product = a * b; // 乘法运算
    int quotient = a / b; // 整除运算
    int remainder = a % b; // 取余运算
    float result = (float)a / b; // 强制类型转换后的除法运算
    

  2. 关系运算符:
    int x = 5, y = 8;
    if (x == y) { // 相等判断
        printf("x等于y\n");
    }
    if (x != y) { // 不等判断
        printf("x不等于y\n");
    }
    if (x > y) { // 大于判断
        printf("x大于y\n");
    }
    if (x < y) { // 小于判断
        printf("x小于y\n");
    }
    if (x >= y) { // 大于等于判断
        printf("x大于等于y\n");
    }
    if (x <= y) { // 小于等于判断
        printf("x小于等于y\n");
    }
    

  3. 逻辑运算符:
    int p = 1, q = 0;
    if (p && q) { // 逻辑与
        printf("p和q都为真\n");
    }
    if (p || q) { // 逻辑或
        printf("p和q至少有一个为真\n");
    }
    if (!p) { // 逻辑非
        printf("p为假\n");
    }
    

  4. 赋值运算符:
    int num = 10;
    num += 5; // 等同于 num = num + 5;
    num -= 3; // 等同于 num = num - 3;
    num *= 2; // 等同于 num = num * 2;
    num /= 4; // 等同于 num = num / 4;
    num %= 3; // 等同于 num = num % 3;
    

  5. 自增和自减运算符:
    int count = 5;
    count++; // 自增1,等同于 count = count + 1;
    count--; // 自减1,等同于 count = count - 1;
    

  6. 算术表达式:
    int a = 5, b = 3, c = 2;
    int result1 = a + b - c * 2; // 算术运算表达式
    float result2 = (float)(a + b) / c; // 强制类型转换和除法运算表达式
    

  7. 关系表达式:
    int x = 10, y = 15, z = 10;
    int result1 = x > y; // 大于运算,结果为0(假)
    int result2 = x == z; // 等于运算,结果为1(真)
    int result3 = x >= z && y < z; // 大于等于和小于运算,结果为0(假)
    

  8. 逻辑表达式:
    int p = 1, q = 0, r = 1;
    int result1 = p && q; // 逻辑与运算,结果为0(假)
    int result2 = p || q || r; // 逻辑或运算,结果为1(真)
    int result3 = !(p && r); // 逻辑非运算,结果为0(假)
    

  9. 条件表达式:
    int score = 85;
    char grade = (score >= 90) ? 'A' : ((score >= 80) ? 'B' : 'C'); // 条件运算符表达式,根据分数确定等级
    

  10. 函数调用表达式:
    int x = 5, y = 3;
    int max = (x > y) ? x : y; // 调用条件运算符,返回较大的数
    

 输入输出函数

示例

#include 

int main() {
    int num;
    printf("请输入一个整数:");
    scanf("%d", &num);  // 从用户处获取输入
    printf("您输入的整数是:%d\n", num);  // 将结果输出给用户

    return 0;
}

控制结构

条件语句

  1. if语句:
    int num = 10;
    
    if (num > 0) {
        printf("num是正数\n");
    }
    

  2. if-else语句:
    int num = -5;
    
    if (num > 0) {
        printf("num是正数\n");
    } else {
        printf("num是负数\n");
    }
    

  3. if-else if-else语句:
    int num = 0;
    
    if (num > 0) {
        printf("num是正数\n");
    } else if (num < 0) {
        printf("num是负数\n");
    } else {
        printf("num是零\n");
    }
    

  4. switch语句:
    int choice = 2;
    
    switch (choice) {
        case 1:
            printf("选择了1\n");
            break;
        case 2:
            printf("选择了2\n");
            break;
        case 3:
            printf("选择了3\n");
            break;
        default:
            printf("无效的选择\n");
            break;
    }
    

 循环语句

常见的循环语句包括for循环、while循环和do-while循环:

  1. for循环:
    for (int i = 0; i < 5; i++) {
        printf("%d ", i);
    }
    

  2. while循环:
    int i = 0;
    while (i < 5) {
        printf("%d ", i);
        i++;
    }
    

  3. do-while循环:
    int i = 0;
    do {
        printf("%d ", i);
        i++;
    } while (i < 5);
    

跳转语句

在C语言中,跳转语句用于在程序执行过程中改变代码的正常执行顺序,从而实现跳过特定代码块或无条件地转移到程序的其他位置。常见的跳转语句包括breakcontinuegotoreturn语句。以下是这些跳转语句的示例:

  1. break语句:用于在循环或switch语句中终止代码块的执行,并跳出循环或switch语句。
    for (int i = 0; i < 5; i++) {
        if (i == 3) {
            break;
        }
        printf("%d ", i);
    }
    

  2. continue语句:用于跳过当前迭代中剩余的代码,并开始下一次迭代。

for (int i = 0; i < 5; i++) {
    if (i == 3) {
        continue;
    }
    printf("%d ", i);
}
  1. goto语句:通过指定标签名称,直接跳转到代码中的标签位置。尽量避免使用goto语句,因为它可能导致代码的可读性和维护性降低。
    int num = 5;
    if (num > 0) {
        goto positive;
    } else {
        goto negative;
    }
    
    positive:
        printf("数字是正数\n");
        goto end;
    
    negative:
        printf("数字是负数\n");
    
    end:
        printf("程序结束\n");
    

  2. return语句:用于从函数中返回值,并提前终止函数的执行。
    int add(int a, int b) {
        return a + b;
    }
    

总结

  1. 变量和数据类型:

    • C语言中的变量用于存储数据,并且每个变量都有一个特定的数据类型,如整数(int)、浮点数(float)、字符(char)等。
    • 变量必须在使用前进行声明,并且可以进行赋值、运算和操作。
  2. 输入和输出:

    • printf()函数用于格式化输出到屏幕上。
    • scanf()函数用于从用户输入中读取数据。
    • getchar()函数用于读取单个字符。
  3. 运算符:

    • 常见的算术运算符有加法(+)、减法(-)、乘法(*)、除法(/)等。
    • 比较运算符用于比较两个值的关系,如相等(==)、大于(>)、小于(<)等。
    • 逻辑运算符用于组合条件,如与(&&)、或(||)和非(!)等。
  4. 控制结构:

    • if语句用于根据条件执行不同的代码块。
    • if-else语句在条件为真时执行一个代码块,在条件为假时执行另一个代码块。
    • switch语句根据表达式的值选择执行不同的代码分支。
    • for循环用于重复执行一段代码,可以在循环中控制计数器和终止条件。
    • while循环用于在满足条件时重复执行代码块。
    • do-while循环先执行一次代码块,然后在满足条件时重复执行。
    • break语句用于终止循环或switch语句的执行。
    • continue语句用于跳过当前迭代,继续下一次迭代。

你可能感兴趣的:(C语言学习,c语言,开发语言)