鱼C论坛

 找回密码
 立即注册
查看: 2908|回复: 9

[已解决]帮忙看看一道数组简单题

[复制链接]
发表于 2022-4-15 02:13:17 | 显示全部楼层 |阅读模式
5鱼币
题目是:输入一个整数K,然后再输入K个整数。要求把这K个整数装进一个数组,然后选出其中的偶数,按照数组编号的倒叙输出,最后再输出偶数的个数N。
eg.
input:5 3 6 4 2 1
output:2 4 6 3

以下是我写的程序,没找到问题在哪,所以来求助qaq

#include<iostream>

using namespace std;

int main()
{
        int n;
        cin>>n;//之后要接收n个整数
        int a[n];//接收input的数组
        int save[]={0};//存放偶数的数组
        int save_count=0;//用来充当偶数数组索引&计数偶数个数的变量
       
        for(int i=0;i<n;i++)
        {
                cin>>a[i];
                if(a[i]%2==0)//如果是偶数,那就装进save[]数组中,并且save_count++
                {
                        save[save_count]=a[i];
                        save_count++;
                }
        }
       
        for(int i=save_count-1;i>=0;i--)//设计的倒叙输出
        {
                cout<<save[i];
        }
       
        cout<<save_count;//输出偶数个数
       
        return 0;
}
最佳答案
2022-4-15 02:13:18
不定长数组就选用 vector,是 C++ 特有的动态数组类型,类似于 Python 的列表一样,可变长数组:
#include <iostream>
#include <vector>

using std::cin, std::cout, std::endl, std::vector;

int main() {
        int K, N = 0, num;
        vector<int> arr; // 这里用 vector,STL vector 是可变长的动态数组
        cin >> K;
        while (K--) {
                cin >> num;
                arr.push_back(num); // 把这 K 个整数装进一个数组
        }
        for (vector<int>::iterator p = arr.end() - 1; p != arr.begin(); p--) { // 然后选出其中的偶数,按照数组编号的倒叙输出
                if (!(*p & 1)) {
                        cout << *p << " ";
                        N++;
                }
        }
        cout << N << endl; // 最后再输出偶数的个数N
        return 0;
}

最佳答案

查看完整内容

不定长数组就选用 vector,是 C++ 特有的动态数组类型,类似于 Python 的列表一样,可变长数组:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-4-15 02:13:18 | 显示全部楼层    本楼为最佳答案   
不定长数组就选用 vector,是 C++ 特有的动态数组类型,类似于 Python 的列表一样,可变长数组:
#include <iostream>
#include <vector>

using std::cin, std::cout, std::endl, std::vector;

int main() {
        int K, N = 0, num;
        vector<int> arr; // 这里用 vector,STL vector 是可变长的动态数组
        cin >> K;
        while (K--) {
                cin >> num;
                arr.push_back(num); // 把这 K 个整数装进一个数组
        }
        for (vector<int>::iterator p = arr.end() - 1; p != arr.begin(); p--) { // 然后选出其中的偶数,按照数组编号的倒叙输出
                if (!(*p & 1)) {
                        cout << *p << " ";
                        N++;
                }
        }
        cout << N << endl; // 最后再输出偶数的个数N
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-4-15 06:25:32 From FishC Mobile | 显示全部楼层
貌似老编译器不接受int a[n];//接收input的数组
这样写法,这属于动态数组
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-4-15 09:40:25 | 显示全部楼层
本帖最后由 jhq999 于 2022-4-15 09:48 编辑
#include<iostream>

using namespace std;

int main()
{
        int n;
        cin>>n;//之后要接收n个整数
        int a[n];//接收input的数组
       // int save[]={0};///////////////////////////////////////////////////////没必要用动态数组
        int save_count=0;//用来充当偶数数组索引&计数偶数个数的变量
       
        for(int i=0;i<n;i++)
        {
                cin>>a[save_count];///////////////
                if(a[save_count]%2==0)/////////确定一个偶数下标加一
                {
                        ///////////////////////save[save_count]=a[i];
                        save_count++;
                }
        }
       
        for(int i=save_count-1;i>=0;i--)//设计的倒叙输出
        {
                cout<<a[i];/////////////////////
        }
       
        cout<<save_count;//输出偶数个数
       
        return 0;
}
#include<iostream>

using namespace std;

int main()
{
        int n;
        cin>>n;//之后要接收n个整数
        int a[n];//接收input的数组
       // int save[]={0};///////////////////////////////////////////////////////没必要用动态数组
        int save_count=0;//用来充当偶数数组索引&计数偶数个数的变量
       
        for(;n>0;n--)
        {
                cin>>a[save_count];///////////////
                if(a[save_count]%2==0)/////////确定一个偶数下标加一
                {
                        ///////////////////////save[save_count]=a[i];
                        save_count++;
                }
        }
       
        for(n=save_count-1;n>=0;n--)//设计的倒叙输出
        {
                cout<<a[n];/////////////////////
        }
       
        cout<<save_count;//输出偶数个数
       
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-4-15 12:04:40 | 显示全部楼层
傻眼貓咪 发表于 2022-4-15 09:43
不定长数组就选用 vector,是 C++ 特有的动态数组类型,类似于 Python 的列表一样,可变长数组:

啊,这个还没有学过耶,有没有办法修改一下我本来的程序,让他变得可行呀...我觉得我的思路很简单呀,选出偶数装进另一个数组,这一步不好实现吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-4-15 12:06:25 | 显示全部楼层

请问是int a[n]是动态数组,还是int save[]是呀。这样做的问题是什么呀..感谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-4-15 12:16:08 | 显示全部楼层
本帖最后由 jhq999 于 2022-4-15 12:17 编辑
猫皇 发表于 2022-4-15 12:06
请问是int a[n]是动态数组,还是int save[]是呀。这样做的问题是什么呀..感谢!

都是,我说错了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-4-15 12:17:21 | 显示全部楼层
其实我的这个程序是可以运行的。
比如我输入5 1 2 3 4 5
他是可以输出4 2 2的
但是问题在于我也不知道为什么,有的就不对
比如输入5 2 4 6 8 10
他就会卡死在那里
还有比如输入10 1 2 3 4 5 6 7 8 9 4
输出的是8 6 4 2 4
最后一个输入的4不见了
问题到底在哪啊,是动态数组的问题吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-4-15 15:07:15 | 显示全部楼层
猫皇 发表于 2022-4-15 12:17
其实我的这个程序是可以运行的。
比如我输入5 1 2 3 4 5
他是可以输出4 2 2的

刚才用静态数组试了一下,没有问题

要不然你麻烦一点用
int *a=(int*)malloc(n*sizeof(int));
别忘了不用了free(a);
或者vs里用int *a=new int[[n];
别忘了不用了delete[] a;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-4-15 16:46:06 | 显示全部楼层
  int save[]={0};//存放偶数的数组
这个地方有问题,这个数组只能存储一个元素
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-17 22:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表