程序打印阵列中的所有数字,向后打印

时间:2015-02-18 04:05:53

标签: c++ arrays

我正在制作一个程序,打印一个数组中的所有数字(以整数形式输入)并且它可以工作,但数字向后打印,我不知道如何反转它们。有人可以帮忙吗?

#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;


void explode(int number,int array[])
{

   while (number > 0) {
      int digit = number % 10;
      cout << digit << '\n';
      number /= 10;
   }
}


int main()
{
   int digits[100];
   int numdigits;

   int n;
   cout << "Enter number: ";
   cin >> n;

   //  numdigits = explode(n,digits);

   cout << "[";
   while (n > 0) {
      int digit = n % 10;
      n /= 10;
      digits[digit] = digit;
      cout << digits[digit];

   }
   cout << "]" << endl;
}

2 个答案:

答案 0 :(得分:1)

您只需使用reverse()中的<algorithm>来反转数组。

代码:

#include <iostream>
#include <iomanip>
#include <algorithm>
#include <cmath>
using namespace std;
int array_c = 0;

void explode(int number,int array[])
{
   while (number > 0) {
      int digit = number % 10;
      number /= 10;
      array[array_c++] = digit;
   }
}


int main()
{
   int digits[100];
   int numdigits;

   int n;
   cout << "Enter number: ";
   cin >> n;

   explode(n,digits);
   reverse(digits,digits+array_c);
   cout << "[";
   for(int i = 0; i < array_c; ++i)
        cout<<digits[i];
   cout << "]" << endl;
}

答案 1 :(得分:0)

您使用

digits[digit] = digit;

不对。你可能想要使用

digits[numdigits] = digit;

您可以通过将工作分为两个步骤来解决问题。在第一步中,存储数字。在第二步中,您将打印数字。

int numdigits = 0;
while (n > 0) {
   cout << "n: " << n << endl;
   int digit = n % 10;
   n /= 10;
   digits[numdigits++] = digit;
}

// Make sure to print them in reverse order.

cout << "[";
for ( ; numdigits > 0; )
{
   cout << digits[--numdigits];
}
cout << "]" << endl;