C语言学习(小白)

目录

简介

编译器选择

代码开始

printf函数

关键字

字符与ASCII

注释

最后

AI


简介

我们日常生活中,语言指的就是汉语、英语等(就是人与人之间交流的工具)。C语言其实就是人与机器交流的语言,但机器只能识别0和1这种二进制序列(就是一串0和1组成的数,例如11001110。为什么只能识别0和1呢?我的理解是电路只有通电跟断电两种状态,我们把通电这种状态记为1,断电记为0),那我们与机器交流不会的语言不会就是二进制序列吧?最开始确实如此那些二进制序列叫做机器语言,那些人被称为科学家,由于这样跟机器交流太困难,科学家们就把机器语言进行改进,天空一道巨响,汇编语言闪亮登场!但是汇编难度还是有点大,然后就进一步改进,C语言诞生了!

编译器选择

为啥要配置编译器?

C语言代码其实是文本文件(就是英文 + 标点符号等),但机器只能识别0和1,我们就需要一个翻译官把文本文件翻译成对应的0、1二进制文件,这样机器才能读懂运行。编译器就充当这个翻译官

我目前用的编译器有Visual Studio 2022(主,功能强大)、Visual Studio Code(对小白不太友好,插件多、功能丰富)、Dev C++(小巧轻便,打比赛用的一般都是它)。
Dev C++安装包夸克链接:Dev C++安装包

点开安装包,然后依次点 OK-->I Agree-->Next

这里选择你要安装的位置,一般放在D盘

安装好后如果界面是英文,则点击Tool->Environment Options

这样界面就成中文了!

下面来写第一个C语言代码~~ 文件->新建->源代码

代码要用英文符号,如果编译报错,很可能就是把英文()写成中文()

#include<stdio.h>
int main()
{
	printf("hello world");
	return 0;
}

写好代码再点击编译(也可以直接按F9),编译相当于把上面的代码翻译成机器语言

这里默认的是C++语言,选择第二个就是C语言(由于C++兼容C,选择C++也是可以的)

再点击运行可以了

哇!简直完美!

第一次写代码常见错误:

  • main写成了mian
  • main后面的()漏了或者写成了{}
  • 代码中用了中文符号
  • 每条语句结束后漏掉了分号;

如果你的那个黑色的终端界面一闪而过,那就再return 0;的前面加上一行getchar(); 

#include<stdio.h>
int main()
{
	printf("hello world");
	getchar(); 
	return 0;
}

但要记住,修改完代码后要运行时,一定要先编译再运行

代码开始

main函数:每个C语言程序不管有多少行代码,都是从main函数开始执行的,main函数是程序的入口,也被叫主函数。

printf函数

上面有行代码是

printf("hello world");

printf也是打印双引号里面的东西的函数(这里的函数可以理解为实现某一功能的东西)。不过如果你没有写第一行代码 #include<stdio.h>, 就会编译出错,因为这个函数是在stdio.h这个头文件里的。(举个例子,汽车修理工每次修车会用到各种工具如扳手钳子,这些工具被师傅放在一个工具箱内,这样师傅修汽车时直接拿个工具箱就可以了。代码中的printf就相当于扳手这类的工具,而stdio.h就是存放这类工具工具箱,你要用printf的话就直接在前面包含下头文件就行了)

printf也可以打印别的东西。如:我想打印一个整数:(灰色的字是注释,用来帮助我们理解代码,并不参与代码的编译)

#include<stdio.h>
int main()
{
    //int是整形,或者说是整数,这条语句是我创建了一个整形变量a,a的值是10
	int a = 10;     
	printf("a");    //我想在屏幕上打印a的值
	return 0;
}

可是最终运行结果并没有在屏幕上打印10,而是打印了a。

如果想打印整形变量的值,则需要用占位符%d,将其改成 printf("%d", a);就可以了(别忘了双引号跟a之间还有个逗号),如果是别的类型,如小数呢?就要用%f

那我想一次打印多个数据呢?

就要按顺序依次打印,第一个%d对应的是a,第二个对应b,第三个对应a+b

下表是常见类型对应的占位符(需要稍微记一下):

整形int%d
长整型(能够储存比int类型还大的数)long%ld
长长整形(能够储存比long类型还大的数)long long%lld
单精度浮点型(精度较低的小数)float%f
双精度浮点型(精度较高的小数)double%lf

字符型

char%c
字符串%s

我们从下往上依次介绍一下吧。

C语言第一个程序也可以这样写:

printf("%s", "hello world");//"hello world"是字符串,打印字符串用%s

还要多写"%s",还不如之前那个简洁。不过%s还是有用的,以后会提。

float跟double的区别可以直接举个例子:

这段代码中我创建了一个float类型的b变量和一个double类型的c变量来储存91.7,可是b打印的是91.699997,而c是91.700000。可以看出double类型储存的小数更加精确。浮点型数据默认小数点后面打印六位,不够就用0补。如果我只想保留一位小数,就要在%跟lf之间加上.1。类似的,保留两位小鼠就要加上.2,三位就加上.3

同理int、long、long long类型区别也是类似

