遠聞錢班同學算法課作業的奇怪輸入格式,特此寫一遍博客簡單敘述一下自己的淺薄見解。
輸入共包括若干個字母/數字,中間用空格分隔,換行代表輸入結束。其中數字可能為多位數,字母僅為單個字符。樣例如下:
9 a 3 b c 61 54 z 813
對於字母數字混合的形式,考慮逐個字符讀入。while循環,每次讀入一個字符,若為空格,則忽略;若為換行則break;若為字母,則將字母存儲后繼續進行while循環;若為數字,考慮到數字可能為多位,我們繼續讀入字符,直到讀入的字符不是數字,根據讀到的所有數字位計算數字的值即可。
const int N=100;
int a[N],n;
char b[N],m;
int main()
{
char ch=getchar();
while(ch!='\n')
{
if('0'<=ch&&ch<='9')
{
int x=0;
while('0'<=ch&&ch<='9')
x=(x<<1)+(x<<3)+ch-'0',ch=getchar();
a[n++]=x;
}
else if(('a'<=ch&&ch<='z')||('A'<=ch&&ch<='Z'))
b[m++]=ch,ch=getchar();
else ch=getchar();
}
for(int i=0;i<n;i++)
cout<<a[i]<<",";
cout<<endl;
for(int i=0;i<m;i++)
cout<<b[i]<<",";
return 0;
}
