【7】 (程序设计)编写一个程序。要求输入一个5位正整数,然后分解出它的每位数字,并将这些数字按间隔2个空格的逆序形式打印输出。例如,用户输入42339,则程序输出如下结果: 9 3 3 2 4

编写一个程序。要求输入一个5位正整数,然后分解出它的每位数字,并将这些数字按间隔2个空格的逆序形式打印输出。例如,用户输入42339,则程序输出如下结果:
9 3 3 2 4

#include <iostream>
using namespace std;

int main() {
    int num;
    cin >> num;
    int arr[5];
    int i = 0;
    while (num > 0) {
        arr[i] = num % 10;
        num /= 10;
        i++;
    }
    for (int j = 4; j >= 0; j--) {
        cout << arr[j] << "  ";
    }
    cout << endl;

    return 0;
}

你想问什么?如果是思路的话,你的问题已经说了,分解出个十百千万位的数字然后再计算。

你可以这样写

#include <iostream>
#include <string>
using namespace std;
int main()
{
    string num;
    cout << "请输入一个5位正整数:";
    cin >> num;  // 输入数字
    for (int i = num.length() - 1; i >= 0; i--) {
        cout << num[i] << "  ";  // 每个数字之间隔2个空格
    }
    cout << endl;
    return 0;
}

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7536519
  • 这篇博客也不错, 你可以看下给一个不多于5位的正整数,要求:①求出它是几位数;②分别输出每一位数字;③按逆序输出各位数字,例如原数为321,应输出123
  • 除此之外, 这篇博客: 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。中的 例如输入一个长度为 9 的数组 {1,2,3,2,2,2,5,4,2}。由于数字 2 在数组中出现了 5 次,超过数组长度的一半,因此输出 2。如果不存在则输出 0。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    遍历统计,记录每个元素出现的次数,然后找出出现次数超过一半的那个数

    int traverseEach(int *array,int number) {
         
        int *tempArray = (int *)malloc(sizeof(int)*(number / 2 + 1) * 2);
         
        //全部初始化为0
        for (int i = 0; i < number * 2; i ++) {
            tempArray[i] = 0;
        }
         
        int maxNumber = 0;
        int returnValue = 0;
        int maxCount = 0;
        int tempIndex = 0;
         
        for (int i = 0; i < number; i ++) {
             
            tempIndex = 0;
            if (maxCount == 0) {
                //初始化一下
                tempArray[maxCount] = array[i];
                tempArray[number + i] = 1;
                maxCount = 1;
            } else {
                //
                for (; tempIndex < maxCount; tempIndex ++) {
                    if (tempArray[tempIndex] == array[i]) {
                        tempArray[number + tempIndex] += 1;
                        break;
                    }
                }
                if (tempIndex == maxCount) {
                    //新的
                    tempArray[tempIndex] = array[i];
                    tempArray[number + tempIndex] += 1;
                    maxCount += 1;
                }
            }
             
            if (maxNumber < tempArray[number + tempIndex]) {
                maxNumber = tempArray[number + tempIndex];
                returnValue = tempArray[tempIndex];
            }
        }
         
        free(tempArray);
        //检验是否大于一半
        if (maxNumber <= number/2) {
            returnValue = 0;
        }
        return returnValue;
    }
    

    这里是用 C 实现


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^