上面这段代码我分别用不同类型储存30亿,结果只有long long类型能正确打印出来,别的类型却打印出负数,这种情况我们称之为溢出,也就是数据太大了,存不下来。细心的同志会发现我每个printf函数里双引号最后都加上了\n,这个字符是换行的意思,当然你也可以去掉\n再运行看下结果

关键字

我又突发奇想,能不能创建一个变量名为int的正数呢?

很可惜不行,直接编译报错。

C语⾔中有⼀批保留的名字的符号,⽐如:int 、if 、return ,这些符号被称为保留字或者关键
字。(关键字不能作为变量名)

  • 关键字都有特殊的意义,是保留给C语言使用的
  • 程序员自己在创建标识符的时候是不能和关键字重复的
  • 关键字也是不能自己创建的

这么多关键字无需刻意地背,多写写代码自然就记得差不多了

字符与ASCII

在键盘上可以敲出各种字符,如:a,q,@,#等,这些符号都被称为字符,C语⾔中字符是⽤单引号括起来的,如:'a','b','@'。

我们知道在计算机中所有的数据都是以⼆进制的形式存储的,那这些字符在内存中分别以什么样的⼆进制存储的呢?如果我们每个⼈自己给这些字符中的每个字符编⼀个⼆进制序列,这个叫做编码,为了⽅便⼤家相互通信,不造成混乱,后来美国国家标准学会(ANSI)出台了⼀个标准ASCII编码,C语⾔中的字符就遵循了ASCII编码的⽅式。

说人话就是:每个字符对应不同的整数,字符跟整数可以转换(不过字符数量有限,用0~127这些数基本就能够表示所有字符了)。如:字符a对应ASCII的是97,c对应99

#include<stdio.h>
int main()
{
	char c = 'a';    //这里我创建了一个char类型的变量,变量名叫c,里面存储的是字符a
	printf("储存的字符 %c\n", c);	//打印变量c储存的字符 
	printf("对应的整数 %d\n", c);	//打印c所对应的整数
	
	int a = 99;
	printf("储存的整形%d\n", a);	//打印变量a储存的整形 
	printf("对应的字符%c\n", a);	//打印a所对应的字符
	return 0;
}

运行结果:

ASCII 码表 - cppreference.com

我们最好掌握几个

  • 字符A~Z的ASCII码值从65~90
  • 字符a~z的ASCII码值从97~122
  • 对应的大小写字符(a和A)的ASCII码值的差值是32
  • 数字字符0~9的ASCII码值从48~57
  • ASCII码值从0~31这32个字符是不可打印字符,无法打印在屏幕上观察

注释

最后我们再来谈下注释。(为啥要写注释?emmm方便我们读懂代码。我写代码有时候不写注释,过几天我自己都看不懂,还要去问AI...)

注释分为两种:1、//形式;2、/**/形式

//形式上面已经用到了,就是把//后面的整条语句都注释掉

/**/形式:是把/*跟*/之间的所有东西都注释掉。

#include<stdio.h>
int main()
{
	/*
	char c = 'a';
	printf("储存的字符 %c\n", c);	//打印变量c储存的字符 
	printf("对应的整数 %d\n", c);	//打印c所对应的整数
	*/
	int a = 99;
	return 0;
}

 注意/**/不支持嵌套。下面这段代码中,我最开始想把int a = 99;这句话注释掉,就在两端加上了/**/,后来我又想把main函数里面的都注释掉,就在起始和末尾加上/**/,但结果并没有全部注释掉。编译器看到第一个/*后,会去找第一个出现的*/,然后把中间的内容注释掉。

#include<stdio.h>
int main()
{
	/*    
	char c = 'a';
	printf("储存的字符 %c\n", c);	//打印变量c储存的字符 
	printf("对应的整数 %d\n", c);	//打印c所对应的整数
	
	/*int a = 99;*/
	printf("储存的整形%d\n", a);	//打印变量a储存的整形 
	printf("对应的字符%c\n", a);	//打印a所对应的字符
	*/
	return 0;
}

DevC++注释:选中要注释的内容直接Ctrl + / 就行了。

最后

计算机是一门实践性很强的专业,看几十行代码都不如自己动手去写个十几行!新手写代码编译报错别慌,先看下报错是啥,比如下面这段代码

报错说printf前面少了分号;,已经很明显了第9行语句结束应该要加个;。有人说我英语不好,看不懂它说的是啥。emmm翻译软件有吧,没有就下一个,这不就解决了吗

如果报错很复杂,看不懂,那就问下AI或者老师或者同学。。。就拍你遇到困难就退缩,老子不写了!!!===>老子不学了!===>老子不干了!===>老子不活了!!最开始的代码都比较简单,一旦养成这种坏习惯,以后遇到错误就果断放弃了,明明花上一两分钟问下AI就能得到答案,为什么就是不愿意动手呢?我没有AI。啊这...可恶!无法锁定!

AI

那介绍下我用的AI吧,是Edge浏览器上的扩展,一个插件

点右上角那三个点-->扩展-->获取Microsoft Edge扩展-->搜索chatgpt,我用的就是第一个

下载完后可以把这个眼睛点一下,方便使用

很多小问题AI都可以解决,但不要过度依赖,要学会看编译器的报错

好了,本节到此结束!祝大家身体健康万事如意!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值