C语言学习笔记--(2)基础语法

我先写点,我不太擅长写,所以各位有问题可以评论说,我看到一定改

一.C语言编程的格式

        我们可以先看一个关于C语言的基础实例

下面是一个简单的C语言程序,用于计算购买商品的总价,并根据折扣计算最终支付金额。

#include <stdio.h>

// 计算购买商品的总价
float calculateTotalPrice(int quantity, float price) {
    return quantity * price;
}

// 计算折扣后的价格
float applyDiscount(float total, float discount) {
    return total * (1 - discount);
}

int main() {
    int quantity;
    float price, discount, total, finalPrice;

    // 获取商品数量
    printf("Enter the quantity of the item(商品数量): ");
    if (scanf_s("%d", &quantity) != 1) {
        printf("Error reading quantity\n");
        return 1; // 返回错误代码
    }

    // 获取商品单价
    printf("Enter the price per item(商品单价): ");
    if (scanf_s("%f", &price) != 1) {
        printf("Error reading price\n");
        return 1; // 返回错误代码
    }

    // 获取折扣率
    printf("Enter the discount rate (in decimal)(折扣率): ");
    if (scanf_s("%f", &discount) != 1) {
        printf("Error reading discount\n");
        return 1; // 返回错误代码
    }

    // 计算总价
    total = calculateTotalPrice(quantity, price);

    // 计算折扣后的最终价格
    finalPrice = applyDiscount(total, discount);

    // 输出总价和折扣后的价格
    printf("Total price before discount(总价): $%.2f\n", total);
    printf("Total price after discount(折扣后的价格): $%.2f\n", finalPrice);

    return 0;
}

我们可以先试试将这段代码直接复制到编译器去,然后选择编译就将会得到如下界面

        我们可以看到在弹出的窗口中已经输出了总价以及折扣后的价格,下面我们来具体研究下C语言结构的构成,上面的代码对于初学者其实挺难的,但是不要急,那就说明知识点很多,我们来慢慢学。

1. 头文件

#include <stdio.h>

        这里就是我们常说的声明,这个语句的功能是进行预处理的。

        我们运用了#include 这个指令,#include 称为文件包含命令。

        其后面尖括号里面的内容被称为该程序的头文件或者首文件,这里包含了标准输入输出头文件 <stdio.h>,使我们能够使用 printfscanf_s 函数。

2. 注释

// 计算购买商品的总价
// 计算折扣后的价格

        再然后就是注释,如果不出意外我们在编辑器里面将看见的这个是灰色的,是因为被//这个符号注释掉,也就是说这行将不再参与代码的运行,目的是方便人去看,或者后人的读。我们常用的注释方式有单行注释以及多行注释

        在C语言中,常用的注释方式主要有两种:单行注释和多行注释。

  •   单行注释

        单行注释用于在代码中单独注释一行或部分内容,以便于程序员理解代码的功能或者进行临时的注释性说明。单行注释以 // 开始,直到行尾结束。

// 这是一个单行注释 
int x = 5; // 这是另一个单行注释
  •  多行注释

        多行注释用于注释多行内容,或者注释大段的代码。多行注释以 /* 开始,以 */ 结束,之间的内容都被注释掉。

/* 
这是一个
 多行注释 
*/

 int y = 10;

 /* 注释掉的代码段: 

for (int i = 0; i < 10; i++) { 
// do something
 }

 */

        多行注释通常用于注释掉大段的代码或者进行多行的解释说明。

        以上就是在C语言中常用的两种注释方式。使用注释能够增加代码的可读性和可维护性,帮助其他程序员理解代码的含义,以及自己在日后回顾代码时更容易理解代码的逻辑。不同语言不同编辑器其实注释符号不一样,就比如Python语言中就会用#去进行注释。

3. 函数

float calculateTotalPrice(int quantity, float price) { 
    // 计算总价
     return quantity * price;
 } 
float applyDiscount(float total, float discount) {
    // 计算折扣后的价格 
     return total * (1 - discount); 
}

        程序包含了两个自定义函数 calculateTotalPriceapplyDiscount,分别用于计算购买商品的总价和应用折扣后的价格。初学者可能不太懂函数和库函数的区别,这里我们也提一嘴吧

        是这样在编程中,函数(Function)和库函数(Library Function)是两个不同的概念,它们之间有一些区别。

  • 函数(Function):

