对话问答陪你走进程序的大门,以后我们就是同路人

初次识得C语言,以后就是同路人

大家好啊,我是四年过后,是一名双非本科的大二学生

这个春暖花开的季节,让我们相约,一同进步一同成长

编程学习的道路,我要稳扎稳打,为自己树立目标和确定前进的方向

我会不断地对学过的知识进行自我复述,多练习题目,会多多拜读编程类的书籍

每周至少学习40个小时,及时进行对所学内容的总结

学习的历程:C语言->初阶数据结构->C/java->高阶数据结构->linux->计算机网络->Mysql

C语言总体概述

灵魂系列三连问

什么是C语言?-----what

C语言是一门编程语言,是我们与计算机交流的一种手段

C语言是底层开发工具,因为在语法问题每个国家上各执己见,其标准是由(美国国家标准协会(ANSI))制定的ANSI C标准其发展历程经过C89 C90 C99 C11 … 现在常用的标准是C89 C90的标准

像上面图上的信息一样,C语言是在底层进行开发的工具

它是一门面向过程的编程语言,常用的编译器有devc++ ,visual studio,GCC… 这里我给大家推荐一款编译器

是 visual studio 2019(VS 2019)

VS2019是如何安装的

为什么学习C语言?-----why

在大学里面,我们当中的很多人肯定首先接触到的是C 这门语言,学习C语言能够帮助我们很好地感知学习编程的思维逻辑,学了C这门语言,如果我们想要再学习其他的语言,那也是上手特别快的,C生万物这个说法我们是很熟悉的

学了C语言我们能干什么?-------how

C语言和JAVA语言不通,JAV语言能够在学习的过程中即时写出一些东西,而C语言可能学了很久,也是在黑框框里面运行一些程序,并不很快地做出实际类型的东西,但C语言的用途很广泛,包括java都是用C为底层进行实现的

因为偏注重底层开发,要研究操作系统 网络 数据库等等相关的知识

第一个C程序

学习了这个程序意味着编程之路的开启

数据类型

sizeof关键字是计算所占内存大小的

单位是字节

单位转换关系
bit8bit=1Byte
Byte1024 Byte=1KB
KB1024 KB=1 MB
MB1024 MB=1 GB
GB1024 GB= 1 TB
TB1024 TB= 1 PB
PB
数据类型名称sizeof(数据类型)
char字符类型1
short短整型2
int整型4
long int长整型4
long long int更长的整型8
float单精度浮点数4
double双精度浮点数8

这里可能有人会问到几个问题:

1、float和double都是浮点数,有什么区别呢?

答:对编程人员来说,double 和 float 的区别是double精度高,有效数字16位,float精度7位。

但double消耗内存是float的两倍,double的运算速度比float慢

2、为什么long int 和int 的sizeof大小一样?

答:标准上只是说long 至少要跟Int 一样大,但都要有一个确定的标准

   sizeof(char)  ==  1

   sizeof(char)  <=  sizeof(short)

   sizeof(short)  <=  sizeof(int)

   sizeof(int)  <=  sizeof(long)

   sizeof(long)  <=  sizeof(long long)

3、为什么有那么多类型呢?

答:我问你啊,我们世界上那么多东西,他们代表的数值大小都是一样的吗?就比如一个人的存款和一个人的年龄一样,他们的数值大小显然是不同的,当然了也有可能,不过,你要知道,我们的计算机内存有限,不可能说在创造一个程序的时候,不考虑内存的限制,比如short和int 我们在定义年龄的时候,完全可以用short类型的变量,short则有可能储存不下这些存款,所以在面对任何事物的时候,我们要选择不同的类型进行定义才能既节省空间又不容易出错。

我敢打赌后面的题目你都会:

一、牛牛学说话之-整数 这题很简单_

题解:

可以看到,引入一个头文件#include<stdio.h> 有一个主函数main ,利用库函数scanf输入一个变量 用库函数printf输出这个变量,输出整型默认用%d形式

