【C语言航路】第一站:初识C语言(三)

目录

五、注释

1.注释的好处

2.注释风格

六、选择语句

七、循环语句

八、函数

1.函数的引入

2.函数如何写

九、数组

1.数组的定义

2.数组的下标

3.数组的使用

 十、操作符

1.算数操作符

(1)/ 和 %的基本使用

 (2)几个经典的错误,标准的零分

2.移位操作符

3.位操作符

4.赋值操作符

5.单目操作符

(1) !  操作符

 (2)+  -

 (3)&,*,~

 (4)sizeof

 (5)++ --

一个经典的错误标准的零分

(6)(类型)

6.关系操作符

一个经典的错误,标准的零分

7.逻辑操作符

一个经典的错误标准的零分

8.条件操作符

9.逗号表达式

10下标引用,函数调用,结构成员

(1)[]

(2)()

(3). ->

总结


五、注释

1.注释的好处

1.代码中有不需要的代码可以进行直接删除,也可以注释掉

2.代码中有些代码比较难懂,可以加一下注释

2.注释风格

注释有两种注释风格

一种是c语言注释风格   /*xxxxx*/

缺陷:不能嵌套注释

另一种是c++注释风格  //xxxxx

可以注释一行也可以注释多行

六、选择语句

        人生处处面临选择,c语言中也一样拥有选择语句,可以通过一些选择来达成一些需求。选择语句在此处仅仅简单介绍一下if else选择语句的基本应用,后续文章将专门详细介绍。

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	int input = 0;
	printf("请问你是否要坚持好好学习吗?(1/0)");
	scanf("%d", &input);
	if (input == 1)
	{
		printf("好offer\n");
	}
	else if (input == 0)
	{
		printf("回家卖红薯");
	}
	else 
	{
		printf("选错了");
	}
	return 0;
}

    这就是一个最简单的选择语句了,其中if后面的括号是判断是否成立的,如果成立则执行大括号里面的语句,如果不成立就依次往下判断,知道判断完毕。

七、循环语句

c语言中常用的循环语句一共有三种

while循环

do while循环

for循环

这三种循环我们暂时只浅浅的了解一下while循环,在后续的文章中,我将详细介绍这三种循环

int main()
{
	int line = 0;

	while (line <= 20000)
	{
		printf("敲代码: %d\n", line);
		line++;
	}
	if (line > 20000)
		printf("好offer\n");
	else
		printf("好好学习,天天编程\n");

	return 0;
}

这是一个最简单的while循环语句,进入循环语句以后,先判断line是否小于20000,如果小于,这执行完大括号的语句后重新判断一次条件,就这样一直重复下去,直到打破循环。

八、函数

1.函数的引入

我们首先看一段代码

#include<stdio.h>
int main()
{
	int a = 0;
	int b = 0;
	scanf("%d %d", &a, &b);
	int c = a + b;
	printf("%d", c);
	return 0;
}

这段代码相信很容易理解吧,就是算出输入两个数的和,那么我们思考一下,如果一个超大的工程里面,需要重复性的用到某一段极其复杂的算法很多次,那么我们怎么办呢?,就这样一直写下去吗。那太烦了,而且万一出错了,很难寻找到这些错误。那我们不得不引入一个概念——函数。

函数这个相信大家很不陌生了,尤其是在大学学习高数时候,各种函数极限,函数微分,求导,积分各种运算。在c语言中同样也有函数,那么c语言的函数跟高数的函数有区别吗。其实有但不是很大,因为我们些代码几乎不需要对函数求导,积分运算的,我们c语言中所接触到的函数仅仅只是在多元函数上的一个应用。

我们在数学中函数是这样的y=f(x),通俗的来说对于任意一个x,总有唯一确定的y与之对应。这句话在我们c语言中是如何应用的呢?

这里给一个代码

int f(int x, int y) {
	return (a + b);
}
#include<stdio.h>
int main()
{
	int a = 0;
	int b = 0;
	scanf("%d %d", &a, &b);
	int c = f(a, b);
	printf("%d", c);
	return 0;
}

这段代码中,我们输入了a与b两个整数,然后我们使用一个二元函数f(x,y),将他带入参数a,b,便可很快的算出最终的答案了。而且即便是以后需要多次使用这个函数,也是直接调用即可。