1. **自定义函数**:

函数是程序中的一段代码块,用于完成特定的任务或者执行特定的操作。自定义函数由程序员编写,可以根据需求定义不同的功能,并在程序中进行调用和重复使用。

2. **功能性**:

函数可以执行各种操作,例如计算、逻辑判断、数据处理等,可以实现各种功能,从简单的加法运算到复杂的算法实现都可以通过函数来完成。

3. **模块化设计**:

函数的使用可以实现程序的模块化设计,将程序分解为多个功能单元,使程序结构更加清晰、可维护性更高。

4. **可重用性**:

函数可以被多次调用,使得相同的功能可以在不同的地方重复使用,提高了代码的复用性和开发效率。

  • 库函数(Library Function):

1. **系统提供**:

库函数是由编程语言或操作系统提供的已经实现好的函数,通常存储在库文件中,程序员可以直接调用这些函数来完成特定的任务。

2. **功能性**:

库函数提供了各种功能,例如输入输出、数学运算、字符串处理等,程序员可以直接调用这些函数来完成相应的操作,而不需要重新实现功能。

3. **标准库和第三方库**:

库函数可以分为标准库函数和第三方库函数。标准库函数是编程语言或操作系统提供的基本功能函数,例如C语言的 `<stdio.h>` 和 `<math.h>`;第三方库函数是由第三方开发者提供的库函数,用于扩展语言的功能或提供特定领域的功能。

4. **调用方式**:

库函数的调用方式与自定义函数类似,但是需要在程序中包含相应的头文件,并链接相应的库文件,以便在编译和链接时能够找到函数的定义和实现。

        总的来说,函数是程序中的一个功能单元,用于完成特定的任务或操作,而库函数是已经实现好的函数,程序员可以直接调用来完成相应的操作。函数可以由程序员自行编写,而库函数通常由编程语言或操作系统提供。

4. main函数

int main() {
 // 主函数开始 
}

main 函数是程序的入口点,它是程序执行时的起始位置。C语言的程序全都是从main函数开始执行的,无论将main函数放在哪都是没有关系的。所以又被称为主函数,此外其实从理论上来说他也是个自定义函数,因为它也是由程序员编写的,并且具有功能和参数。但是他和自定义函数又有点不同。我们也顺带说下吧

  1. 程序入口点:主函数是整个程序的入口点,是程序执行的起始位置。当程序运行时,操作系统会首先调用主函数,然后才开始执行其他的代码。而其他的自定义函数则是在主函数或其他函数中被调用执行的。

  2. 特殊参数:主函数的参数列表可以为空,也可以有两种形式:int main() 或者 int main(int argc, char *argv[])。其中 argc 表示命令行参数的数量,argv 是一个指向参数字符串数组的指针。这些参数是用来接收命令行参数的,这是主函数与其他自定义函数的一个显著区别。

  3. 返回值:主函数的返回值表示程序的结束状态,通常约定返回0表示程序正常结束,返回其他值表示程序异常结束。而其他自定义函数的返回值通常用于返回计算结果或其他数据。

  4. 编译器要求:虽然理论上主函数与其他自定义函数类似,但是在某些编程语言中,主函数可能有一些特殊的要求。例如,在C语言中,主函数必须命名为 main,并且返回类型必须是 int。而其他自定义函数的命名和返回类型则没有这样的限制。简单直接点说就是主函数必须是main函数,但是上面的两个自定义函数 calculateTotalPriceapplyDiscount,我还可以这么叫他们zongjia和zhekou(就是总价和折扣的拼音)这都是可以的,只要你能看懂就行。

5. 变量和数据类型

int quantity; 
float price, discount, total, finalPrice;

        这些变量用于存储用户输入的数量、价格、折扣率以及计算后的总价和最终价格。

        变量定义的方式有很多:

1. 按数据类型分类:

 基本数据类型:

- 整型变量:用于存储整数值。在C语言中,通常使用 `int` 来定义整型变量,例如 `int x;`。
- 浮点型变量:用于存储浮点数(即带小数点的数值)。在C语言中,通常使用 `float` 或 `double` 来定义浮点型变量,例如 `float y;`。
- 字符型变量:用于存储单个字符。在C语言中,通常使用 `char` 来定义字符型变量,例如 `char ch;`。
- 布尔型变量(在一些语言中):用于表示真假值。在一些语言中,通常使用 `boolean` 或 `bool` 来定义布尔型变量,例如 `bool flag;`。

