"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 数组
写不动了