编写一个程序。要求输入一个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;
}
不知道你这个问题是否已经解决, 如果还没有解决的话:遍历统计,记录每个元素出现的次数,然后找出出现次数超过一半的那个数
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 实现