xt6-16.cpp
上传用户:liubin
上传日期:2022-06-13
资源大小:85k
文件大小:2k
源码类别:

书籍源码

开发平台:

Visual C++

  1. #include <iostream>
  2. using namespace std;
  3. int main()
  4. {char str[50],*pstr;
  5.  int i,j,k,m,e10,digit,ndigit,a[10],*pa;
  6.  cout<<"input a string:"<<endl;
  7. gets(str);
  8. cout<<endl;
  9. pstr=&str[0];    //字符指针pstr指向数组str首元素 
  10. pa=&a[0];        //指针pa指向a数组首元素
  11. ndigit=0;        //ndigit代表有多少个整数 
  12. i=0;             //i代表字符串中的第几个字符/
  13. j=0;             //j代表连续数字的位数 
  14. while(*(pstr+i)!='')
  15.  {if((*(pstr+i)>='0') && (*(pstr+i)<='9'))
  16.     j++;
  17.   else
  18.    {if (j>0)
  19.      {digit=*(pstr+i-1)-48;          //将个数位赋予digit
  20.       k=1;
  21.       while (k<j)     //将含有两位以上数的其它位的数值累计于digit
  22.        {e10=1;
  23.         for (m=1;m<=k;m++)
  24.         e10=e10*10;                  //e10代表该位数所应乘的因子
  25.         digit=digit+(*(pstr+i-1-k)-48)*e10;  //将该位数的数值累加于digit
  26.         k++;                         //位数k自增
  27.        }
  28.       *pa=digit;                     //将数值放在数组a中
  29.       ndigit++;
  30.       pa++;                         //指针pa指向a数组下一元素
  31.       j=0;
  32.      }
  33.    }
  34.   i++;
  35.  }
  36.  if (j>0)                         //以数字结尾字符串的最后一个数据
  37.   {digit=*(pstr+i-1)-48;          //将个数位赋予digit
  38.    k=1;
  39.    while (k<j)          // 将含有两位以上数的其它位的数值累加于digit
  40.     {e10=1;
  41.      for (m=1;m<=k;m++)
  42.        e10=e10*10;            //e10代表位数所应乘的因子
  43.      digit=digit+(*(pstr+i-1-k)-48)*e10;  //将该位数的数值累加于digit
  44.      k++;  /*位数K自增*/
  45.     }
  46.    *pa=digit;                 //将数值放到数组a中
  47.    ndigit++;
  48.    j=0;
  49.   }
  50.   printf("There are %d numbers in this line. They are:n",ndigit);
  51.   j=0;
  52.   pa=&a[0];
  53.   for (j=0;j<ndigit;j++)            //打印数据
  54.     cout<<*(pa+j)<<endl;
  55.   cout<<endl;
  56.   return 0;
  57. }