2.函数如何写

其实我们可以继续看上面的代码。

数学中函数由四部分组成,是定义域,值域,对应法则。在c语言中函数由四部分组成,函数名,参数,返回类型,函数的主体。这两者之前由异曲同工之妙,读者可以自行体会

其中函数名由自己决定,参数以及参数的类型由所输入的数据决定,主体就是具体的功能,下面的代码,就是一个典型的加法函数。

#include <stdio.h>
int Add(int x, int y)
{
	int z = x + y;
	return z;
}
int main()
{
	int num1 = 0;
	int num2 = 0;
	int sum = 0;
	printf("输入两个操作数:>");
	scanf("%d %d", &num1, &num2);
	sum = Add(num1, num2);
	printf("sum = %d\n", sum);
	return 0;
}

好了,本章函数就暂时讲这么多,其实函数还有很多知识还没有讲到,但我们本节仅仅只是入个门,后面我们会更加详细的介绍函数的应用。

九、数组

1.数组的定义

数组的定义:一组相同类型元素的集合。

int arr[10] = {1,2,3,4,5,6,7,8,9,10};//定义一个整形数组,最多放10个元素
int arr[10] = { 1,2,3,4,5 };//不完全初始化,剩余默认为0
char arr[5] = { 'a','b','c' };//不完全初始化,剩余默认为\0

2.数组的下标

数组的下标与从0开始的,这一点与中学的数列很像,数列的首元素一般也是a0开始的

int a[10]12345678910
下标0123456789

这就是数组的下标了

3.数组的使用

这里先简单介绍一下数组的使用,后续章节更深入的探究

#include<stdio.h>
int main()
{
	int arr1[10] = { 1,2,3,4,5,6,7,8,9,10 };
	int i = 0;
	while (i < 10)
	{
		printf("%d ", arr1[i]);
		i = i + 1;
	}

	return 0;
}

输出结果为

 十、操作符

这里仅仅简单介绍一下,不会太过于深入,后面将详细讲解

1.算数操作符

+    -     *      /     %

算数操作符一共有这五种,加减乘都很简单,这里主要讲解一下/ 和%这两种

(1)/ 和 %的基本使用

/ 代表的是两个数相除后的商,也就是整数部分

%代表的是两个数相除后的模,也就是余数部分

#include<stdio.h>
int main()
{
	int a = 5 / 4;
	int b = 5 % 4;
	printf("%d %d", a, b);
	return 0;
}

输出结果为

 (2)几个经典的错误,标准的零分

①对/理解不到位

如何输出结果是一个正常的小数呢?

#include<stdio.h>
int main()
{
	float a = 5 / 4;
	int b = 5 % 4;
	printf("%f %d", a, b);
	return 0;
}

这段代码运行以后

是这种结果,说明想要输出一段小数问题出在右边

正确的做法是

 这样就成功了

这里总结一下/的处理小数中的问题

1.除号两端如果都是整数,则执行的是整数除法

2.除号两段至少有一个是浮点数,才能执行浮点数的除法

%d - 十进制的整型

%c - 字符

%s - 字符串

%f - 打印float类型的浮点数

%lf - 打印double类型的浮点数

②对%理解不到位

#include<stdio.h>
int main()
{
	float a = 5.0 / 4.0;
	int b = 5.0 % 4.0;
	printf("%f %d", a, b);
	return 0;
}

这段代码运行后会发生什么呢?答案是报错了。为什么报错?因为%运算不能对浮点数使用

 % 取模(取余),%操作的两个操作数必须都是整数

2.移位操作符

>>      <<

与二进制有关,暂时不讲

3.位操作符

&   ^    |

与二进制有关,暂时不讲

4.赋值操作符

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

#include<stdio.h>
int main()
{
	int a = 0;//初始化,创建变量的同时给一个值,这叫初始化
	a = 20;//赋值

	a = a + 5;
	a += 5;//与前一行等价

	a = a * 10;
	a *= 10;//与前一行等价

	return 0;
}

a+=5与a=a+5是等价的,同理可以推出很多的等价式

5.单目操作符

!              逻辑反操作
-              负值
+             正值
&             取地址
sizeof     操作数的类型长度(以字节为单位)
~             对一个数的二进制按位取反
--             前置、后置--
++           前置、后置++
*              间接访问操作符(解引用操作符)
(类型)     强制类型转换

