上篇我们讲解了变量、常量、字符串、转义字符、注释。那么我们继续来学习C语言的一些基本知识,同样,知识也是点到为止,不会很深入,后面我会发布更深层次的知识。(注:本篇的内容稍稍有点多,大家可以分批学习)

1.选择语句

在C语言中有时有多种分支,我们就需要用到选择语句

在C语言中有两种常见的选择语句:if语句、switch语句,本篇先来学习if语句

1.1if语句:

  • 语法结构

if(//表达式1)
{//语句1;
}
else if(//表达式2)
{//语句2;
}
else//语句3;

我们这里要注意,如果if、else if、else后面有多条语句就得加上{},如果只有一条语句可以不用加{},另外else if可以使用多次用来进行多个选择

我们来写一串代码来实现选择语句:

#include<stdio.h>
int main()
{int input = 0;//进行选择 printf("你要学好C语言吗?(1 or 0)\n");//输入    scanf("%d", &input); //选择语句                   if (input == 1)     //要注意这里使用的是==,意思是如果input等于1则执行下面的语句{//输出printf("你可以得到好offer\n");}else                //这里是input不等于1的情况,则执行下面的语句{//输出printf("另寻出路吧!\n");}return 0;
}

1.2注意事项:

  • if语句里面的表达式如果要判断相不相等一定要使用==

  • 如果if、else后面有多条语句得加上{}

  • 如果要判断多个条件可以使用多次else if

2.循环语句

循环很好理解,就比如我们日复一日的学习,老师日复一日的讲课...等等

那在C语言中怎么样实现循环呢?

在C语言中的循环语句有while循环;for循环,do while循环

本篇我们先来介绍while循环

2.1while循环:

  • 语法结构

while(//表达式)
{//循环语句;
}

我们用代码来表示一下:

比如:跟着我学C语言,每天都要敲代码,当你敲了20000行有效代码时,你将会有一个好的offer

#include<stdio.h>
int main()
{printf("跟着我学习C语言\n");int line = 0;//设置循环:当line小于20000时进入这个循环while (line < 20000)        {printf("敲代码:%d\n",line);line++;    //这里的意思表示line每次进来之后都会+1}if (line >= 20000)  //当line大于等于20000之后跳出上面的循环进入这个选择语句中printf("你将会得到一个好offer\n");return 0;
}

3.函数

函数能够使用一个独立的功能

我们在初识C语言(2)里面在讲注释的时候使用了一串代码就是使用函数来求两个数的和

  • 不用函数来写两个数的求和:

#include<stdio.h>
int main()
{int a = 0;int b = 0;int sum = 0;//输入printf("请输入两个整数\n");scanf("%d %d", &a, &b);//计算sum = a + b;//输出printf("sum=%d\n", sum);return 0;
}

当我们在一个工程里写很多加法运算的时候,如果每次使用这种写法会很麻烦,这时候就要使用函数

  • 用函数写两个数的求和:

#include<stdio.h>
//这里设置这个用来求和的函数Add
int Add(int x, int y)         //由于输入的是整形,所以函数类型也应该为整形
{                            //在函数里面设置两个整形x,y来接收a,bint z = x + y;           //这里用z来表示两个数的和return z;                //这里返回值是z,是因为当我们计算出a,b的和将它存放在z里面,将它返回
}                            //我们的sum,从而打印输出
int main()
{int a = 0;int b = 0;int sum = 0;printf("请输入两个整数\n");//输入scanf("%d %d", &a, &b);//求和sum = Add(a, b);    //这里使用一个函数Add,将输入的a,b放进函数Add中                                                  //然后设置一个sum变量来存放计算出的值//输出printf("sum=%d\n", sum);return 0;
}

函数的特点就是简化代码,代码复用

说到这里还有老铁不理解的话我们来画一个图来展示一下:

函数的功能就好比一个工厂,我们只需要把原材料给工厂,然后通过工厂的加工来得到我们需要的东西

由上面的函数求和的例子来说明函数的一些基本组成

4.数组

要存储1~10的数字,该怎么储存呢?

数组从简单方面理解就是一堆数字组合起来,但是C语言中有明确定义

4.1数组的定义:

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

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

4.2数组的下标:

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

int arr[10] = {1,2,3,4,5,6,7,8,9,10};//下标 0 1  2  3 4 5 6  7 8  9
//假设n是元素个数,那么它的下标的范围是0~n-1
  • 使用下标的方式访问元素

arr [//下标];

假设一个数组里面有10个元素,我们需要找到下标为5的元素

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

我们可以很直观的看到,我们打印下标为5的元素就可以得到6

4.3数组的使用:

当我们给定了一组数组,我们需要把这组数全部打印出来,我们需要如何做呢?

按照我们以前的方法,我们可以使用查找下标的方法依次将他们打印,但是非常麻烦

但是我们可以使用我们前面学过的while循环,我们可以先找元素下标为0的元素,然后依次下标+1,从而循环打印出整个数组

#include<stdio.h>
int main()
{int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };int i = 0;              //这里设置一个循环变量while (i < 10)          //while循环开始:当i<10时,循环开始{printf("%d ", arr[i]);    //在这里刚刚进来的i是0,所以打印的下标为0的元素i++;                      //在这里i+1,每次进来都会加1,直到加到10//则不满足whiel循环的条件则会跳出循环} return 0;
}

5.操作符

关于操作符在初识C语言里只是简单介绍,后面的文章会详细介绍

5.1算数操作符:

+

-

*

/

%

//a+b         a-b          a*b          a/b          a%b

关于算数操作符,有几点要注意:

%:这个是取模(取余)

当使用A%B时要注意,%两边都得是整数

//5%2=1            

当使用A/B时要注意,如果两边都为整数,则计算出的结果是整数,如果两边有一个是小数,则计算出的结果是小数

//5/2 = 2
//5.0/2 = 2.5
//5.0/2.0 = 2.5

5.2移位操作符(移动的是二进制位):

>>

<<

后面会发布文章介绍

5.3位操作符(操作的是二进制位):

&

^

|

后面会发布文章介绍

5.4赋值操作符:

=

+=

-=

/=

*=

&=

|=

<<=

>>=

这里我们只讲前面五个

= :这里是赋值的意思,就比如a=5,是把5赋值给a

+= :a += 5 这里的意思是给a加上5再赋值给a,比如原本a = 0,那么a+ =5之后a=5

-= 、*=、/=都是同样的道理

5.5单目操作符:

  • 单目指的就是操作符两边只有一个操作数

逻辑反操作

-

负值

+

正值

&

取地址

sizeof

操作数的类型长度(以字节位单位)

~

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

--

分为前置、后置

++

分为前置、后置

*

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

(类型)

强制转换类型

在C语言中0表示假,非0表示真

在这里我们讲一下sizeof和--、++

5.5.1sizeof:

sizeof:可以用来计算变量、类型所占空间的大小(以字节为单位)

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

计算出的结果都是4个字节

了解到这里我们可以计算出一个字符串里面有多少个字符

#include<stdio.h>int main()
{int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };printf("%d\n", sizeof(arr));             //计算的是整个字符串的总的大小  40个字节printf("%d\n", sizeof(arr[0]));          //计算的是一个字符的大小int sz = sizeof(arr) / sizeof(arr[0]);   //计算出这个字符串里面有多少个字符printf("%d\n", sz);return 0;
}

我们再来了解一个前面提到过的知识:strlen

strlen是一个计算字符串长度的函数,使用时要包含头文件#include<string.h>

#include<stdio.h>
#include<string.h>
int main()
{char arr[] = "abcdef";printf("%d\n", strlen(arr)); //?printf("%d\n", sizeof(arr)); //?return 0;
}

那这里打印出来为什么是6、7呢?

是因为:

sizeof计算的是所占内存空间的大小,不在乎内存里面放的是什么,单位是字节

strlen统计的是\0之前的字符的个数,所以不包含\0

在这个字符串里面有abcdef\0这7个字符,所以用strlen来统计时是6,不统计\0,而用sizeof来计算时,它不管这个字符串里面放的是什么,统统都计算,所以计算出来的大小是7.

5.5.2++、--:

++、--可以分为两类:前置和后置

先来了解后置++:

后置++的意思就是先使用,后++

#include<stdio.h>
int main()
{int a = 2;            //这里简单解读一下int c = 0;            c = a++;               //c=a;a=a++;printf("c=%d a=%d\n", c, a);return 0;
}

这里的a++类似于我们前面见到过的line++,就是在a的基础上+1再赋值给a,这里的后置++就是先把a的值使用赋值给c,然后a再++赋值给a,所以c=2,a=3.

前置++:先++,再使用

#include<stdio.h>
int main()
{int a = 2;int c = 0;c = ++a;           //c=a++,a=a++printf("c=%d a=%d\n", c, a);return 0;
}

前置++,先++,再使用,意思就是:先给a++,然后使用赋值给c,所以c=3,a=3.

前置++和前置--意思一致,后置++和后置--意思也一致。

5.6关系操作符:

>

用于测试“大于”

>=

用于测试“大于等于”

<

用于测试“小于”

<=

用于测试“小于等于”

==

用于测试“相等”

!=

用于测试“不相等”

注:要注意区分“==”和“=”,前者是相等,后者是赋值

5.7逻辑操作符:

&&

逻辑与(并且)

||

逻辑或(或者)

我们定义0~18岁为未成年,18~28岁为青年,28~45岁为中年,45岁以上为老年

我们可以用代码来表示一下:

#include<stdio.h>
int main()
{int age = 0;scanf("%d", &age);if (age >= 0 && age <= 18)         //逻辑与操作符:两边的条件同时满足才可以执行{printf("未成年\n");}else if (age > 18 && age <= 28)printf("青年\n");else if (age > 28 && age <= 45)printf("中年\n");elseprintf("老年\n");return 0;
}

逻辑与操作符类似于并且,A并且B

#include<stdio.h>
int main()
{int num = 0;scanf("%d", &num);if (num == 5 || num == 10)   //逻辑或操作符:只要满足两边任何一个条件便可以执行printf("hehe\n");elseprintf("haha\n");return 0;
}

逻辑或操作符类似于或者,A或者B

5.8条件操作符:

exp1 ? exp2: exp3

简单介绍这个操作符的意思:exp1成立吗?,如果成立,则执行exp2,如果不成立,则执行exp3

这个也叫三目操作符

使用三目操作符来比较两个数的大小:

#include<stdio.h>
int main()
{int a = 0;int b = 0;scanf("%d %d", &a, &b);           //在输入的时候两个数中间要有空格printf("MAX= %d", a > b ? a : b); //如果a>b成立,则执行a,如果不成立,则执行breturn 0;
}

5.9逗号表达式:

exp1, exp2, exp3, ..... expn

逗号表达式会从左向右依次计算,整个表达式的结果是最后一个表达式的结果

代码演示:

#include<stdio.h>
int main()
{int a = 3;int b = 5;int c = 0;int d = (a += 3, b -= a, c - 2);printf("%d\n", d);return 0;
}

我们来分析一下这个代码:a+=3的意思是给a+3再赋值给a,所以a=3+3=6。b-=a的意思是给b-a再赋值给b,所以b=5-6=-1。c-2=-2,所以打印出的结果就是-2。

因为逗号表达式最后打印的是最后一个表达式的结果,那么我们是不是不用管前面的表达式,直接去计算最后一个表达式呢?

可不敢这样去想,如果前面有一个表达式改变了最后一个表达式的值,那么还这样计算就出现bug,我们来看一个代码:

#include<stdio.h>
int main()
{int a = 3;int b = 5;int c = 0;int d = (a += 3, b -= a, c = a + b, c - 2);printf("%d\n", d);return 0;
}

如果我们只计算最后一个表达式的结果:c-2的出的结果是-2,那可就错了,因为前面有一个表达式改变了c的值,所以可不敢贸然去计算,如果从左向右依次计算:a+=3,所以a=6。b-=a,所以b=-1。c=a+b,所以c=5。c-2,所以最终结果c=3,这样就对了。

5.10下标引用、函数调用、结构成员操作符:

[ ]

( )

.

->

我们这里只讲前两个

5.10.1下标引用操作符:

下标引用操作符在前面的数组的下标中提到过,我们在使用元素下标可以找到该元素时就采用的"[ ]"

#include<stdio.h>
int main()
{char arr[10] = { 1,2,3,4,5,6,7,8 };//不完全初始化:设置的字符串里面一共有10个元素//但是我只写了8个元素,剩下的元素默认初始化都是0printf("%d", arr[5]);            //下标引用,找下标为5的元素return 0;
}

5.10.2函数调用操作符:

在使用函数时需要用到"( )"

#include<string.h>   //包含头文件可不敢忘记
#include<stdio.h>
int main()
{int len = 0;len = strlen("abcd");printf("%d\n", len);return 0;
}

可以看到我们在使用strlen函数求这个字符串的长度时使用了“()”,在使用其他函数时也是同样的道理。

本篇的分享到此为止,大家可以慢慢学习,最后感谢大家阅览,如果有什么不足和疑问可以私信我或者打在评论区,感谢大家!

初识C语言:从0开始,由菜鸟变大牛(3)相关推荐

  1. 初识C语言:从0开始,由菜鸟变大牛 (完结)

    上篇内容分享了两种语句(选择语句.循环语句).函数.数组.各种操作符,本篇文章我们再来了解关于初识C语言的内容,同样,涉及到的知识不会太复杂,废话不多说,正文开始: 1.常见关键字 auto brea ...

  2. 初识C语言:从0开始,由菜鸟变大牛(1)

    初识C语言: 本篇是对C语言的初步认识,都是基础知识,内容不会过于深奥,通俗易懂,具体的细节知识会在后面发布. 学好编程,不仅仅是学好C语言,还要学好 计算机语言.算法数据结构.操作系统,计算机网络. ...

  3. 初识C语言:从0开始,由菜鸟变大牛(2)

    前面我们讲了什么是C语言.第一个C语言程序.数据类型,接下来我们再来学习一点新的东西,同样,知识也是点到为止,对C语言有一个初步的了解. 变量.常量 在我们日常生活中,通常有一些值是不变的(类如:圆周 ...

  4. python语言实战-Python实战-从菜鸟到大牛的进阶之路 pdf完整版

    Python是一种解释型.面向对象.动态数据类型的高级程序设计语言,现在它已经成为最受欢迎的程序设计语言之一.本专题收录了Python编程实战教程,分享给大家. 适用人群:Python 进阶学习者.W ...

  5. 学习编程有疑问?七个网站助你菜鸟变大牛

    很多同学在学习编程时候会遇到各种各样的问题,这些问题需要自己去想办法解决,那么这些网站平台将会给你很大的帮助. 1.W3school 这是一个免费学习编程语言的在线学习网站,里面的知识浅显易懂,非常适 ...

  6. 0基础玩转C语言—初识C语言(上)

    初始C语言(上) 一.开门见山 1.1.第一个C语言程序 1.2.程序解剖 二.数据类型 2.1.为什么引入数据类型? 2.2.C语言中有哪些基本数据类型? 2.3.每种类型的大小是多少? 2.4.数 ...

  7. asp.net2.0学习历程 菜鸟到中级程序员的飞跃【月儿原创】

    asp.net2.0学习历程 菜鸟到中级程序员的飞跃 --30本好书点评 作者:清清月儿 主页:http://blog.csdn.net/21aspnet/           时间:2007.5.1 ...

  8. 初识C语言---(4)

    目录 指针初识 结构体 指针初识 学习指针知识,我们得首先了解内存方面的知识: 内存: 内存是电脑上特别重要的存储器,计算机中程序的运行都是在内存中进行的 . 所以为了有效的使用内存,就把内存划分成一 ...

  9. 初识C语言---(2)

    字符串+转义字符+注释 "hello world.\n" 这种由双引号引起来的一串字符称为字符串字面值,或者简称字符串. 重点:字符串的结束标志是一个 \0 的转义字符.在计算字符 ...

最新文章

  1. 北漂周记--第8记--项目测试
  2. 可能是全网把 ZooKeeper 概念讲的最清楚的一篇文章
  3. select选择框变得可以输入、编辑
  4. VTK:隐藏线移除用法实战
  5. jemter在linux上怎么安装_【JMeter之一】在linux系统下安装jmeter
  6. 枚举算法:求解不等式
  7. Play项目的application.conf的配置
  8. 洛谷P3649 [APIO2014]回文串(回文自动机)
  9. 21天学通python-21天学通Python(第2版)_PDF电子书
  10. Pycocotools 报error: Microsoft Visual C++ 14.0 or greater is required. Get it with “Microsoft C++ Bui
  11. 零基础入门数据挖掘,看完这份详细的学习指南就够了!(附资料)
  12. 数值分析-数值分析下的误差分析
  13. 春晚宫女唐奕霖被爆背景深厚 可携助手出入央视排练场享有特权
  14. 强网杯2018_core
  15. 用Random类做猜数字游戏
  16. 推荐几款图形转代码的工具
  17. 飞鸽传书——CRM短信平台
  18. Vue3获取地址栏参数
  19. Spring Boot 中三种跨域场景总结
  20. Magic Mouse2 断开连接的解决方法

热门文章

  1. HttpClient4 - 设置请求头
  2. 论文翻译:The basic physics of the binary black hole merger GW150914(引力波发现的那双黑洞的基本物理性质,2016.10.4发表)
  3. ROS基本操作指令大全
  4. 记录一个关于universal reference, 我犯下的滔天大错。
  5. Unity ShaderLab特效教程 适用于贴图、sprite和ugui的2d着色器实例 代码+详解注释 【锐化效果】
  6. [Hades_技术]哈迪斯初级技术应用
  7. OpenApi合并实践
  8. 【ERROR】angular版本问题compiler_cli_1.readConfiguration is not a function
  9. 职称计算机培训教学设计,st-cpl-s2004005教案操作系统
  10. 大锅菜机器人_炒菜机器人亮相长大食堂,可做百余种菜品