一位高中竞赛蒟蒻的大学C++学习日记-第一篇-基本输入输出

    科技2023-11-02  85

    基本输入输出

    前言人生的第一个程序头文件概念命名空间概念最重要的函数——主函数 初步认识输入输出一份优(chou)秀(lou)的代码运算基础——变量定义交互基础——输入输出输入详解输出详解 结尾

    前言

    哪有那么多废话,直接开冲 IDE之类的网上随便一搜一大堆,但我这里还是推荐大家使用DevC++或VS Code

    人生的第一个程序

    相信无数的同学和我一样,HelloWorld都是人生中写的第一个真正属于自己的程序,但是在这短短的几行代码中,作为初学者的我们仍然可以发掘其中的精美之处

    #include<cstdio> using namespace std; int main() { printf("Hello World!"); return 0; //这里就混用C的标准输入输出了 }

    在这个代码中,我们一句一句来仔细分析其用途

    头文件概念

    1.首先引入眼帘的是

    #include<cstdio>

    这一句是整个代码的最关键部分,它告诉了这个程序在运行的过程中需要调用的函数在哪里,就像你在翻译文章时需要查字典,当文章中出现一个你不认识的单词(相当于程序中的函数),你就需要去相应的字典中去查找这个单词(你总不可能拿着一个俄语单词查日语字典吧),当你没有这本字典时,你的翻译工作就罢工了,同理,你的程序编译就报错了 再来仔细分析这一句的语法 #include 声明后面是一个准备让计算机调用的系统库文件 <…> 则声明了库文件的名称 而其中所写的 cstdio 才是我们真正需要的那个库 与之相似,C++为我们提供了丰富的模板库,如cstring,algorithm,cmath等等,这些我们以后再将

    命名空间概念

    2.紧接着的是

    using namespace std;

    这一句声明了所有的库文件的变量名都在一个叫做‘std’的命名空间中

    最重要的函数——主函数

    3.然后进入程序真正运行的部分——主函数

    int main() { printf("Hello World!"); return 0; }

    抛去一切外围代码,我们可以得到一个精简的函数,如下

    int main() { //这里省略一万行代码 return 0; }

    这一个函数被我们叫做主函数,是我们整个代码的中心,其他一切函数和运算,都要以主函数起点进行调用

    最后,我们的主函数中还剩下了一句

    printf("Hello World!");

    这一句,我们让这个程序在console(控制台)窗口中打印了 Hello World 这一句话,是程序真正是实现人机交互的代码

    初步认识输入输出

    与此相近,在我们的c++中,有

    scanf("...",...); printf("...",...); cin >> ...; cout << ...;

    等等诸多输入输出方式 当有了输入与输出,我们的代码功能就变得丰富了起来

    一份优(chou)秀(lou)的代码

    比如,我们需要输入两个整数,分别对其进行加减乘除运算并直接输出结果,那么我们就可以有以下代码

    #include<cstdio> using namespace std; int main() { int a,b; scanf("%d%d",&a,&b); printf("%d %d %d %d",a+b,a-b,a*b,a/b); return 0; }

    在这个短短几行的代码中,仍然有很多值得我们学习的新知识

    运算基础——变量定义

    跳过上面讲过的重复部分,第一行新的代码就是

    int a,b;

    在这一行代码中,我们定义了两个整数型变量:a,b 而前面的 int 则是起到告诉程序我们定义的变量类型的作用 与此相似的,我们还有short,int,long,long long这些整数型变量及其对应的无符号版本 那么问题来了,这么多的变量,它们之间是不是又区别呢? 答案是肯定的,而且很多时候是你的代码能跑出满分和零分的区别,但是,在这一讲,我们不做过多的探讨,因为对于整数,int型变量在大多数时候是完全够用的

    交互基础——输入输出

    输入详解

    接下来,是我们重要的输入部分

    scanf("%d%d",&a,&b);

    这一行的知识点较多,让我们来一个一个了解 首先,我们见到的是一个叫做 scanf 的新函数,与 printf 在控制台答应不同,它能够从我们的控制台上读取数字、字符等我们输入的或文件的数据 而内部双引号的 %d 表示我们告诉计算机,下一个我们即将读取的,是一个整数,并且将我们读取到的整数赋值给后面用来储存这个整数的变量,比如后面的a、b 但是,细心的同学肯定注意到了,我们后面的a、b并不是孤零零的,而是在其前面写了一个 & ,这个符号在这里我们称其为取地址符,它可以将我们当前这个变量在内存中的地址读取出来,发送给scanf函数,以便scanf函数可以顺利的赋值

    为什么要使用取地址符 我们的一个变量,就如同一个装货物的仓库 我们呢的变量名就是这个仓库的名字 我们对变量进行运算,本质就是对储存在这个变量中的数据进行运算 同理,我们直接读取变量,也是读取的变量内部的信息 但是,当我们用 scanf 向仓库中放入货物时,就出问题了 就像你的快递,小哥问你,你家住哪里?你总不可能回答:我家有电脑,冰箱等等吧 所以,我们在读取时,需要将变量的内存地址,而不是这个变量内部的值返回给scanf函数 当然,有能力的同学也可以直接看scanf的源代码 在这里,明显可以系统调用的时一个指针

    int __cdecl scanf(const char * __restrict__ _Format,...) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;

    输出详解

    然后,就是我们重要的输出了

    printf("%d %d %d %d",a+b,a-b,a*b,a/b);

    一个再漂亮的函数,没有输出或返回值,一切都没有了意义 在这个函数中我们时整合了运算和输出,函数会优先计算表达式的具体值,然后在在控制台以整数类型输出 而这个双引号的内容,定义了输出的具体格式,在这个样例中,我们的输出格式会和引号内格式一模一样,即 [一个整数][空格][一个整数][空格][一个整数][空格][一个整数]

    有了 printf 函数,就可以十分轻松的验证 scanf 中使用的取地址符的功能 代码如下:

    #include<cstdio> using namespace std; int a; int main() { printf("a的数值:%d\n",a); printf("a的地址(10进制):%d\n",&a); printf("a的地址(16进制):%x\n",&a); return 0; }

    结尾

    到目前为止,你就已经基本认识了C和C++的输入与输出基础,有了基本的交互,再加上中间过程的运算,代码就可以爆发出去穷无尽的潜力

    Processed: 0.024, SQL: 8