我先写点,我不太擅长写,所以各位有问题可以评论说,我看到一定改
一.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>
,使我们能够使用 printf
和 scanf_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);
}
程序包含了两个自定义函数 calculateTotalPrice
和 applyDiscount
,分别用于计算购买商品的总价和应用折扣后的价格。初学者可能不太懂函数和库函数的区别,这里我们也提一嘴吧
是这样在编程中,函数(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函数放在哪都是没有关系的。所以又被称为主函数,此外其实从理论上来说他也是个自定义函数,因为它也是由程序员编写的,并且具有功能和参数。但是他和自定义函数又有点不同。我们也顺带说下吧
-
程序入口点:主函数是整个程序的入口点,是程序执行的起始位置。当程序运行时,操作系统会首先调用主函数,然后才开始执行其他的代码。而其他的自定义函数则是在主函数或其他函数中被调用执行的。
-
特殊参数:主函数的参数列表可以为空,也可以有两种形式:
int main()
或者int main(int argc, char *argv[])
。其中argc
表示命令行参数的数量,argv
是一个指向参数字符串数组的指针。这些参数是用来接收命令行参数的,这是主函数与其他自定义函数的一个显著区别。 -
返回值:主函数的返回值表示程序的结束状态,通常约定返回0表示程序正常结束,返回其他值表示程序异常结束。而其他自定义函数的返回值通常用于返回计算结果或其他数据。
-
编译器要求:虽然理论上主函数与其他自定义函数类似,但是在某些编程语言中,主函数可能有一些特殊的要求。例如,在C语言中,主函数必须命名为
main
,并且返回类型必须是int
。而其他自定义函数的命名和返回类型则没有这样的限制。简单直接点说就是主函数必须是main函数,但是上面的两个自定义函数calculateTotalPrice
和applyDiscount,
我还可以这么叫他们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.空格与分段
我们要知道空格与分段正常来说是没有意义的,他的作用其实也是增加我们程序的美观,当然还有代码位置的合理,也能一定程度的增加我们代码的可读性。
标签:注释,函数,--,C语言,语法,int,printf,库函数 From: https://blog.csdn.net/weixin_57590220/article/details/137383235