P1427

· · 题解

呵呵呵呵,也是无语了,上次发的题解审核不通关,这次再发一个,我发现各位大佬的题解对萌新很不友好,所以我打算发发题解支持胡管喔

本题编号P1427---‘小鱼的数字游戏’

呵呵,这题还怪…难的,好吧也不算难,只是代码有一点多呀!

**先看题干↓**

题目描述

小鱼最近被要求参加一个数字游戏,要求它把看到的一串数字 ai(长度不一定,以 0 结束),记住了然后反着念出来(表示结束的数字 0 就不要念出来了)。这对小鱼的那点记忆力来说实在是太难了,你也不想想小鱼的整个脑袋才多大,其中一部分还是好吃的肉!所以请你帮小鱼编程解决这个问题。

//题目描述还怪幽默的!

输出与输入

一行内输入一串整数,以 0 结束,以空格间隔。

一行内倒着输出这一串整数,以空格间隔。

注意:数字个数不超过 100!!!

好的直接分析好吧↓

首先数组嘛… 可以用vector容器呀!

先定义2个vector容器a和b!定义大小—reserve()↓

#include <bits/stdc++.h>//万能头,包含vector,下面写了只是提醒一下。
#include <vector>//头文件
using namespace std;
int main(){
    vector <int> a;//定义一个vector容器
    vector <int> b;//这个是为了存倒序的a数组
    a.reserve(101);//定义大小
    int k,c;//后面要用k,c两变量

好了,现在用for循环遍历输入!再在循环里判断a[i]是否为0若果是的,便将c赋值为i-1,k也是的,在这里直接把k赋值为C,然后break——因为前面将a设置为了101的大小,如果不停止,输出会有问题。

for(int i = 0;i<=100;i++){
    cin >> a[i];
    if(a[i] == 0){
        c = i-1;
        k = c;
        break;//如果if成立,停止for循环。
    }
}

接下来就要倒序输出了,老样子,for循环!直接让k--,然后输出a[k],好了,直接return 0;完美散花收场!

完整代码(重头戏)↓

#include <bits/stdc++.h>//万能头,包含vector,下面写了只是提醒一下。
#include <vector>//头文件
using namespace std;
int main(){
    vector <int> a;//定义一个vector容器
    vector <int> b;//这个是为了存倒序的a数组
    a.reserve(101);//定义大小
    int c,k;
    for(int i = 0;i<=100;i++){
        cin >> a[i];
        if(a[i] == 0){
            c = i-1;
            k = c;
            break;//如果if成立,停止for循环。
        }
    }
    for(int j = 0;j<=c;j++){
        cout << a[k] << " ";
        k--;
    }
    return 0;//拜拜,求赞。
}