題目要求:隨機產生70個字符放在一個數組裡,字符只能是數字或英文字母(一共62個字符),然後用程序將它們重新排序並打印出來。
優先排序規則:數字最優先,字母按照字母表順序,比如 a 優先於 b 打印,但大寫字母優先於小寫字母!
#include
#include
#define MAX 70
#define BIG 62
int temp[BIG];
void main()
{
int arr[MAX];
int i=0,j=0;
for (i=0; i<MAX; i++)
{
arr[i] = rand()%BIG;
}
printf("隨機得到的數值數組如下:\n");
for (i=0; i<MAX; i++)
{
if (arr[i] >= 10 && arr[i] < 36)
printf(" %c",'A'+arr[i]-10);
else if (arr[i] >= 36)
printf(" %c",'a'+arr[i]-36);
else printf(" %c",'0'+arr[i]);
}
printf("\n\n");
for (i=0; i<MAX; i++)
{
temp[arr[i]]++;
}
for (i=0; j<MAX; i++)
{
fuwei:
if (temp[i] > 0)
{
arr[j++] = i;
temp[i]--;
goto
fuwei;
}
}
printf("經過排序後數值數組如下:\n");
for (i=0; i<MAX; i++)
{
if (arr[i] >= 10 && arr[i] < 36)
printf(" %c",'A'+arr[i]-10);
else if (arr[i] >= 36)
printf(" %c",'a'+arr[i]-36);
else printf(" %c",'0'+arr[i]);
}
system("pause");
}
上面是源代碼。下面是運行圖片
題主若有疑問的話,請私信我,謝謝!