IE盒子

搜索
查看: 189|回复: 3

C语言:基本语法汇总

[复制链接]

4

主题

8

帖子

16

积分

新手上路

Rank: 1

积分
16
发表于 2022-9-21 20:43:28 | 显示全部楼层 |阅读模式
本文将对计算机编程的入门语言——C语言中的基本语法,包括判断,循环,函数,结构体,数组等概念进行介绍讲解。
1.判断语句

在生活中我们经常要做出选择,程序也是如此。购物时的标准,优惠券的折扣条件等,在代码中都需要if语句来进行判断。假如我们要判断一个正整数是偶数还是奇数,可以这样子写:




其中if后面括号中的 x%2 == 0 是一个判断语句,当x%2的值等于0的时候,x%2==0成立,这个表达式会返回1给if语句,表示条件成立。而我们知道,正整数x如果模2等于0,就说明它是偶数。除了a==b可以判断a和b是否相等之外,也可以用a!=b来判断a和b是否不相等。这个多敲点代码就明白了。
2.for循环

接下来我们来学习循环的概念。如果我们要计算1+2,可以简单的定义两个变量i=1和j=2,然后让answer=i+j,就得到了我们想要的结果。但是,如果我们要计算1+2+3+...+100呢?难道我们要定义100个变量吗?理论上是可以这样做,但是这样的代码写起来就很没有效率。我们将要学习的循环可以很好的解决这个问题。


以这个代码中的for循环为例,i=0表示初始化的内容,i<=100表示循环继续执行的条件。i++表示在每次循环体执行完之后执行的内容。19-21行的中括号{}表示循环体的部分,这里我们循环执行ans = ans + i。在第一次循环时,i=1,执行完循环体后ans的值为1。之后执行i++后i=2,符合i<=100的条件,因此进入下一次的循环……以此类推,直到i=101的时候,跳出循环。
3.while循环

while循环,是for循环的另一种写法。它的基本语法如下:
while(循环条件){
循环体;
}同样是计算1+2+…+100,使用while循环的写法如下:


配套循环还有两个语句,分别是continue和break。continue让代码跳过当前循环,进入下一次循环。break则是跳出整个循环。假设我们现在要计算前100个正奇数的和,代码可以这样写:


代码解析:
51行:while(1)代表一个条件判断永远为1的循环,也就是无限循环。
52-55行:判断当前的i是否为偶数,是偶数则continue跳过当前循环。
56-58行:判断是否已经计算了100个奇数,如果是则跳出循环。
当我们使用for循环或者while循环时,条件判断永远成立,使得循环体一直循环反复地执行的情况,就是死循环。死循环可以说是新手最常犯的一个错误。例如,使用while循环的时候,忘记使用break,或者是自变量忘了自增,都可能导致死循环。
4.数组

假如我们有一组学生的成绩,在程序中要如何保存这组数据呢?我们可以使用很多的变量,但是更合理的方式是用数组来进行存储。所谓的数组,其实就是按顺序排列好的一组变量。比如int a[5];对第一个位置的变量赋值为10可以用a[0]=10进行赋值。要取出第一个位置的值,只需要取a[0]即可。
ps:a中的i称之为下标,需要注意的是,大部分编程语言中,下标都是从0开始,而不是从1开始,这与现实世界有些违背。




其中68-70行代表循环读取n个数,并依次放在数组a中。我们已经学习了printf函数用于显示数据,而scanf是与之相对的,用来读取数据。它的格式跟printf类似,但是需要注意后面的变量前面需要加上&,表示变量对应的地址。
5.函数

在计算1+2+…+100后,可能我们会想着计算1+2+…+1000,或者是2+3+…+101等不同范围的求和,这样我们需要不停地改动代码。如果能够把计算这个部分抽取出来,单独作为一个部分,想要计算的时候,只要输入范围,就可以帮我们计算这个范围求和之后的值。函数就是这样一个工具,它把一个特定的过程抽取出来,作为一个模块,可以重复调用


代码解析:
图中的3-9行就是一个函数,其中的
int calculate_sum(int start,int end)第一个int表示的是返回值的类型。代表当这个函数被调用时,会返回一个int类型的值。后面的calculate_sum是函数名,使用函数时主要是根据函数名来指定函数。而后面括号中的start,end是两个int类型的参数,参数的多少是根据我们的需要自己设置的。
在定义的时候,我们并不知道参数start和end具体的值,进行函数调用时,需要指定参数的值。比如13行中,int ans1 = calculate_sum(1,100);把1传给了start,100传给了end。由于函数的返回类型为int,所以定义的ans1也是int类型。
在函数的帮助下,当我们有了新的计算需求后,并不用修改原有的代码,只需要增加新的代码即可,代码的可维护性大大提高。
6.结构体

一个学生,有学号,有成绩,如何在c语言中表示“学生”这个概念呢?结构体就可以实现。结构体的关键字是struct,定义完之后,就可以用结构体来代表一个学生。


代码解析:
12-15定义了一个结构体student,它包含了int类型的学号number,以及int类型的成绩score
18-20定义了学生a,学号为1,成绩为100.
21-23定义了学生b,学号为2,成绩为90
24-26定义了长度为10的结构体数组x,并把a,b放在数组的开头。

7.指针

我们定义的变量,无论是int变量,float变量,在执行时最终都会对应到内存里的某个位置。而指针就是指向变量和对象的地址。就像桌面的快捷方式,它指向一个真实的文件。
指针的用途非常广泛,比如如果你想通过函数改变一个变量的值,就得用指针而不能用值传递。还有在很多时候变量,特别是对象的数据量实在太大,程序员就会用指针来做形参,只需要传递一个地址就行,大大提高了效率。


在C语言中,我们可以通过int* p 的方式来定义一个int类型的指针。在上面代码第6行中,我们定义了指针p,并把变量i在内存中的地址通过&i的方式获取并赋给p。在第8行中,我们通过 *p 的方式取到了 指针p对应的内存中的值
然而,指针的知识点比较复杂,一开始不理解也没关系,并且也不建议初学者去深究指针知识点,知道有这个概念即可。等以后有需要用到了,再深入学习。
回复

使用道具 举报

3

主题

10

帖子

15

积分

新手上路

Rank: 1

积分
15
发表于 2022-9-21 20:44:25 | 显示全部楼层
看不懂[惊讶]
回复

使用道具 举报

1

主题

7

帖子

9

积分

新手上路

Rank: 1

积分
9
发表于 2022-9-21 20:44:56 | 显示全部楼层
如果模2等于零???
回复

使用道具 举报

2

主题

5

帖子

8

积分

新手上路

Rank: 1

积分
8
发表于 2022-9-21 20:45:23 | 显示全部楼层
C语言基础学习整理文档:
https://qv4zhbe2wa.feishu.cn/docs/doccntJhlz1h3qG316qtaQBq2Te
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表