每日一记,声明下,代码是借鉴大神的,只是自己做了一下自己的分析,本意也是为了加深对代码编写的能力,希望能对大家有益:
分析:
首先用一个十维的数字存放每个数字的个数
循环从第一个开始输出最小的数(首位不得为零)
循环从零开始输出
由于第一个数字已经输出,所以接下来应将对应的数字个数减去一个
循环直接从第一个数字往后遍历,依次输出数字
#include<iostream>
using namespace std;
int main()
{
int a[10], t;
for (int i = 0;i < 10;i++)
cin >> a[i];//将输入数字存放在数组中
for (int i = 1;i < 10;i++) {
if (a[i] != 0) {
cout << i;
t = i;
break;//注意,输出首位后应停止向后遍历
}
}
for (int i = 0;i < a[0];i++) //存在零的话就将零放在首位后依次输出
cout << 0;
for (int i = 0;i < a[t] - 1;i++)//首位非零,输出最小的数字,减去一位,把剩下的输出去
cout << t;
for (int i = t + 1;i < 10;i++)// 为了高效,紧接着下个位置遍历
for (int k = 0;k < a[i];k++)
cout << i;
system("pause");//可有可无,功能是停留在结果上便于观察。
return 0;
}