2024-09-10 13:52:08
static void Main(string[] args)
{
// 准备字典,存储键和很多很多值
Dictionary<int, List<string>> dic = new Dictionary<int, List<string>>();
while (true)
{
string str = "01 02 03 04 05 06 07 08 09 10";
Console.WriteLine("请在对应的序号下输入数字。");
Console.WriteLine(str);
string input = Console.ReadLine();
// 输入的字符串转成数组。array:输入的字符串转成数组。strnum:展示的字符串转换成的数组。
string[] array = input.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
string[] strnum = str.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
if (array.Length == strnum.Length)
{
int i;
for (i = 0; i < strnum.Length; i++)
{
int temp;
// 强转成整数
if (int.TryParse(array[i], out temp))
{
// 将重复的序号加到字典已存在输入数字项中
if (dic.ContainsKey(temp))
{
dic[temp].Add(strnum[i]);
}
else// 否则就是向字典中添加一项
{
dic.Add(temp, new List<string>() { strnum[i] });
}
}
else
{
break;
}
}
// 终止判断,是否符合条件,如果符合,跳出死循环,接着后续工作
if (i == strnum.Length)
{
break;
}
else
{
Console.WriteLine("非法的整数。");
}
}
else
{
Console.WriteLine("长度不符合要求。");
}
}
// 获取输入数字(不含重复项)的数组
List<int> list = new List<int>();
foreach (int k in dic.Keys)
{
list.Add(k);
}
int[] intArray = list.ToArray();
// 升序算法
for (int i = 0; i < intArray.Length; i++)
{
for (int j = 0; j < intArray.Length-1; j++)
{
int temp;
if (intArray[j] > intArray[j + 1])
{
temp = intArray[j];
intArray[j] = intArray[j + 1];
intArray[j + 1] = temp;
}
}
}
// 读取输入数字的数组,并从字典中找到对应的序号
for (int i = 0; i < intArray.Length; i++)
{
List<string> temp = new List<string>();
foreach (KeyValuePair<int,List<string>> k in dic)
{
if (intArray[i] == k.Key)
{
temp.AddRange(k.Value.ToArray());
}
}
// 数组的输出只能靠循环来做
StringBuilder sb = new StringBuilder();
for (int z = 0; z < temp.ToArray().Length; z++)
{
int t = Convert.ToInt32(temp.ToArray()[z]);
sb.Append((t > 9 ? t.ToString() : "0" + t) + " ");
}
Console.WriteLine("{0}:{1}", intArray[i], sb.ToString());
}
Console.ReadKey();
}
2024-09-10 06:13:05
2024-09-10 17:31:41
能写个具体程序吗?或发给我也行
是这样的结果吗
发来看看,没看明白怎么有两个22:1,把程序给我试试
请先采纳,然后私信
我是初学者,能把编好的传给我吗?方便一个个看怎么编的。
#include<iostream>
using namespace std;
int main()
{
int n;
cin >> n;
int* a=new int[n];
int* order=new int[n];
for(int i=0; i<n; i++)
{
cin >> a[i];
order[i]=0;
}
int eqNum=0;
for(int ord=1; ord+eqNum<=n; ord++) {
int first=0;
while(order[first]!=0) first++;
int min=a[first], minAt=first;
for(int j=first+1; j<n; j++) {
if(order[j]!=0) continue;
if(a[j]<min) { min=a[j]; minAt=j; }
}
int ord0=ord;
order[minAt]=ord0;
for(int k=minAt+1; k<n; k++) {
if(a[k]==min) { order[k]=ord0; eqNum++; }
}
}
for(int i=0; i<n; i++) {
if(i>=0) cout << "\n";
cout << a[i]<< " : " << order[i];
}
}