统计字符串中接续数字字符组成的整数的个数
统计字符串中连续数字字符组成的整数的个数
输入一个字符串,内有数字和非数字字符,将其中连续的数字作为一个整数,依次存放到一个数组中。统计共有多少个整数,并输出这些数。
代码
#include<stdio.h> int main() { char str[50],*pstr; int i=0,j=0,k,m,e10,digit,ndigit=0,a[10],*pa; printf("Please enter a string: "); gets(str); pstr=&str[0];/*字符串指针指向字符串首地址*/ pa=&a[0];/*数字指针指向数组首地址*/ while(*(pstr+i)!='\0') { if((*(pstr+i)>='0')&&(*(pstr+i)<='9'))/*如果是数字,则开始计数*/ j++; else { if(j>0)/*当上一个字符是数字,当前字符是非数字时*/ { digit=*(pstr+i-1)-48;/*先计算出最后一个数字*/ k=1; while(k<j)/*依次计算其他位上的数字*/ { e10=1; for(m=1;m<=k;m++)/*按照数字应有的位置乘以相应的幂次方*/ e10*=10; digit+=(*(pstr+i-1-k)-48)*e10; k++; } *pa=digit;/*将本次计算出来的数字存入数组*/ ndigit++;/*数字个数增1*/ pa++; j=0; } } i++;/*字符串指针往后移动一位*/ } if(j>0)/*如果字符串是以数字结束的*/ { digit=*(pstr+i-1)-48; k=1; while(k<j) { e10=1; for(m=1;m<=k;m++) e10*=10; digit+=(*(pstr+i-1-k)-48)*e10; k++; } *pa=digit; ndigit++; j=0; } printf("There are %d numbers in this line,they are:\n",ndigit); j=0; pa=&a[0]; for(j=0;j<ndigit;j++)/*输出数字*/ printf("%d ",*(pa+j)); printf("\n"); return 0; }