小白之旅【1】

· · 休闲·娱乐

前言

又来,好烦!在作业不多不少的情况下,我仰望天...啊,我想啥呢

之前总是画漫画,但这次来点不一样的,我又来搞事了! \ 《小白之旅》 ! \ 这是我第一次写文章类的"漫画"\ 起初就是 小白冲着脑残的精神来到了一个c++世界,开始踏上旅程。\ 好了,让我们开启旅程吧!

aaaaaaaaaaaaaaaaaaaaaaaaaa!\

\Huge\colorbox{black}{}\Huge\colorbox{black}{}\Huge\colorbox{black}{}\Huge\colorbox{black}{}\Huge\colorbox{black}{}\Huge\colorbox{black}{}\Huge\colorbox{black}{}\Huge\colorbox{black}{}\Huge\colorbox{black}{}\Huge\colorbox{black}{}\Huge\colorbox{black}{}\Huge\colorbox{black}{}\Huge\colorbox{black}{}

第一章:开启旅程!

{ \textcolor{green} {\textbf {达成成就:打开石门!}}}

你已解锁入门地图 \ 入门地图:\

终极环岛->史诗绝望大楼}}}}$ \ \ \ 此时小白就当场就掉到峡谷中。前面看似万里无云,实则乌云密布。 \ 走着走着,出现了一个奇怪的石桩(打开小白之旅的大门): \ “请输入密码!”。\ "密码是啥"小白很疑惑。\ 来帮小白完成题目,输入密码吧! \ 【解题环节】 \ [输入密码](https://www.luogu.com.cn/problem/B2002) \ \ \ \ \ \ 相信你已经完成题目了,石门打开了! \ ::::info[我的答案] ```cpp #include <iostream> using namespace std; int main() { cout << "Hello,World!"; return 0; } `````` :::: ### 解锁新词汇!{cout}! --- cout是c++的标准**输出流**。 \ 格式为: ```cpp #include <iostream>//记得加头文件! using namespace std;//还得加这个! cout<</*你想输出的东西*/<</*你想输出的东西*/; /*以此类推,别忘了加分号!*/ `````` \ ha ## ${ \textcolor{green} {\textbf {达成成就:获得金币!}}}

小白左看看,右看看,找到了两堆金币,\ 石板上出现了一行字:“一堆有*枚,二堆有*枚,请算出一共有多少枚金币!”,\ 看来还是一道简单的题!帮小白算一算吧! \ 【解题环节】 \ 计算一 \ 计算二 \ \ \ 相信你已经完成题目了,获得了许多金币! 答案:

#include <iostream>
using namespace std;
int main(){
  int a,b;
  cin>>a>>b;
  cout<<a+b<<endl;
  return 0;
}

新词! cin

cin是c++的标准输入流,格式为:

#include <iostream>//记得加头文件!
cin<</*你想输入的东西*/<</*你想输入的东西*/;
/*以此类推,别忘了加分号!*/

解锁{+ - * / = ==}!

= :赋值 要想表达a+b=c或c=a+b,只能是

c=a+b

c=b+a

!!! \ ==:判断 +、-、*、/是数学普通符号,格式为:\

```cpp a=b+c; `````` $a+b+c$ : ```cpp a+b+c `````` 其余与加法一样。 oh,还有: ```cpp int a=8,b=3; cout<<a/b; `````` 结果为8$\div$3的向下取整,因为a和b为整数。 ### 解锁 int double! int是一种**整型的**数据类型。\ double是一种**双精度浮点型的**数据类型。\ 详细请看:\ [类型](https://img-blog.csdnimg.cn/img_convert/e1c567c7795fb16f56d2dfb078659da6.png)\ [长度拓展](https://www.luogu.com.cn/article/7rftj4wv/edit)\ [拓展](https://picx.zhimg.com/70/v2-96cb87c3d24505267cbbca209614eaa3_1440w.avis?source=172ae18b&biz_tag=Post) ## ${ \textcolor{green} {\textbf {达成成就:打败树怪!}}}

小白获得了许多金币,非常高兴。\ “A——!”\ 突然,从树木(峡谷中有棵树...)中窜出来三只吃人的树怪。石板中又出现了字:“树怪1每天吃*个人,树怪2每天吃*个人,树怪3每天吃*个人求谁吃的人最多。”\ 小白快被树怪杀死了,快来帮帮他吧!\ 【解题环节】 \ 帮他 \ \ \ 相信你已经完成题目了,成功杀死了树怪! 答案:

#include <iostream>
using namespace std;
int main(){
    int a,b,c,max;
    cin>>a>>b>>c;
    max=a;
    if(b>max){
        max=b;
    }
    if(c>max){
        max=c;
    }
    cout<<max<<endl;
    return 0;
}

新词! endl和> < >= <= != if() else{} else if()

endl就是cout中的换行。

cout<<endl;
cout<<"\n";
//二者都是换行。
if(a>=b)//大于或等于
if(a<=b)//小于或等于
if(a>b)//大于
if(a<b)//小于
if(a!=b)//不等于
  //if(如果和否则)的格式
if(){
  /*
  满足条件后执行的程序。
  */
}else if(/*不满足第一个条件后的第二个条件*/){
  /*
  不满足第二个条件后执行的程序。
  */
}else{
  /*
  都不满足后执行的程序。
  */
}

第二章:计算山洞!

{ \textcolor{green} {\textbf {达成成就:逃出陷阱!}}}

"ha!"小白哼到。 \ "发财了!额,我想啥呢?" 就这样,小白又又又又又又突然掉进了坑里。 石碑又出现了,: \ “请你计算(a+b)\times c (a+b) / c”\ 终于来到计算题了! 快来帮他逃出陷阱吧! \ 【解题环节】 \ \ (a+b)*c \ (a+b)/c\ \ \ 相信你已经完成题目了,成功逃出了陷阱! \ 答案:

#include <iostream>
using namespace std;
int main(){
    int a,b,c,d;
    cin>>a>>b>>c;
    d=(a+b)*c;
    cout<<d<<endl;
    return 0;
}

;

#include <iostream>
using namespace std;
int main(){
    int a,b,c,d;
    cin>>a>>b>>c;
    d=(a+b)/c;
    cout<<d<<endl;
}

新符号! ()

像数学一样,"()"是c++会优先算括号中的内容。 例:

d=1*2*(3+4);//加括号
e=1*2*3+4;//不加括号
cout<<d<<endl;
cout<<e;

会输出:

14
13

{ \textcolor{green} {\textbf {达成成就:杀掉僵尸!}}}

"又躲过一劫!" \ 小白又看到了一个按钮。\ "按一下试试吧!"\ eee... \ 突然,出现了一群僵尸。\ "a!"\

题目出现了:\ “小丽想画一个三角形,请帮她画出来!”\ 真是个不听话的小白!\ 来到编程题了! 快来帮他杀掉僵尸吧! \ 【解题环节】 \ 画三角形 \ \ \ 相信你已经完成题目了,成功杀掉了僵尸! \ 答案:

#include <iostream>
using namespace std;
int main(){
    char a;
    cin>>a;
    cout<<"  "<<a<<endl;
    cout<<" "<<a<<a<<a<<endl;
    cout<<a<<a<<a<<a<<a<<endl;
    return 0;
}

{ \textcolor{green} {\textbf {达成成就: 摆脱陷阱!}}}

"咋又是姜姜?"\ 此时,小白已经绝望了。\ 小白... \ "不出意外的话又要出意外了。"\ 小白看向了左边。| 只见从天空中掉下来了一个网,朝小\ 白砸去。\ "A!"\ 不出意外,小白又又又被陷阱抓住了。

题目出现了:\ “小丽想判断它是不是一个三角形,请帮他判断一下!”\ 哎,这小白不会是从地狱派来的吧!\ 来到编程题了! 快来帮他逃离陷阱吧! \ 【解题环节】 \ 三角形判断 \ \ \ 相信你已经完成题目了,成功杀掉了僵尸! \ 答案:

#include <iostream>
using namespace std;
int main(){
    int a,b,c;
    cin>>a>>b>>c;
    if(a+b>c && a+c>b && b+c>a){
        cout<<1<<endl;
    }else{
        cout<<0<<endl;
    }
    return 0;
}

新词! && || !

"&& || !"是用于判断的运算符,我们叫他判断运算符。\ &&:与运算符,代表满足这个条件需要有两个或以上的条件,这时就可以用到"&&"(与)运算符。例如:

if(条件1 && 条件2){
  \\...
}

if(条件1 && 条件二 && 条件n/*...*/){
}

||:或运算符,代表满足这两个或两个以上个条件只需要有某一个条件满足就可以通过这个大条件.这时就可以用到"||"(与)运算符。例如:

if(条件1 || 条件2){
  \\...
}

if(条件1 || 条件二 || 条件n/*...*/){
}

!: 非运算符,如果在一个真的条件上前面打上非运算符,就会变成假的条件。

#define ask false

if(!(ask)){
  cout << "1";
}

if(ask == false){
  cout << "1";
}//效果一样

第三章:宝石矿洞

{ \textcolor{green} {\textbf {达成成就:获得绿宝石!}}}

小白真是太惨了!\ 屏幕前的人门非常开心!\ haaaaaa\ 此时的小白...\ "我发现了一堆绿宝石!"\ 结果,石桩上又出现了一行字\ “给出ASCII码,请输出字符!”\ 开始吧!\ 【解题环节】 \ zifu

相信你已经做完了,成功获得了绿宝石!\ \ \ \ 答案:

#include <iostream>
using namespace std;
int main(int argc,char **argv){
    char a;
    int b;
    cin>>a;
    b=a;
    cout<<b<<endl;
    return 0;
}

#include <iostream>
using namespace std;
int main(int argc,char **argv){
    char a;
    cin>>a;
    cout<<(int)a<<endl;
    return 0;
}

新方法! 转换!

这里运用了转换的方法。\ 既可以隐形转换 如图一,\ 也可以强制转换 如图二。\ 注意!string不能转整形!不然会报错。\ 在这里,char类型会转换成对应的ASCII码\ ASCII码是基于拉丁字母的一套电脑编码系统。它主要用于显示现代英语。ASCII码表如下:\ ASCII码表\ 怎么int转string呢?\ 以后讲。

{ \textcolor{green} {\textbf {达成成就:奇妙大门!}}}

"终于出来了!"\ 走着走着,发现了一个大石门!\ "好大的石门!"\ 突然,石门上出现了一行字:\ "1.请计算2^n!"\ "2.请计算|n|"\ \ 来到编程题了,快来打开大门吧!\ 【解题环节】 \ 1 2 \ \ \ C++答案:\ 1

#include <iostream>
#include <cmath>
using namespace std;
int main(){
    int a,c=1;
    cin>>a;
    for(int i=0;i<a;i++){
        c*=2;
    }
    cout<<c<<endl;
    return 0;
}

2

#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
int main(){
    double a,b;
    cin>>a;
    b=abs(a);
    cout<<fixed<< setprecision(2)<<b<<endl;
    return 0;
}

新!库<cmath>

cmath库是c++的标准库,c语言用的是<math.h>.\ 里面有各种数学函数。\ 详情见 \

cmath。

abs(x) = \begin{cases} x>0 & x \\ 0 & 0 \\ x<0 & -x \\ \end{cases}

\ \ \ \ ha

【roading...】

{ \textcolor{green} {\textbf {达成成就:超大溪流!}}}

"环岛入口!"小白说道。\ 结果一条溪流挡在了入口前。\ "啊!真令人抓狂!"小白叫道。\ 旁边正好有船。\ 船上刻着几行字:\ "给出数列,请输出最小值!"\ \ \ \ 又来到编程题了!快来帮小白找到答案吧!\ shulie\ \ \ \ \ \ 相信你已经写出答案了,成功来到了环岛人口!\ 答案c++:

#include <iostream>
using namespace std;
int main(){
    int a,B[100];
    cin>>a;
    for(int c=0;c<=a-1;c++){
        cin>>B[c];
    }
    for(int d=a-1;d>=0;d--){
        if(B[d-1]>B[d]){
            swap(B[d-1],B[d]);
        }
    }
    cout<<B[0];
    return 0;
}    

C

#include <iostream>
using namespace std;
int main(){
    int a,B[100];
    scanf("%d",%a);
    for(int c=0;c<=a-1;c++){
        scanf("%d",&B[c])
    }
    for(int d=a-1;d>=0;d--){
        if(B[d-1]>B[d]){
            int t=B[d-1];
        B[d-1]=B[d];
        B[d]=t;
        }
    }
   printf("%d",B[0])
    return 0;
}    

新语句! for(;;) while()

for和while语句是循环的。\ 用法如下。\

  \\1for
for(int i=0\*必要时的条件变量*\;i<n\*循环条件*\;i++\*每一轮执行的递进程序*\){
}
   \\1while
int i=0;
while(i<n\*循环条件*\){
  i++;
}
    \\2
for(;i<k\*循环条件*\;){
}

发现数组!

一个数组可以存多个相同类型的变量或常量(不能改变的量 加const就行)

第四章:终极环岛

{ \textcolor{green} {\textbf {达成成就:获得神秘钥匙!}}}

“呼!逃过一劫!”小白说道。 \ 可惜小白是一个臭名昭著的乌鸦嘴,直接又掉进了坑里。\ “A,又掉进了坑里!”\ 此时,一个石柱朝小白压去。\ “A!”小白叫道。\ 题目出现了:\ “小方想寄一件东西,请你计算邮资!”\ 来到编程题了! 快来帮他逃出(杀人)陷阱吧! \ (好家伙,上一个不杀人这个来整杀人了!)\ 【解题环节】 \ 邮资 \ \ \ 相信你已经完成题目了,成功逃出了陷阱! \ 答案:

#include <iostream>
using namespace std;
/**/
int main(int argc,char **argv){
    int a,s=8;
    char b;
    cin>>a>>b;
    if(b=='y'){
        s+=5;
    }
    if(a<1000){
        cout<<s<<endl;
        return 0;
    }else{
        a-=1000;
        while(a>=500){
            a-=500;
            s+=4;
        }
        if(a>0){
            s+=4;
        }
    }
    cout<< s << endl;
    return 0;
}

return 0

注:return 0;可以让程序提前结束。

{ \textcolor{green} {\textbf {达成成就:获得小车!}}}

"再次逃过一劫。"小白长呼一口气。\ "我看到了一个小车!"\ "又出现了石板!"\ 当\ 石板:\ "请数出n的阶加!"\ \ \ 又又又来到编程题了!\ 快来解题吧!\ jieti\ \ \ \

警戒线

相信你已经完成题目了,成功获得了小车! \ 答案c++:

  #include <iostream>
using namespace std;
int main(){
    int a=0,b=0;
    cin>>a;
    for(int c=1;c<=a;c++) {
        b+=c;
    }
    cout<<b;
    return 0;
}
#include <iostream>
using namespace std;
int open(int n){
    if(n==1){
        return 1;
    }else{
        return n+open(n-1);
    }
}
int main(){
    int a=0,b=0;
    cin>>a;
    b=open(a);
    cout<<b;
    return 0;
}        

新思想! 递归

首先讲一下函数。\ 我们来看一段代码:

  #include <iostream>
 #include <string>
  using namespace std;
  int main(){
    string a;
    cin>>a;
    if(a[0]>'1'){
     for(int i=9;i>=0;i--) cout<<a[i];
     a+="1";
    }if(a[1]>'2'){
     for(int i=9;i>=0;i--) cout<<a[i];
     a+="2";
    }if(a[2]>'3'){
     for(int i=9;i>=0;i--) cout<<a[i];
     a+="3";
    }
  }

每一次都使用了for循环。\ 感觉代码长。\ 这就可以创建和使用函数。\

   #include <iostream>
 #include <string>
  using namespace std;
  void out(string a){
    for(int i=9;i>=0;i--) cout<<a[i];
  }
  int main(){
    string a;
    cin>>a;
    if(a[0]>'1'){
     out(a);
     a+="1";
    }if(a[1]>'2'){
     out(a);
     a+="2";
    }if(a[2]>'3'){
     out(a);
     a+="3";
    }
  }

说一下函数的定义:

  int a(){
   return /*定义整形就返回整形*/
  }
  //返回值也就是这个函数的值
  //特别声void类型的函数没有返回值!!!

{ \textcolor{green} {\textbf {达成成就:逃出生天!}}}

"小车开起来快多了!"小白快乐得说。\ 小车遇到了沼泽,急刹车了。\ "aaaa!!!"小白大叫。\ 小白飞到了沼泽里。\ 此时,旁边的石头上有字了。\ "给出分数,求小数的某一位!"\ \ \ \ 又来到编程题了,快来帮他逃出沼泽吧!\ \ 【解题环节】 \ 逃出沼泽!\ \ \ \ \ \ 相信你已经做完题目了,成功让小白逃出了沼泽!\ 答案:

  #include <iostream>
using namespace std;
int main(){
    int m,n,k;
    cin>>m>>n>>k;
    for(int i=0;i<k;i++){
        m%=n;
        m*=10;
    }
    m/=n;
    cout<<m;
    return 0;
}

递推思想!

以下给出实例: ```cpp #include <iostream> using namespace std; long long fib(long long in){ if(in<=1){ return in; } return fib(in-1)+fib(in-2); }/*明显的斐波那契数列递归函数*/ int main(){ long long n; cin>>n; cout<<fib(n); } `````` 你可以输入100试试。\ 你会得到几秒了,还没出结果。\ ### 未编完 ## ${ \textcolor{green} {\textbf {达成成就:开启宝箱!}}}

明天我生日!7.3!

"我怎么这么倒霉呀!"小白叹气道。\ "也不知道你笑啥。"\ 事实,他全身被泥浆包裹。\ 车也不能用了。\ "发现了宝箱!"小白大叫\ 把上上上上一期的钥匙插进去。\ 文字出现了:\ "请关好车门,请求出斐波那契数列的第n项!"\ 【解题环节】
jie \ \ \ \ 相信你已经做完题目了,成功打开了宝箱!\ 答案:

#include <iostream>
using namespace std;
int main(){
    long n,ans=1,x=0;
    cin>>n;
    for(long i = 1;i<n;i++){
        long k=ans;
        ans+=x;
        x=k;
    }
    if(n==0){
        cout<<"0.00";
        return 0;
    }
    cout<<ans<<".00";
    return 0;
}

第五章 史诗绝望大楼

{ \textcolor{green} {\textbf {达成成就:掉进大楼?}}}

"嘭!"脚下一空,掉了下去。\ ...\ 掉进了大楼。\ 眼前,是破旧的大楼。
"有n条鱼,问每条鱼左边有多少条鱼的值没有那条鱼高!"字出现了。\
\ 【解题环节】
kuai \ \ \ \ \ 相信你已经完成题目了,成功解开了题目!
答案:

#include <iostream>
using namespace std;
int pan(int a[],int s){
    int ans=0;
    for(int i=0;i<s;i++){
        if(a[i]<a[s]){
            ans++;
        }
    }
    return ans;
}
int main(){
    int fish[110]={0},biu[110]={0},n;
    cin>>n;
    for(int i=0;i<n;i++){
        cin>>fish[i];
    }
    for(int i=0;i<n;i++){
        cout<<pan(fish,i)<<" ";
    }
    return 0;
}                

{ \textcolor{green} {\textbf {达成成就:发现电报!}}}

继续走,发现了一排排电报信息。\ "哇!"\ 结果不久,出现了故障。\ "请帮忙传输信息!"石柱出现了文字。\ \ \ 【解题环节】
传输\ \ \ \ \ \ 相信你已经完成题目了,成功解开了题目! \ 答案(仅个人解):\

#include <iostream>
using namespace std;
int jiangint(int  a[7],int zhong [7]){
    int num=0;
    for(int x=0;x<7;x++){
        for(int y=0;y<7;y++){
            if(a[x]==zhong[y]){
                num++;
                break;
            }
        }
    }
    return num;
}
int main(){
    int  zhong[7]={0},m,jiang[8]={0},t[7]={0};
    cin>>m;
    for(int i=0;i<=m;i++){
        int j;
        for(j=0;j<7;j++){
            cin>>t[j];
            if(i==0){
                zhong[j]=t[j];
            }
        }
        if(i!=0){
            jiang[jiangint(t,zhong)-1]++;
        }
    } 
    for(int i=6;i>=0;--i){
        cout<<jiang[i]<<" ";
    }
    return 0;
}                            

{ \textcolor{green} {\textbf {达成成就:逃出大楼!}}}

系统恢复了正常。\ "呼!"小白松了一口气。\ 前面出现了一扇大门。\ "出口"\ "出去了!"小白开心得叫道。\ 结果大门上出现了字:\ "请让屏幕显示出数字!"\ \ \ 又来到编程题了,来打开大门吧!\ \ 【解题环节】 \ dakai\ \ \ \ \ \ \ 相信你已经做完了,成功打开了大门,逃出大楼!\ \ 答案:

  #include<iostream>
#include<string>
using namespace std;
string z[10][5]={  {"XXX","X.X","X.X","X.X","XXX"},
               {"..X","..X","..X","..X","..X"},
               {"XXX","..X","XXX","X..","XXX"},
               {"XXX","..X","XXX","..X","XXX"},
               {"X.X","X.X","XXX","..X","..X"},
               {"XXX","X..","XXX","..X","XXX"},
               {"XXX","X..","XXX","X.X","XXX"},
               {"XXX","..X","..X","..X","..X"},
               {"XXX","X.X","XXX","X.X","XXX"},
               {"XXX","X.X","XXX","..X","XXX"}
                };
int n;
char a[220];
int main(){
    cin>>n;
    for(int i=0;i<n;i++){
        cin>>a[i];
    }
    for(int i=0;i<5;i++){
        for(int j=0;j<n;j++){
            cout<<z[a[j]-'0'][i];
            if(j!=n-1){
                cout<<'.';
            } 
        }
        cout<<endl;
    }
    return 0;
}

第六章 出现恶龙

一开大门,眼前是一头高百米的恶龙。眼睛布满血丝。\ "a"小白叫道。\ 恶龙吼了一声,直冲小白扑来。\ "A!!!"\ 你随即拿出宝箱里的东西:"剑"。\ 一下子把龙砍死了,尸体轰然倒地。\ 剑也破了,碎了一地。\

第一季完结啦!历经整整七十天!\ 【编的时候是960行,字数统计:14582 字符】接下来请看:\ [小白之旅2](https://www.luogu.com.cn/article/1smad3xu) # 完结! 第一季