C++入门

· · 个人记录

C++ 是一门编程语言,我们都学过英语,英语是你和老外交流的方式,编程语言是你和计算机交流的方式。

既然是语言,就有语法,如果不按语法来,就没法沟通。

程序框架

#include<bits/stdc++.h>
using namespace std;

int main()
{
    你的代码
    return 0;
}

上面是一个 C++ 程序最基本的框架,可以先不用理解为什么框架要这样,现在只需要知道一点:你要写的代码放在“你的代码”那里。比如,要写一个程序,功能是输出“你好”两个字,那么程序应该这样写:

#include<bits/stdc++.h>
using namespace std;

int main()
{
    printf("你好");
    return 0;
}

其中, printf 的功能就是在屏幕上打印括号里的内容。

让程序运行

代码写好了,怎么让计算机执行呢?有专门的软件。这里推荐用 Dev C++ 或者 CodeBlocks 。不推荐用 CFree ,因为 CFree 有联想功能,有时候你的程序不严谨(比如缺了头文件之类的),结果也运行成功了,但是在比赛的时候,你提交了这种代码,肯定是没有成绩的。(软件的使用方法可以百度,或者跟老师同学讨论啦)

如果上面的代码已经运行成功并看到了结果,可以继续往下阅读。

顺序结构

其实编程就是用计算机语言说话,一句一句地说,只要语法没错就能运行,至于能实现什么功能,就看编程者的水平了。

在 C++ 的语法里,每句话以英文分号结尾。比如上面有一个程序是输出“你好”,那我现在想输出两个“你好”怎么弄?

#include<bits/stdc++.h>
using namespace std;

int main()
{
    printf("你好");
    printf("你好");
    return 0;
}

你觉得运行的结果在屏幕上会显示什么呢?

是不是这样?

  你好
  你好

然而并不是。很多你认为理所当然的东西在计算机眼中并不是这样,很多你认为没必要的东西,在计算机编程里却很有必要,比如主函数框架。

你要明白,计算机会完全按照你的指令行事,要特别注意是完全。所以上面的程序按照你的指令,输出了两次“你好”,所以最后显示在屏幕上的结果是这样:

  你好你好

(那如果想输出回车怎么办?自行百度。)

变量

如果 C++ 只有输出功能的话,实在是太弱了,下面介绍一个让 C++ 变得强大的东西——变量。

C++ 最常用的变量有三种类型:整数,小数,字符。

对于变量有三种操作:变量定义,变量运算,变量赋值。

下面是例子:

#include<bits/stdc++.h>
using namespace std;

int main()
{
    // 双斜杠后面的内容是注释,计算机会忽略,方便人来阅读
    int a; // 定义一个整数a
    float b; // 定义一个小数b
    char c; // 定义一个字符c

    a = 134; // 计算机的等号和数学的等号不一样,表示“把134搬到a里面”
    b = 36.4; // b现在是36.4
    c = 'z'; // c现在是字符z

    printf("%d %f %c", a, b, c);
    /* 这里是另一种形式的注释,可以跨行

    %后面的字母是什么?记住即可,语法规定,
    输出int用%d,输出float用%f,输出字符用%c,
    还有一些其他的变量类型自行百度
    */
    return 0;
}

输入

既然能在屏幕打印,也就能从屏幕输入。这里介绍一下 scanf 。

#include<bits/stdc++.h>
using namespace std;

int main()
{
    int a;
    int b;
    int c;
    scanf("%d%d", &a, &b); // 为什么a和b前面带着&,暂时记住即可
    c = a + b;
    printf("%d", c);
    return 0;
}

运行上面的程序,在屏幕输入两个整数(空格分隔或者回车分隔),屏幕就会输出两个整数的和。可以逐句阅读一下上面的代码,理解一下 scanf 的用法。

分支结构

上面讲的程序,运行哪一句都是确定的,有没有可以变化的方法呢?比如说,输入大于1,输出“你好”,否则输出“我好”?

当然可以,下面介绍 if 语句的语法。

#include<bits/stdc++.h>
using namespace std;

int main()
{
    int a;
    scanf("%d", &a);
    if (a > 1)
    {
        printf("你好");
        // 这里当然也可以放别的句子。
    }
    else
    {
        printf("我好");
    }
    return 0;
}

数组

我想要定义100个整数,难道要写100次int a?当然不是,可以用数组来定义很多个变量,然后通过下标来访问。

#include<bits/stdc++.h>
using namespace std;

int main()
{
    int a[100]; // 下标从0..99
    a[0] = 1;
    a[99] = -1;
    a[37] = 2;
    printf("%d", a[0]+a[37]+a[99]);
    return 0;
}

循环结构

我想输出100次“你好”,难道要写100句printf?当然不是,循环可以解决这个问题。

#include<bits/stdc++.h>
using namespace std;

int main()
{
    for (int i=1; i<=100; i++)
    {
        printf("你好");
    }
    return 0;
}

数组和循环

上面的循环结构实际上做的是把代码重复100次,其实还有另一个可以利用的东西,就是 i 变量,第 1 次执行的时候 i 是 1,第二次执行的时候 i 是 2 。这个可以用来做什么呢?

#include<bits/stdc++.h>
using namespace std;

int main()
{
    int a[105];
    for (int i=1; i<=100; i++)
    {
        a[i] = i;
    }
    for (int i=1; i<=100; i++)
    {
        printf("%d\n", a[i]);
    }
    return 0;
}

以上就是 C++ 的入门指导,上面的代码尽量自己亲自运行,加深理解,更多更全的 C++ 语法肯定要从书上去学啦。