10.16輸入一個字符串,內有數字和非數字字符,如: a123x456 17960? 302tab5876 將其中連續的數字作為一個整數,依次存放到一數組num中。例如123放在num[0]中,456放在num[1]中……統計共有多少個整數,並輸出這些數。
阿新 • • 發佈:2017-08-03
tab lnp zip sm2 cuc ycm rds qt5 tft
10.16輸入一個字符串,內有數字和非數字字符,如:
a123x456 17960? 302tab5876
將其中連續的數字作為一個整數,依次存放到一數組num中。例如123放在num[0]中,456放在num[1]中……統計共有多少個整數,並輸出這些數。
#include <stdio.h> int main(){ void search(char * parr, int * pnum); char arr[100],* parr; int num[30],* pnum; parr=arr; pnum=num; printf("請輸入一個包含數字的字符串\n"); gets(arr); //統計字符串中整數的個數(連續數字作為一個整數),並放到一個數組中 search(parr, pnum); return 0; } void search(char * parr, int * pnum){ int i=0,j=0,x=0; while( *(parr+i) !=‘\0‘ ){ if(*(parr+i) >= ‘0‘ && *(parr+i) <= ‘9‘ ) j++;//j表示數字的位數 else if(j>0){//碰到字母,並且之前的是數字 int digit,k,m,e10; digit = * (parr+i-1)-48; //個位上的值 k=1; while(k<j){ //整數的位數大於1的話 e10=1; for(m=1; m<=k; m++){ e10=10*e10; } digit+= (* (parr+i-1-k)-48)*e10; k++; } *(pnum+x)=digit; x++; j=0; } i++; } //如果字符串末尾是數字的話,需要在while循環外邊判斷 if(j>0){ int digit,k,m,e10; digit = * (parr+i-1)-48; //個位上的值 k=1; while(k<j){ //整數的位數大於1的話 e10=1; for(m=1; m<=k; m++){ e10=10*e10; } digit += (* (parr+i-1-k)-48)*e10; k++; } *(pnum+x)=digit; x++; } printf("該字符串共有%d個整數,分別為:\n",x); for(i=0; i<x; i++){ printf("%-8d",*(pnum+i)); } printf("\n"); }
結果:
10.16輸入一個字符串,內有數字和非數字字符,如: a123x456 17960? 302tab5876 將其中連續的數字作為一個整數,依次存放到一數組num中。例如123放在num[0]中,456放在num[1]中……統計共有多少個整數,並輸出這些數。