问答题 输入一个字符串,内有数字和非数字字符,如:ak123x456 1 79607302gef4563,将其中连续的数字作为一个整体,依次存放到一数组口中,例如123放入a[0],456放入a[1],……编程统计其共有多少个整数,并输出这些数。【上海大学1998一(13分)】
【正确答案】正确答案:核心是如何将数从字符串中分离出来。从左到右扫描字符串,初次碰到数字字符时,作为一个整数的开始。然后进行拼数,即将连续出现的数字字符拼成一个整数,直到碰到非数字字符为止,一个整数拼完,存入数组,再准备下一整数,如此下去,直至整个字符串扫描到结束。核心语句段如下: while(ch!=‘#’) //"#"是字符串结束标记,字符ch已输入 if(isdigit(ch)) //是数字字符 num=0; //数初始化 while(isdigit(oh)&&ch!=’抖’) //拼数 num=num*10+’ch一‘0’; cin>>ch; } a[i++]=num;lli是整数个数,初值是0 if(ch!=-#’)cin>>ch;; //若拼数中输入了"#",则不再输入 } else cin>>ch; //输入非数字且非#时,继续输入字符
【答案解析】