目录
五、注释
(一)注释的好处
C语言中,注释可以提高代码的可读性和可维护性,同时也有助于团队协作和代码的重构。
以下是注释的好处:
1.提高代码可读性:注释可以帮助其他开发者理解你的代码,特别是对于一些复杂的算法或者代码逻辑,注释可以让其他人更容易理解思路。
2.方便代码维护:当需要修改代码时,注释可以提供关于代码目的,实现方式和细节的信息,这些有助于确保修改后的代码能够正确地工作。
3.帮助团队协作:注释可以帮助团队成员更好地理解彼此的代码,避免重复工作和冲突,同时可以提高团队的效率和生产力。
4.便于代码重构:在进行代码重构时,注释可以提供有关代码目的和实现方式的信息,这有助于确保重构后的代码仍然满足原来的需求。
(二)注释风格
在C语言中,常见的注释风格有以下两种:
1.行注释:在代码行的末尾添加注释,可以使用双斜线(//)来表示
例如:
int main () { int x = 1; //这是一行注释 return 0; }
2.块注释:用/* 和 */把注释包裹起来,可以跨越多行。(不可嵌套注释)
例如:
int main () { int x = 1; /* 这是一行注释, 这还是一行注释*/ return 0; }
无论使用那种注释风格,最重要的是保持一致性,并且遵循团队内部代码风格规范。这有助于代码在不同的开发者之间更容易阅读和理解。
六、选择语句
人生处处有选择,C语言也拥有选择语句,用于根据特定条件的结果来执行不同的代码块。此处先介绍两种常见的选择语句
(一) if语句
1.首先需要定义一个条件,例如一个变量x
2.然后利用if关键字,判断条件是否为真
3.如果条件为真,则执行if语句后面的代码块。
4.如果条件为假,则跳过if语句后面的代码块,执行else语句后面的代码块。
例如,以下代码可以判断一个数是否为正数
#include <stdio.h> int main () { int x = 0; scanf ("%d",&x); if (x > 0) { printf ("x是正数\n"); } else { printf ("x不是正数\n"); } return 0; }
(二)switch语句
1.首先需要定义一个表达式,例如变量DayOfWeek
2.然后使用switch关键字,根据表达式的值选择执行哪个case语句块。
3.每个case语句块后面都需要使用break关键字来终止switch语句。
4.如果表达式的值与任何一个case语句块都不匹配,则执行default语句块中的代码
例如,以下代码可以根据一个数字的值来输出对应的星期
#include <stdio.h> int main () { int DayOfWeek = 0; scanf ("%d",&DayOfWeek); switch (DayOfWeek) case 1: { printf ("星期一\n"); break; } case 2: { printf ("星期二\n"); break; } case 3: { printf ("星期三\n"); break; } case 4: { printf ("星期四\n"); break; } case 5: { printf ("星期五\n"); break; } case 6: { printf ("星期六\n"); break; } case 7: { printf ("星期日\n"); break; } return 0; }
七、循环语句
循环语句用于重复执行一段代码,常见的循环语句一共有三种
while循环
do while循环
for 循环
(一)while循环
1.首先需要定义一个循环条件,例如一个变量i
2.然后使用while关键字,设置循环条件。
3.在循环体中,编写需要重复执行的重复操作
4.在循环体的最后,需要更新循环条件的值
例如,以下代码可以输出1到10之间的所有奇数
#include <stdio.h> int main () { int i = 1; while (i <= 10) { if (i % 2 != 0) { printf ("%d\n",i); } i++; } return 0; }
(二)do - while循环
1.首先需要定义一个循环条件,例如一个变量num
2.然后使用do关键字,设置循环体
3.在循环体中,编写需要执行的重复操作
4..在循环体的最后,需要更新循环条件的值
5.最后使用while关键字,设置循环条件
例如,以下代码可以让用户重复输入数字,直到输入的数字等于0
#include <stdio.h> int main () { int num; do { printf ("请输入一个数字(输入0退出):"); scanf ("%d",&num); } while (num != 0); }
(三)for循环
1.首先需要定义一个循环变量i,并初始化他的值
2.然后使用for关键字,设置循环条件和更新表达式
3.在循环体中,编写需要执行的重复操作
例如,以下代码可以输出1到10之间的所有整数
#include <stdio.h> int main () { for (int i = 1; i <= 10; i++) { printf ("%d\n",i); } return 0; }
八、函数
(一)函数的引入
函数可以将一组代码封装在一起,以便在程序中多次调用。这样可以使程序更加简洁、易于维护和理解。
函数由函数名、参数列表、返回值和函数体组成。函数名用于唯一标识函数,参数列表用于传递参数,返回值用于返回函数的执行结果,函数体是一组语句块,用于实现函数的功能。
(二)如何写函数
首先需要定义函数的返回类型、函数名和参数列表。
参数列表包括参数的数据类型和参数的变量名,多个参数之间用逗号分割
函数体中编写需要执行的代码,可以利用参数来操作,也可以返回一个值作为函数的结果。
例如,以下代码定义了一个名为Add的函数,用于计算两个整数的和
#include <stdio.h> Add(int x,int y) { int result = x + y; return result; } int main () { int a = 0; int b = 0; scanf ("%d %d",&a,&b); int sum = Add(a,b); return 0; }
九、数组
(一)数组的定义
数组是一组相同类型的元素的集合,可以通过下标来访问每个元素。数组的定义包括数组类型、数组名和数组的大小。数组的大小表示书注重元素的个数,可以是一个常量或一个变量(变长数组,后文详解)。
例如,以下代码定义了一个名为arr的整型数组,包含5个元素
#include <stdio.h> int main () { int arr[5]; return 0; }
(二)数组的下标
数组的下标从0开始,表示第一个元素,依次递增。可以使用下标来访问数组中的元素。下标应该是一个常量。
例如,以下代码定义了一个名为arr的整型数组,包含5个元素,并给第二个元素赋值为10,然后输出第二个元素。
#include <stdio.h> int main () { int arr[5]; arr[1] = 10; printf ("arr[1]的值为:%d\n",arr[1]); return 0; }
输出结果为:arr[1]的值为:10
(三)数组的使用
可以使用循环语句来遍历数组中的所有元素,以实现对数组的操作。
例如,以下代码定义了一个名为arr的整型数组,包含5个元素,并使用for循环遍历数组中的所有元素,并输出每个元素的值
#include <stdio.h> int main () { int arr[5] = {1,2,3,4,5}; for (int i = 0; i < 5; i++) { printf("%d ",arr[i]); } return 0; }
输出结果为:1 2 3 4 5
另外,数组也可以作为函数的参数传递,以便在函数中操作数组。在函数中,可以通过指针来访问数组中的元素。
例如,以下代码定义了一个名PrintArray的函数,用于输出一个整型数组中的所有元素#include <stdio.h> void PrintArray(int* arr,int len) { for (int i = 0; i < len; i++) { printf ("%d ",arr[i]); } } int main () { int arr[5] = {1,2,3,4,5}; PrintArray(arr,5); return 0; }
输出结果为:1 2 3 4 5
十、操作符
(一)算术操作符
1./ 和 %的基本使用
/ 表示整除,即两个整数相除的结果向下取整。
% 表示取模,即两个整数相除的余数。
例如,以下代码计算了两个整数相除的结果和余数:
#include <stdio.h> int main() { int a = 10; int b = 3; int c = a / b; int d = a % b; printf("a/b的结果为%d,a%%b的余数为%d\n", c, d); return 0; }
2.经典的错误,标准的零分
在进行除法运算时,除数不能为0,否则会导致程序崩溃或返回非法结果。
例如,以下代码中尝试将一个数除以0,会导致程序崩溃:
#include <stdio.h> int main() { int a = 10; int b = 0; int c = a / b; printf("a/b的结果为%d\n", c); return 0; }
输出结果为:程序崩溃
(二)移位操作符
移位操作符用于将一个数的二进制表示向左或向右移动指定的位数,可以实现乘以或除以2的幂的操作。
例如,以下代码将一个数左移3位,相当于将它乘以8:
#include <stdio.h> int main() { int a = 5; int b = a << 3; printf("a左移3位的结果为%d\n", b); return 0; }
输出结果为:a左移3位的结果为40
此处内容与二进制有关,不理解也不必妄自菲薄。后续文章将有详解。
(三)位操作符
位操作符用于对二进制位进行操作,包括按位与(&)、按位或(|)、按位异或(^)和按位取反(~)。
例如,以下代码使用按位与操作符,将两个数的二进制位进行与运算:
#include <stdio.h> int main() { int a = 5; int b = 3; int c = a & b; printf("a和b按位与的结果为%d\n", c); return 0; }
输出结果为:a和b按位与的结果为1
此处内容与二进制有关,不理解也不必妄自菲薄。后续文章将有详解。
(四)赋值操作符
赋值操作符用于将一个值赋给一个变量,常见的赋值操作符有=、+=、-=、*=、/=、%=、&=、|=、^=、<<=和>>=。
例如,以下代码使用+=操作符,将一个数加上另一个数的值,并将结果赋给该数:
#include <stdio.h> int main() { int a = 5; int b = 3; a += b; printf("a的值为%d\n", a); return 0; }
输出结果为:a的值为8
(五)单目位操作符
1. ! 操作符
!操作符用于对一个表达式的值进行取反操作,如果表达式的值为0,则取反后为1,反之为0。
例如,以下代码使用!操作符,判断一个数是否为0:
#include <stdio.h> int main() { int a = 0; if (!a) { printf("a为0\n"); } else { printf("a不为0\n"); } return 0; }
输出结果为:a为0
2. + -
+和-操作符分别表示正号和负号,可以用于对一个数进行取正或取负操作。
例如,以下代码使用+和-操作符,对一个数进行取正和取负操作:
#include <stdio.h> int main() { int a = 5; int b = -a; int c = +b; printf("a的值为%d,b的值为%d,c的值为%d\n", a, b, c); return 0; }
输出结果为:a的值为5,b的值为-5,c的值为-5
3. & * ~
&操作符用于获取一个变量的地址,即取地址操作。
*操作符用于获取一个指针指向的变量的值,即取值操作。
~操作符用于对一个数的二进制表示进行取反操作。
暂不详解
4. sizeof
sizeof操作符用于获取一个数据类型或一个变量的大小,单位为字节。
例如,以下代码使用sizeof操作符,获取一个整型变量和一个整型数组的大小:
#include <stdio.h> int main() { int a = 5; int b[5] = {1, 2, 3, 4, 5}; printf("a的大小为%lu,b的大小为%lu\n", sizeof(a), sizeof(b)); return 0; }
输出结果为:a的大小为4,b的大小为20
5. ++ --
++操作符用于将一个变量的值加1,--操作符用于将一个变量的值减1。
int main() { int a = 10; int b = a++;//后置++,先使用,后++ int b=a,a=a+1; int b = ++a;//前置++,先++,后使用 a=a+1,b=a; int b = a--; int b = a,a=a-1; int b = --a; a=a-1,b=a; printf("a=%d b=%d\n", a, b); return 0; }
主要区别前置++,与后置++的区别
前置是先++后引用,等价于: a = a+1 , b = a
后置是先引用后++,等价于: b = a , a = a + 1
又一个经典的错误,标准的零分
#include<stdio.h> int main() { int b = 0; int a = 4; b = (a++); printf("%d", b); return 0; }
给++带上括号,会先在括号内++完毕之后,再把a赋值给b吗?
如果可以,那么输出应该是5
请自行尝试
6.(类型)
(类型)操作符用于将一个变量或表达式的值转换为指定的数据类型。
例如,以下代码使用(int)操作符,将一个浮点数转换为整型:
#include <stdio.h> int main() { float a = 3.14; int b = (int)a; printf("a的值为%f,b的值为%d\n", a, b); return 0; }
输出结果为:a的值为3.140000,b的值为3
(六)关系操作符
关系操作符用于比较两个值的大小关系,包括>、>=、<、<=、==和!=。其中,==表示相等,!=表示不等。(请特别区分:== 和 =)
例如,以下代码使用逻辑操作符,判断两个数的大小关系:
#include <stdio.h> int main() { int a = 5; int b = 3; if (a > b) { printf("a比b大\n"); } else { printf("a比b小或者相等\n"); } return 0; }
输出结果为:a和b都是正数
(七)逻辑操作符
逻辑操作符用于对两个或多个表达式进行逻辑运算,包括&&、||和!。其中,&&表示逻辑与,||表示逻辑或,!表示逻辑非。
例如,以下代码使用逻辑操作符,判断两个数的大小关系:
#include <stdio.h> int main() { int a = 5; int b = 3; if (a > 0 && b > 0) { printf("a和b都是正数\n"); } else { printf("a和b中至少有一个非正数\n"); } return 0; }
输出结果为:a和b都是正数
(八)条件操作符
条件操作符用于根据一个表达式的值来选择两个可能的值之一,其语法为:表达式1 ? 表达式2 : 表达式3,如果表达式1的值为真,则返回表达式2的值,否则返回表达式3的值。
(九)逗号表达式
逗号表达式用于将多个表达式连接起来,其值为最后一个表达式的值。
按下不表。
(十)下标引用,函数调用,结构成员
1. []
[]操作符用于访问数组中的元素,需要指定元素的下标。
例如,以下代码使用[]操作符,访问一个整型数组中的元素:
#include <stdio.h> int main() { int a[5] = {1, 2, 3, 4, 5}; int b = a[2]; printf("a[2]的值为%d\n", b); return 0; }
输出结果为:a[2]的值为3
2. ()
()操作符用于调用函数或指定表达式的优先级。
例如,以下代码使用()操作符,调用一个自定义函数:
#include <stdio.h> int add(int a, int b) { return a + b; } int main() { int a = 5; int b = 3; int c = add(a, b); printf("%d和%d的和为%d\n", a, b, c); return 0; }
输出结果为:5和3的和为8
3. .->
.和->操作符用于访问结构体中的成员,.用于访问结构体变量的成员,->用于访问指向结构体的指针的成员。
按下不表
总结
本节主要讲述了,注释,选择,循环,函数,数组,以及操作符的简单基本使用,暂时只需了解最基本的概念即可。希望能对读者有很大的帮助。不要忘记留下你免费的赞赞和关注哦。
欲知后事,请看下节