|
Post by huangno1 on Mar 2, 2017 20:50:17 GMT -8
程式說明
在購買車牌時,很多人喜歡買車牌號碼中有重覆英文字母或數字的。本程式會計算一個車牌號碼中的「最大重覆次數」,並依此估價(價格純屬虛構)。車牌號碼最多七碼,僅包含大寫英文字母和數字。使用者可重覆輸入字串,直到輸入空字串(即直接按下Enter 鍵)才結束程式。重覆次數為 1, 2, 3, 4, 5, 6, 7 的車牌價格分別為 0, 100, 500, 6000, 20000, 50000, 88888。
請撰寫一個函式 MaxRepetitions(),該函式會傳入一個字串,並回傳字串中的最大重覆次數。例如:
MaxRepetitions("ABC123") 回傳 1;
MaxRepetitions("AAC1122") 回傳 2;
MaxRepetitions("AAA") 回傳 1;
MaxRepetitions("1A1B1C1") 回傳 4;(1重覆4次)
MaxRepetitions("123123A") 回傳 2;
MaxRepetitions("9999999") 回傳 7;
【輸入與輸出範例】
ABC123
ABC123 costs $0.
AAC1122
AAC1122 costs $100.
#include <stdio.h>
#include <ctype.h>
int MaxRepetition ( char license [ ] )
{
int count [ 8 ] = { 0 } ;
for ( int i = 0 ; i < 8 ; i++ )
{
if ( license [ i ] == '\0' ) break;
for ( int j = 0 ; j < 8 ; j++ )
{
if ( license [ j ] == '\0' ) break;
if ( license [ i ] == license [ j ] ) count [ i ] += 1 ;
}
}
int Max = count [ 0 ] ;
for ( int i = 1 ; i < 8 ; i++ )
{
if ( count [ i ] > Max ) Max = count [ i ] ;
}
return Max;
}
// ------------------------------------------
int main()
{
int price[]= {0, 0, 100, 500, 6000, 20000, 50000, 88888};
char license[8]= {};
gets(license);
while (license[0] != '\0')
{
printf("%s costs $%d.\n", license,
price [ MaxRepetition ( license ) ]
);
gets(license);
}
return 0;
}
|
|