字符数字混合读入方法

远闻钱班同学算法课作业的奇怪输入格式,特此写一遍博客简单叙述一下自己的浅薄见解。

输入共包括若干个字母/数字,中间用空格分隔,换行代表输入结束。其中数字可能为多位数,字母仅为单个字符。样例如下:

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;
}
posted @ 2021-09-17 00:17  Swzhao  阅读(452)  评论(0)    收藏  举报