C语言:从入门到弃坑

"Hello World"

如果看这篇blog还看不懂的话,退群吧。

=====================================分割线======================================

1.0        (17.9.21更新)

写一个程序,目的是为了什么,通俗易懂的讲,给你一些原始数据,让你经过一些乱七八糟的操作以后得出一个结果,那个结果就是我们想要得到的东西。

原始数据通称为输入,得到的结果通称作为输出。

一个程序可以没有输入,但是一定要有输出。

为什么?

要是什么结果都没得到的话,还要写这个程序干嘛?

举个例子

#include <cstdio> 
int main(){
	printf("Hello the cruel world.");
	return 0;
}
这个程序没有输入,只会输出一个句子。


1.1

1.1.1在程序主体之前的东西

在开始给程序指令之前,有两个方面的东西,调用库和定义变量。

(1)调用库

在任意(大概?)一种语言中,都提供了各种各样的库,顾名思义就是仓库,里面存放的就是开发人员预先写好的各种函数。

比如 scanf就是一个函数,作用就是到输入界面去读取指定格式的数字或者字符。但是不调用库的话,之后的代码里是无法从库里调用函数的。

c++的STL库中有12w的函数,功能十分强大。

比如<cstdio>,是几乎必须要调用的一个库,我也不清楚里面有啥,反正写上去不会出错。

另外比较常用的还有<iostream> <cstring> <algorithm> <cmath>这些放到后面说(如果我还记得更新的话。。。)


调用库的具体格式: #include <库的名称>

比如:

#include <cstdio>

PS:cstdio和stdio.h没什么区别,只是有的C语言版本不同,如果发现某一个库调用的时候error了,就换另一个。

(2) 定义变量 

变量这个东西,大概有点像数学里的未知数,作用是记录数值。

我语文差,高考没考到年级第一,所以这个没看懂的话,先硬着头皮看,反正你也打不到我

与首先变量相关的就是赋值,原本定义完变量以后,这个东西里面是空的,所以要给一个值。

比如最简单的,定义完a这个变量以后写一句,a=10,那这个时候如果我要输出a的值,屏幕上得到的就是10.

(大概就是这个意思)

变量既然叫变量,那么值是可以更改的,比如这样写:

a=10;
a=20;
a=2333;

每次新赋值以后,新的值会覆盖原本旧的值,所以连续三次赋值以后再输出a,得到的结果就是23333.


归正题,如何定义变量。

具体格式:

变量类型 变量1,变量2;

举个例子:

int a,b;

这个时候又要有可爱的小墩子问了,变量类型是啥子啊。

一般分为,整形(int),长整形(long long) ,浮点型(float 就是小数),双浮点(double,也是小数,精确度更高),逻辑类型(bool),字符(char),字符串(string)。

定义了一个变量的类型以后,是不能给它搞别的类型的。

比如int类型的变量,可以存的数据-2^31到2^31-1之间的任意整数(整数!!!),所以你就不能给它赋值为小数或者字符。

举个例子

char x;
这个时候就定义了一个字符类型的变量,能存的数据就是一个字符,比如给它赋值

x='p';

那么这个时候如果我输出变量x,得到的就是一个字母p。

如果这样写:

x=3;
这样显然就是错的

<敲重点>在大概不知道多长的一段时间内,只需要用到int这一个类型,所以其他的类型暂时不考虑。

Q:int类型的范围是-2^31到2^31-1之间的任意整数,那如果给一个int类型的变量赋值为2^40会怎么样呀?

A:傻狍子,当然是会电脑爆炸啊。

1.1.2 程序主体

之前提到过,在程序主体里一般有三种基本语句:输入,瞎b操作,输出。

比如:

scanf("%d",&a);
a=a+1;
printf("%d",a);
这三行代码的意义就是,读入变量a的值,+1s,输出现在a的值。

(1).scanf

scanf的作用是读入数据(正经脸)

以后还会用到更快速的getchar,题外话。

对于一个初学者来说,scanf的用法直接死背

scanf("%d",&a);
scanf("%d%d%d%d",&x,&y,&z,&t);
a,x,y,z,t都是整形变量。

这两行代码放在这里,我也就不多说了,能考进uestc的除了我之外都是大佬,看不懂的就退群吧。

(2)printf

printf("%d%d",&x,&y);

类似于scanf的用法,但是注意

<敲重点>scanf里的变量名前面有一个“&”符号,但是在printf里是没有的。

具体的原因,我现在解释了也说不清,先记住就好了。

(3)基本语句 这个放到单独一个里面讲。

1.1.2.0 题外话  (17.9.25更新)

关于“为什么scanf读入的时候变量前面要加&符号 而printf的时候不用”