二、牛牛学说话之-浮点数_这道题有注意的点

有几个知识点需要注意一下:printf输出的时候,输出的是.3lf ----->是因为保留几位小数的时候,需要用%.mlf的格式进行输出,m代表数字

double的输出是用%lf来进行输出和输入

三、牛牛学说话之-字符_牛客题霸_

字符类型是需要用%c来进行输入输出的

我们很快就会学到数据在内存中的存储,感兴趣的铁汁们可以去看一看

数据在内存中的存储-整型和浮点型_

变量

我们知道,生活中有些东西是不变的,身份证号码、血型等,这些都不会变化
但还有一些,是会变的,年龄体重等。

在前面我们学习到了数据类型

那我们就来讲一讲,定义变量的方法

数据类型 变量名=初始化的值----->这样一个变量就定义完成了

把变量进行分类

①局部变量

②全局变量

在这个程序中,在大括号内部的global是局部变量,在大括号外部的global是全局变量

全局变量和局部变量同名时,局部变量优先

作用域和生命周期

什么是作用域和生命周期?

作用域就是代码的可执行范围

生命周期指的是变量的创建到变量的销毁之间的一个时间段

1、局部变量的作用域:局部变量的作用域是变量所在的局部范围

局部变量的生命周期:进入作用域生命周期开始,出作用域生命周期结束

2、全局变量的作用域:整个工程

全局变量的生命周期:整个程序的生命周期

灵魂问答

作用域和生命周期有关系吗?

答:作用域可以看成约等于生命周期,就像局部变量出了可执行范围生命周期就结束,全局变量直到整个工程结束才销毁,正好是与它的生命周期相关联。

常量

常量有:

1、字面常量

​ 30 整型常量

​ 3.14浮点型常量

2、const修饰的常变量

很奇怪,常量就是常量m,变量就是变量,常变量是什么呢?

其实本质上是 具有常属性,本质是变量,不能直接修改值

3、#define定义的标识符常量

在这里插入图片描述

此时的MAX被标识为MAX=10 定义方式为#define

在下面的数组中,数组定义的时候,[]内是不能放变量的,所以也可验证此时的MAX是常量

字符串

由双引号引起来的一串字符称为字符串字面值,或者简称字符串。

字符串的结束标志是\0字符

转义字符

转义字符释义
\’用于表示字符常量‘
\\用于表示一个反斜杠,防止被解释为一个转义序列符
\n换行
\t水平制表符
\dddddd表示1-3个八进制数字
\xdddd表示2个十六进制数字

这是一道面试题:

#include<stdio.h>
int main()
{
	printf("%d\n",strlen("abc def"));

    printf("%d\n",strlen("c:\test\328\test.c"));

return 0;
}

问:分别输出什么?

我们来分析一下:

“ abcdef”有6个字母,c后面有一个空格,我们知道,字符串结束的标志是遇到\0 那空格算不算是字符呢?

ASCII表

我们能够在这张ASCII码表上找到32 这个位置,就是 空格的ASCII码值 所以空格也是一个字符。第一个printf就输出7。

image-20220402010138731

第二个printf 画圈的部分都是转义字符,你可能会有疑问,为什么\328不是\ddd类型的转义字符,八进制有8吗?还有一种解释是\328这个转义字符已经超出了范围,由ASCII码表我们知道最大才127 但是八进制的328很明显要比127大很多。所以第二个printf输出14.

注释有两种风格:

C语言是 /* */ 缺陷是不能嵌套注释

C++是 // 可以注释一行野可以注释多行

我们更习惯于用C++的方式进行注释

选择与循环

if/else

if/else语句是我们很常用的、用来判断的分支语句

就好比我们对一个人他的年龄进行判断

image-20220402103115702

我们在判断的时候,if的括号里面是判断的条件,栗子🌰中的&&符号是一个操作符,大家可以提前了解一下