这就是所有的单目操作符

(1) !  操作符

!主要是取反的作用

这里首先讲解一个小知识点

c语言中,0是假,非零就是真

int main()
{
	int flag = 5;

	//如果flag为真,就打印hehe
	if (flag)
	{
		printf("hehe\n");
	}
	if (!flag)
	{
		printf("haha\n");
	}
	return 0;
}

这段代码的运行结果为

 (2)+  -

关于这两个操作符,-有一个作用就是取相反数,+基本上就是一种可有可无的状态

 (3)&,*,~

暂时不讲

 (4)sizeof

这里着重强调两点

sizeof是操作符,用于计算变量所占内存空间的大小,单位是字节

strlen是库函数,是计算字符串的长度的,统计的是字符串中\0之前出现的字符个数

#include<stdio.h>
int main()
{
	int a = 10;
	float f = 5.5f;

	printf("%d\n", sizeof(a));
	printf("%d\n", sizeof(int));

	printf("%d\n", sizeof(f));
	printf("%d\n", sizeof(float));

	return 0;
}

对于这段程序运行结果为

 (5)++ --

int main()
{
	int a = 100;
	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,如果不是则为4

那么我们运行一下试试

 答案是4,这说明于此时的括号形如虚设。这一点要注意一下,这是一个经典的错误,标准的零分

至于--则与++类似,可以对比去学习。

(6)(类型)

这个操作意思是强制类型转换,如下面代码一样,将3.14强制类型转化为int类型,就变成了3

#include<stdio.h>
int main()
{
	int a = (int)3.14;
	printf("%d",a);
	return 0;
}

6.关系操作符

>    >=     <    <=     !=     ==

这几个都是用于判断的,如果判断为真,则返回1,否则返回0

一个经典的错误,标准的零分

#include<stdio.h>
int main()
{
	int a = 3;
	if (a = 5)
	{
		printf("hehe\n");
	}
	return 0;
}

这段代码中有一个错误,就是==和=号用错了,=是赋值,他这个意思是将5赋给a,那么这个式子结果为5,为真,打印hehe。

7.逻辑操作符

&&  ||

这两个操作符的区别就是

a&&b,两边同时为真,结果为真

a||b,两边同时为假,结果为假

一个经典的错误标准的零分

#include<stdio.h>
int main() {
	int age = 20;
	if (18 < age < 60) {
		printf("成年");
	}
}

这段代码中,if语句的圆括号内,age先大于18,返回1,然后1小于60,满足,输出成年,答案正确,但是逻辑完全不符合我们的预期,一旦换一个值就会出现错误,比如age=17时,17<18,不满足结果,输出为0,0小于60,输出为1,最终打印成年。这下错误就暴露出来了

那么该如何解决呢,应该这样写

#include<stdio.h>
int main() {
	int age = 20;
	if (age>18&&age<60) {
		printf("成年");
	}
}

这样就是一个正确的代码了。

8.条件操作符

exp1 ? exp2 :exp3

这个操作符的意思是如果exp1为真,则输出exp2,否则输出exp3

9.逗号表达式

exp1,exp2,……,expn;

暂时不讲

10下标引用,函数调用,结构成员

[]  ()  .  ->

(1)[]

这是数组下标引用操作符,先看一段代码

int main()
{
	int arr[10] = {1,2,3,4,5,6,7,8,9,0};
	printf("%d\n", arr[4]);//[]下标引用操作符

	return 0;
}

这就是下标引用操作符的用法

(2)()

这是函数调用操作符,我们先看一段代码

int main()
{
	int num1 = 0;
	int num2 = 0;
	int sum = 0;
	//输入
	scanf("%d %d", &num1, &num2);
	//求和
	sum = Add(num1, num2);//()函数调用操作符

	//输出
	printf("%d\n", sum);

	return 0;
}

这就是函数调用操作符的基本用法了

(3). ->

结构体成员操作符,暂时不讲


总结

本节主要讲述了,注释,选择,循环,函数,数组,以及操作符的简单基本使用,暂时只需了解最基本的概念即可。希望能对读者有很大的帮助。不要忘记留下你免费的赞赞和关注哦。

本站未完,欲知后事,请看下节

  • 21
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青色_忘川

你的鼓励是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值