复合数据类型:

- 数组:用于存储相同类型的多个数据元素。在C语言中,数组的定义形式为 `type name[size];`,例如 `int arr[10];`。
- 结构体:用于封装多个不同类型的数据。在C语言中,使用 `struct` 关键字来定义结构体,例如 `struct Person { char name[20]; int age; }; struct Person p;`。
- 枚举类型:用于定义一组具名的整数常量。在C语言中,使用 `enum` 关键字来定义枚举类型,例如 `enum Color { RED, GREEN, BLUE }; enum Color color;`。

 2. 按作用域分类:

局部变量:

局部变量是在函数内部定义的变量,它们的作用域仅限于定义它们的函数内部。局部变量在函数调用时被创建,在函数返回时被销毁。例如:

void myFunction() {
    int localVar;
}
全局变量:

全局变量是在函数外部定义的变量,它们的作用域可以延伸到整个程序。全局变量在程序启动时被创建,在程序结束时被销毁。例如:

int globalVar;
void myFunction() {
    // 可以访问全局变量 globalVar
}

 3. 按初始化方式分类:

 显式初始化:

在定义变量时进行初始化,可以显式地为变量赋予初始值。例如:

int x = 10;
 隐式初始化:

如果在定义变量时没有显式地进行初始化,那么变量会被隐式初始化为默认值。例如:

int y; // y被自动初始化为0

4. 动态分配内存:

在运行时根据需要动态分配内存。动态分配的内存需要手动释放,以避免内存泄漏。例如:

int *ptr = malloc(sizeof(int));

 5. const变量:

定义为常量的变量,在程序运行过程中不可改变其值。例如:
 

const int MAX_VALUE = 100;

这些不同的变量定义方式提供了灵活性和功能性,程序员可以根据需求选择合适的方式来定义变量。

6. 语句和控制结构

printf("Enter the quantity of the item(商品数量): "); 

if (scanf_s("%d", &quantity) != 1) 
{ 
    printf("Error reading quantity\n"); 
    return 1; // 返回错误代码 
}

这些语句用于从用户处获取输入,并检查输入的有效性。

7. 标准输出和输入

printf("Total price before discount(总价): $%.2f\n", total); 
printf("Total price after discount(折扣后的价格): $%.2f\n", finalPrice);

这些语句用于输出计算结果到屏幕上。

8."{}"的作用

在编程中,大括号 `{}` 是用来表示代码块(Block)的,它们有着多种作用,取决于它们所处的上下文。下面是大括号 `{}` 的一些常见用途:

1. 表示代码块:

大括号 `{}` 可以用来将一系列语句组合成一个代码块,形成一个执行单元。这在控制结构中特别常见,如 `if`、`else`、`for`、`while`、`do-while` 等。例如:

if (x > 0) {
    // 如果x大于0,执行以下代码块
    printf("x is positive\n");
}

 2. 定义函数体:

在函数定义中,大括号 `{}` 用于包含函数体,即函数的具体实现代码。例如:

void myFunction() {
    // 函数体开始
    printf("This is my function\n");
    // 函数体结束
}

3. 初始化数组和结构体:

在C语言中,大括号 `{}` 也用于初始化数组和结构体。例如:

int arr[5] = {1, 2, 3, 4, 5};
struct Person {
    char name[20];
    int age;
};
struct Person p = {"John", 30};

4. 作用域限定:

在一些编程语言中,大括号 `{}` 也可以用于限定变量的作用域,例如在C++中的局部变量的作用域。例如:

void myFunction() {
    int localVar = 10;
    {
        int innerVar = 20;
        // 这里可以访问localVar和innerVar
    }
    // 这里只能访问localVar,无法访问innerVar
}

总的来说,大括号 `{}` 在编程中具有多种作用,我们可以理解为一对大括号就表示一个结构层次。但是我们一定要注意大括号是成对出现的。

9.";"的作用

如果我们看前面,我们发现每一个语句结束都有一个";",它是表示这个语句以及结束了。

10.空格与分段

我们要知道空格与分段正常来说是没有意义的,他的作用其实也是增加我们程序的美观,当然还有代码位置的合理,也能一定程度的增加我们代码的可读性。

  • 25
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值