变量我们俗称为一个容器,里面是用来存放数值或者其他各种数据的。我们在刚定义变量的时候,系统并没有给他分配空间,而这个“&”符号,我记得好像是叫选址符号来着,就相当于是让系统在运存(?)给他分配空间。

打个比方,变量就像宾馆里的房间,数据就像旅客,这个&符号就相当于是给这个旅客分配了房间,不然的话这个旅客虽然进了宾馆里(相当于读进了程序里),但是找不到自己住的房间,所以就会出错。

1.2 写程序

一个程序最简单的部分除了输入输出外就是基本语句,大概包含赋值、循环和判断。

1.2.1 赋值

与赋值操作紧密相关的就是变量。

变量这个东西刚学可能有点难理解,再解释一下。当我们定义了一个变量以后,可以存储相应类型的数值在里面,也可以通过重新来给他赋值而改变其中的数据,或者是利用变量之间进行运算,这个与以前初等数学里学过的未知数还是有点差别的。

赋值操作的基本格式: 变量=数值或者 变量=变量

最简单的例子:

int a;
a=0;
这时候我们就定义了一个整形变量a,然后将其赋值为0。

这时候如果输出a的值,得到的就是0。

如果这个样子的话:

int a;
a=0;
a=1;
第二次赋值以后的值覆盖了第一次的0,所以这时候输出a得到的就是1.

再来个例子:

int a,b;
b=1;
a=b;

这个时候a=b什么意思呢,就是把b的值给a,但是b本身的值并不改变,就相当于是复制给a

这时候如果我们输出a,b的值,得到的都是1.

倒数第二个例子:

int a;
a=2;
a=a+1;
这个时候输出a的值,得到的就是3,大概不需要多讲了。

最后一个例子:

在上面一个例子里,a=a+1这个代码的作用就是把a的值加1,但是C语言里有个简化的操作:

a++;
效果和a=a+1效果是一样的。

与此类似的还有a--,效果等于a=a-1

1.2.2 判断

这个东西就是以前数学选修里学的逻辑判断。。。

用法就是 if (判断条件) 操作

【敲黑板!!!】赋值是用“=”赋值,所以如果要判断两个数是否相等要用"==",两个等于号,两个等于号,两个等于号!

if (hhc == zhizhang) score++;
然后如果有多个操作怎么办呢?

if (a==3){
	a++;
	b=a+2;
}
加个大括号就好了

然后如果有else操作怎么办呢?

if (a==3){
	a++;
	b=a+2;
}
else{
	a--;
	b=a+2;
}
解释一下意义:都是聪明人都能看得懂,就不解释了。

OvO

1.2.3 循环

重头戏,程序非常重要的部分,可以玩出很多骚操作,后话。

在高中的时候大概在选修里有学过程序框架,其中很多都有循环语句,但是写代码的时候不可能让你还画那个框架图。

所以我们以最简单的循环语句为例讲解。

循环语句的基本框架:for (开始条件;继续循环的条件;循环变量的值变化)

for (i=1;i<=10;i++)

这句话的意思就是 变量i的值一开始等于1,然后每次+1,直到i>10的时候停止循环。

这里有一个注意点,中间的那个判断条件是“继续循环的条件”而不是“结束循环的条件”。

这个怎么理解呢,以上面那个为例,只要是满足i<=10,就会继续执行循环里的操作。

所以说,当i=10的时候,还是会继续执行循环里的操作,但是当i=11的时候不满足i<=10,就退出循环了。

我们可以具体实践一下:

for (i=1;i<=11;i=i+2) printf("%d ",i);
注意变量i每次变化的量是2,所以输出得到的值就是1 3 5 7 9 11。

如果还是没理解循环语句的执行方式的话,下面是一个详解:

开始循环->给循环变量一个初始值->判断循环条件是否满足->执行循环后面的操作->改变循环变量的值->继续判断是否满足循环条件->执行操作........->判断条件->不满足->退出循环。

所以每次都是先判断条件再执行操作的。


两个骚操作:break和continue.

字面意思,break就是中断循环,continue就是跳过底下的操作,继续下一次循环。

	for (i=1;i<=10;i++){
		if (i==7) break;
		printf("%d ",i);
	}

这个地方的意思就是,执行到这个判断的时候,如果i=7就退出循环,还没执行的操作也都不搞了,反正就是中断了。

所以得到的结果是1 2 3 4 5 6.

	for (i=1;i<=10;i++){
		if (i==7) continue;
		printf("%d ",i);
	}
这个意思就是,当执行到continue这一行的时候,如果判断满足i=7,就跳过循环里还未执行的操作,继续下一次循环。

这个不怎么好说。。。反正输出来得到的是1 2 3 4 5 6 8 9 10,输出7那个被跳过了。


break和continue灵活运用的话可以让程序变得很简洁,但是一开始写的话建议还是稳点。。别瞎用函数。。

1.3 数组

写不动了

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值