谭浩强第四版292页作业16

来源:互联网 发布:尼康d5300佳能750d知乎 编辑:程序博客网 时间:2024/05/17 09:27
/*
292页16题
功能: 输入一个字符串,内在数字和非数字字符,例如
       A123x456 17960?302tab5876
    将其中连续的数字作为一个整数,依次存放到一个数组a中。
*/
#include "iostream"
using namespace  std;
int main()
{
 int j=0,k=0,i=0,f=0;//j是b数组的下标,b数组用于临时接收数字字符串,k是a数组的下标,最终存放数字的二维数组,f是标志,数字为1,非数值为0
 char a[10][10];//最终接收数组用的
 char *juzi="A1 2 3x456 17 960?3 02tab5 876";//实例标本
 char *q=juzi;//q实例副本
 char *tou=NULL;  //指向数字开始的地方
 char *wei=NULL;//指向数字结束的地方
 char b[10];//临时中转数字字符
 char *temp;
 tou=wei;
 while(*q!='\0')
 {
  if(*q>='0' && *q<='9')
  {
   if(f==0)
   {
    tou=wei=q;
    f=1;
   }
   else wei++;
  }
  else
  {
   f=0;
   if(tou!=NULL)//考虑连续使用非数字的情况
   {
    for(temp=tou;temp<=wei;temp++)
    {
     b[j++]=*temp;
    }
    b[j]='\0';
    strcpy(a[k++],b);
    j=0;
    tou=wei=NULL;
   }
  }
  q++;
 }
 if(f==1)//考虑数字结尾时,最后一个整数还没有进入a数组中的情况。
 {
  for(temp=tou;temp<=wei;temp++)
  {
   b[j++]=*temp;
  }
  b[j]='\0';
  strcpy(a[k++],b);
 }
 for(i=0;i<k;i++)
  cout<<a[i]<<endl;
 cout<<"共有整数"<<k<<"个";
 getchar();
 return 0;
}
原创粉丝点击