字符数字混合读入方法
远闻钱班同学算法课作业的奇怪输入格式,特此写一遍博客简单叙述一下自己的浅薄见解。
输入共包括若干个字母/数字,中间用空格分隔,换行代表输入结束。其中数字可能为多位数,字母仅为单个字符。样例如下:
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;
}

浙公网安备 33010602011771号