前言

        此文章接博主上篇文章【C语言快速上手】带你了解C语言,零基础入门①,没有看过博主上一篇的文章,可以先去看一下。希望各位大佬在阅读后能及时指出其中的问题,作者一定会积极采纳建议,不断改进,不断进步。在此感谢各位的指正。

        本系列的内容主要是C语言其中的一些基础知识,在阅读后每个人都可以对C语言有一个大概的认识。当然每一个知识点就是简单认识,日后,博主会陆续按C语言学习顺序,去做详细讲解。篇幅较长,建议收藏食用。

        这个C语言学习系列,我会一直做下去,请持续关注博主,你们的支持与鼓励是我更新的最大动力!!

目录

6.选择语句

7.循环语句

8.函数

9.数组

9.1 数组的定义  

9.2 数组的下标

9.3 数组的使用

10.操作符

10.1 算术操作符

10.2 移位操作符

10.3 位操作符

10.4 赋值操作符

10.5 单目操作符

10.6 关系操作符

10.7 逻辑操作符

10.8 条件操作符

10.9 逗号表达式

10.10 下标引用、函数调用和结构成员


6.选择语句

        在实际问题中,经常遇到先判断条件是否成立,然后选择如何完成的情形,这就需要用到选择结构。选择结构是程序设计过程中经常用到的结构,选择结构可分别采用if语句、switch语句、if语句和switch语句的嵌套等多种方式实现。在这里,我们只介绍if语句来让大家理解,深入的介绍,后续在分支语句和循环语句中和大家介绍。

        我们举一个生活中的例子:如果你好好学习,校招时拿一个好offer,走上人生巅峰。如果你不学习,毕业等于失业,回家卖红薯。这就是选择。

        下面我们再拿一段代码进行演示:

#include <stdio.h>

int main()
{
	int coding = 0;
	printf("你会去坚持敲代码吗?(选择 1 or 0):");//进行选择
    scanf("%d", &coding);
	
    if (coding == 1)//判断输入coding是否等于1
	{
		printf("坚持,你会有好offer\n");
	}
	else//输入值不为1的话
	{
		printf("放弃,回家卖红薯");
	}
	
    return 0;
}

        附上代码的不同结果

         输入1和输入0为两个不同的结果,这就是C语言中的选择。

        注:回家卖红薯,只是我举的一个小例子,读者请不要当真。

7.循环语句

        在实际问题中,不仅仅只有选择问题,还存在着一些重复性工作,这时,我们就需要采用循环结构来解决这些问题。

        有些事是必须一直做的,比如我们每天都得吃饭,以及日复一日的学习。我们再举一个例子来给大家说明。如图。

        简单粗暴,这张图其实就是一个循环,在进入大学后你可以每天买一张彩票,并老老实实学习,因为是菜鸟,所以每天重复学习、买彩票的过程,但如果有一天,买彩票中了五百万,那么就可以跳出循环走上人生巅峰,同理不断学习,总有一天你会变成大牛,并走上人生巅峰,这就是生活中的循环。

        那么C语言中是怎样实现循环的呢?有while语句、for语句、do while语句。在这里我们先介绍while语句让大家初步了解一下。废话不多说,我们上代码。

#include <stdio.h>

int main()
{
	printf("进入学校\n");
	int line = 0;//line代表敲代码数

	while (line <= 20000)//将敲代码行数与20000进行比较,如果小于等于就循环,大于就退出循环
	{
		line++;//与line = line + 1;表示相同意思,在这里意思为敲代码行数加一
		printf("我要继续努力敲代码\n");
	}

	if (line > 20000)//选择语句,如果大于便执行其中语句
	{
		printf("好offer\n");
	}

	return 0;
}

再附上代码输出的结果

         其实上面还有很多行“我要继续努力敲代码”,博主这里是直接在程序结束处截图。这就是C语言中的循环。

8.函数

        在结构化程序设计中,一个较大的程序一般应分为若干个程序模块,每个模块完成某一特定的功能。C语言是结构化程序设计语言,引入了函数的概念,用函数来完成各个程序模块的设计。

        C语言中本身提供了极为丰富的函数库,前面经常使用的printf、scanf等函数就是C语言函数库中的函数,也就是库函数。

        此外,C语言还提供了用户自定义函数的功能,以满足不同用户对不同问题求解的需要。

        下面我们来写一个简单的求和程序。

#include <stdio.h>

int main()
{
	//创建变量
	int num1 = 0;
	int num2 = 0;
	int sum = 0;

	printf("输入两个操作数:>");
	scanf("%d %d",&num1,&num2);

	sum = num1 + num2;//求两数之和
	printf("sum = %d", sum);//输出和

	return 0;
}

        既然C语言中可以自定义函数,那么我们也可以自定义一个加法函数。上述代码写成函数如下:

#include <stdio.h>

//自定义函数
//int Add代表return返回值类型为整型,即函数类型为整型
int Add(int x, int y)
{
	int z = x + y;//计算x + y的值
	return z;//将z的结果返回z
}

int main()
{
	int num1 = 0;
	int num2 = 0;
	int sum = 0;

	printf("输入两个操作数:>");
	scanf("%d %d", &num1, &num2);

	sum = Add(num1, num2);//调用Add函数

	printf("sum = %d", sum);
	
	return 0;
}

         函数的特点就是简化代码,代码复用。有读者一定会在这里产生疑问,感觉创建函数后反而比原先直接两数相加求和麻烦了许多,以前实现两数相加只需要几行代码,定义函数反而感觉更复杂了。

        在简单函数中,定义函数确实会显得比较复杂、看起来比较臃肿,但在日后的学习中我们写的代码会越来越长,遇到多次出现的函数,我们不妨自定义一个函数,在使用时调用即可。具体的函数使用,在之后的学习中还会讲到。

9.数组

        实际问题中存在许多相同类型的数据,如编写程序求全班50名同学某门课的平均成绩,如果对每个同学定义一个课程成绩变量,需要定义50个变量,程序繁琐且不方便处理。所以,把具有相同类型的若干数据按有序的形式组织起来,这些按顺序排列的同类数据元素的集合称为数组。如果使用数组处理50名学生的成绩,程序代码就会变得比较简洁。在C语言中,数据属于构造数据类型。一个数组可以包含多个数组元素,这些数组元素可以是基本数据类型,也可以是构造类型。

        数组中有一维数组、二维数组。在这里我们只带大家认识一下一维数组。 

        数组是一组有序数据的集合,只有一个下标的数组称为一维数组。50个学生的成绩可以采用一个一维数组表示,数组的大小是50,这样可以使代码简单。

9.1 数组的定义  

        数组必须先定义后使用。一维数组的定义格式如下:

        类型说明符 数组名 [常量表达式];

        类型说明符用来定义数组中元素的数据类型,数组名必须符合标识符的命名规定,常量表达式用来定义数组中元素的个数。常量表达式只能是字符型常量或符号常量,不能是变量,C语言中不允许动态定义数组的大小。

        那么在C语言中要存储1-10的数字,应怎样存储?

int arr[10] = {1,2,3,4,5,6,7,8,9,10};//定义一个整型数组,最多存放10个元素

9.2 数组的下标

        C语言规定,数组的每一个元素都有一个下标,下标是从0开始的。

        数组定义后,系统在内存中给数组分配一块连续的存储空间,存储空间的大小取决于数组的数据类型和数组元素的个数,数组名表示数组在内存中的首地址。

        例如:int arr[4] = {1,2,3,4};

        数组a包含4个元素,每个元素都是int型且在内存中占4字节的存储空间,因此系统给数组a共分配16字节的存储空间。数组中包括4个元素,分别是arr[0]、arr[1]、arr[2]、arr[3]。

        C语言中可以通过下标来访问数组。比如:

int arr[4] = {1,2,3,4};
//如果数组4个元素,下标的范围是0-3
             int arr[4]        1        2       3       4
                下标        0        1       2       3

        在定义了数组后,数组中每个元素就相当于一个普通变量,就可以利用下标来引用每个元素,格式为:数组名[下标],即arr[0]、arr[1]、arr[2]、arr[3]代表数组arr中的4个元素。

        数组元素在引用时,要注意以下问题:

        (1)下标表达式的值必须是一个整型的量,可以是整型常量、整型变量或运算结果为整型的表达式。

        (2)只能单个使用数组中的元素,而不能引用整个数组。

        (3)C语言的数组下标是从0开始的,因此数组的下标范围为0~L-1,其中L为数组的长度。C语言中不i对数组进行越界检查。数组arr中包含了4个元素,若有语句arr[10] = 2;,在编译过程中也许不会出错,但可能导致其他变量或程序出错。

9.3 数组的使用

        下面拿代码演示一下,数组应如何使用。

#include <stdio.h>

int main()
{
	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };//定义数组

	//利用for循环打印数组
	for (int i = 0; i < 10; i++)
	{
		printf("%d ", arr[i]);//打印当前循环内数组元素
	}

	printf("\n");//换行

	return 0;
}

        打印结果如下

10.操作符

        这里我们以介绍为主,后面会不断穿插着讲。

10.1 算术操作符

+         -        *(乘)        /(除)        %(求余)

         C语言中的加减乘与数学中达到的效果相同,但 /(除)是略有不同的。在C语言中,4 / 3等于多少?

        在数学中,4 / 3 = 1.3333~,但若在C语言中使用int整型来计算4 / 3的值,其实是等于1的,只会求商,不会求余。在C语言中有一种全新的运算符 %(求余),4 % 3 = 1,这就是它的运算规则。

10.2 移位操作符

>>        <<

10.3 位操作符

&        ^         | 

10.4 赋值操作符

=       +=       -=       *=       /=       &=       ^=       |=        >>=       <<= 

10.5 单目操作符

!       -       +       &       sizeof       ~       --       ++       *       (类型) 

" ! ":逻辑反操作。在C语言中,要想实现"不",就得利用它,"!=" 就代表不等于。

" - ":负值

" + ":正值

" & ":取地址(在指针部分我们会再介绍)

" sizeof ":操作符的类型长度(以字节为单位)

" ~ ":对一个数的二进制位按位取反

" -- ":前置、后置--

" ++ ":前置、后置++

" * ":间接访问操作符(解引用操作符)

"(类型)":强制类型转换

        下面我们重点介绍一下前置、后置++,前置、后置--,用法一致。

        前置++是先自加,后使用;后置++是先使用,后自加。这里的自加也就是对变量的值增加,++等同于该变量值+1,使用则是指直接使用该变量。

        接下来,我们再利用一段代码加强理解。

#include <stdio.h>

int main()
{
	int i = 5;
	int j = 5;

	printf("i的值为%d\n", i++);//输出5
	//i++为后置++,先使用,后自加。在输出i++时,i先使用,即i的值为5,然后i再加1,值为6
	
	printf("j的值为%d\n", ++j);//输出6
	//j++为前置++,先自加,后使用。j加1后,值为6,所以输出为6.

	printf("i++后的值为%d\n", i);//输出6
	//再一次打印i的值。i++后,i的值为6.

	return 0;
}

        我们再看一下运行结果。

10.6 关系操作符

>        >=        <        <=        !=        ==

        关系操作符用来判断两个量的大小关系,!=用于测试“不相等”,==用于测试“相等” 

        注意在C语言中,'='是赋值,'=='是判断关系

10.7 逻辑操作符

&&(逻辑与)        ||(逻辑或)

        在C语言中,逻辑与、逻辑或和数学中的并和或,用法较为相似,在C语言中零为假,非零为真。

        &&(逻辑与)判断两表达式,有一假即为假,两真才为真。

        ||(逻辑或)判断两表达式,有一真即为真,两假才为假。

10.8 条件操作符

exp ? exp2 : exp3

        条件操作符是C语言中唯一的三元操作符,它允许将简单的if-else判断语句嵌入表达式中。条件操作符的语法格式为:表达式1? 表达式2: 表达式3。

        表达式1是一个条件判断表达式,条件操作符首先计算的是表达式1的值,如果表达式1的值为非0,则计算表达式2,如果表达式1的值为0,则跳过表达式2,直接计算表达式3,所以无论如何,表达式1的值是一定会计算的,表达式2和表达式3不管怎样,也只有一个表达式被计算。

        我们可以使用条件操作符让代码更加简单,以下,我们拿两数取最大值来举例:

         这是拿if语句来做到求两数最大值,接下来我们再使用一下条件操作符。

        可以看到原本要写三四行的代码才能实现的功能,一个条件操作符就搞定了,希望读者们以后能灵活运用。 

10.9 逗号表达式

exp1,exp2,exp3,... ,expN

10.10 下标引用、函数调用和结构成员

[ ]        ( )        .        ->         

   可以看到,有一些操作符,我们都没有细细讨论,之后我们遇到什么,我们再去深入了解他们。


结言

        本文拖了整整一周才写出来,给等待更新的读者们说声抱歉,上学期间,我在抽时间为读者为你们编写一份合格的C语言资料,秉着一个认真编写的心,不想一两天把他草草了事,希望所写内容能带给你们些许收获,拖更许久,抱歉!

        感谢你们的耐心阅读,博主本人为一名大一新生,也还有需要很多学习的东西。写这篇文章是以本人所学内容为基础,日后也会不断更新自己的学习记录,我们一起努力进步,变得优秀,小小菜鸟,也能有大大梦想,关注我,我们一起学习。

      《C语言小白入门》这一系列,我会分为三篇,这里是第二篇,我们下期再见。  

         系列第一篇文章在这里 --->【C语言快速上手】带你了解C语言,零基础入门①       

更多推荐

【C语言快速上手】带你了解C语言,零基础入门②