編程訓練_字典_字符串

題目描述:python

 描述
定義一個字符串序列 s[1]="1",s[2]="2", ..., s[n] = 數字 n 轉化成字符串後的結果

輸出 s[1] 到 s[n] 中,(字典序)最大的那個字符串

輸入
輸入包含多組數據。

每組數據輸入一行一個整數 n(n<=1e6)。

輸入以 n=0 結束。
輸出
對於每組數據,輸出一行一個整數表示答案
樣例輸入
9
19
871
0
樣例輸出
9
9
99

關鍵點:數組

把數字轉化爲字符串,而後按照字典的順序輸出最大值

本人代碼:spa

#include <stdio.h> 
# define Max 7 
int main(void)
{
	int a, temp, head;
	int A[Max+1] = {0}; 
	scanf("%d",&a);
	
	while (a !=0 )
	{
		int A[Max+1] = {0}; 
		int len = 0;
		int i = Max;
		// 轉化爲數組
		while(a > 0)
		{
			temp = a%10;
			A[i] = temp;
				
			if (A[i] != 0)
			{
				len++;
			}
			i--;
			a /= 10;
			head = i+1;	// 求出第一位不爲零的位置 
		} 
		
		// 判斷字典數最大的值 
		// 若只有一位,則直接輸出
		if (len == 1)
		{
			printf("%d\n",A[Max]);
		 } 
		// 若大於1位,且最高位不爲9,則輸出len-1位9
		else if (A[head] != 9 && len!=1)
		{
			for (i=1; i<len; i++)
			{
				printf("9");
			}
			printf("\n");
		 } 
		// 若 大於一位,且最高位爲9,則輸出最高位,以後再判斷次高位 
		else if (A[head] == 9 && len!=1)
		{	
			for (i=head; i<=Max; i++)
			{
				printf("%d",A[i]);
			}
			printf("\n");
		}
		scanf("%d",&a);	
	}

	return 0;
}
相關文章
相關標籤/搜索