字符數字混合讀入方法


遠聞錢班同學算法課作業的奇怪輸入格式,特此寫一遍博客簡單敘述一下自己的淺薄見解。

輸入共包括若干個字母/數字,中間用空格分隔,換行代表輸入結束。其中數字可能為多位數,字母僅為單個字符。樣例如下:

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;
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM