1. 程式人生 > >10.16輸入一個字符串,內有數字和非數字字符,如: a123x456 17960? 302tab5876 將其中連續的數字作為一個整數,依次存放到一數組num中。例如123放在num[0]中,456放在num[1]中……統計共有多少個整數,並輸出這些數。

10.16輸入一個字符串,內有數字和非數字字符,如: a123x456 17960? 302tab5876 將其中連續的數字作為一個整數,依次存放到一數組num中。例如123放在num[0]中,456放在num[1]中……統計共有多少個整數,並輸出這些數。

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]中……統計共有多少個整數,並輸出這些數。