【操作符看这一篇你就通透了】———操作符详解_

牛牛的计划_

image-20220402103602157

我们来分析一下这道题目:

image-20220402104612467

我们在实现代码的时候可以这样来实现

image-20220402104735679

switch

在C语言中,可以利用switch+case+break+default 完成选择,具体我们来看一个关于日期的栗子🌰

image-20220402095556812

我们来看一下这个栗子,定义了一个n之后,我们要通过输入一个数字来进行选择今天是星期几,default顾名思义是缺省情况,只有任何条件都不匹配的情况下才会执行。

循环语句

循环有for循环,while循环,do…while循环

for循环是我们最常用的一种循环,我们把循环就想象成每天都在重复做的事情

比如说写代码,假设一个程序员至少需要20000行代码才能熟练敲代码,那么,在我们没有做到这个事情之前,我们就要持续地去写代码

image-20220402100455646

我们看到,通过for循环,我们就能持续地进行写代码这件事,直到它完成

有三个要点

for循环的括号里 i=0是初始化部分 i<=20000是判断部分 i++是调整部分

当然while循环也能做成这项工作

image-20220402100943993

while的括号内也是判断部分,只要是没有完成这项工作之前,它都会一直进行下去。

KiKi说祝福语_牛客题霸_

image-20220402105004841

我们要进行输入一行 就是要有一个scanf,再进行一次循环的判断

image-20220402105231773

关于循环和分支的更深一步的学习,我会在以后的博客中详细介绍并有大量的题目。

函数

关于函数我总结了一篇博文,大家可以转到这个地方进行学习,里面包含了函数的基本知识和相关的用法,大家尽情享用

【看了这篇,函数你就知道怎么学了】_

小乐乐计算函数)

image-20220402132308335

题解一:普通函数方法解决

image-20220402140113790

在main函数外部定义一个函数,并实现其功能,我们通过在main函数中,调用这个函数,完成这个程序

有几个需要注意的点是:

1、emp在赋值的时候,要对表达式进行浮点数化,就是17行所示的*1.0这个操作,是对表达式结果进行浮点数化

2、三目运算符我们很容易就能用到,我之前总结过一篇关于操作符的博文,可以去了解一下

3、x>y?x:y----------这个操作符很容易理解

白话一点说就是:x大于y吗?如果大于就输出x,否则就输出y

题解二:

函数嵌套调用的方法

image-20220402135726138

这个解题方式和第一种略有不同,用的是函数的嵌套调用,我们可以看到,函数定义了一个max3以后,又在max3中调用了max2这个函数,可实际上max3中并没有max2这个函数,只有在外部寻找,max2的值又返回给max3,就完成了函数的嵌套调用。输出的方式和题解一相似。

操作符

【操作符看这一篇你就通透了】———操作符详解_爱学习的诸葛大力的博客-CSDN博客

数组

数组可以理解为一组相同类型元素的集合。

其定义方式为:

image-20220402141759399

我们来看一下数组的使用方法:

image-20220402142207456

对于数组的使用我们之前介绍了一个操作符 [ ] 它叫下标引用操作符 它其实就是数组的访问符

补充小知识:

1、数组是使用下标来访问的,下标从0开始

2、数组的大小可以通过计算得到

其他数组相关的知识我们慢慢再跟大家讲解。

一、逆序输出_牛客题霸_牛客网 (nowcoder.com)

image-20220402143804911

==一、==正向输入反向输出的方法:

image-20220402143703871

二、交换的方法image-20220402162822411

image-20220402164319221

总结

我们共同努力,我们一定会在未来的日子里慢慢地成长,这是我们的目标,
抑或我们的期待,就让我们在未来一点一点地学习,不断探索不断进步。

操作符学习
初阶指针学习
数据在内存中的存储
就让端端陪你们一起进步叭。

  • 20
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 13
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值