輸入一個字符串,內有數字和非數字字符,將其中連續的數字作為一個整數,依次存放到一數組a中。統計共有多少個整數,並輸出這些數。


 
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>

int main(){
    setvbuf(stdout,NULL,_IONBF,0);
    char s[255];
    int a[255];            //存放得到的整數
    int i,length;
    int f(char *s,int *a);

    printf("Input the string:");
    gets(s);
    length=f(s,a);
    printf("There are %d numbers.\n",length);
    printf("They are:");
    for(i=0;i<length;i++)
        printf("%d ",a[i]);

    return EXIT_SUCCESS;
}

int f(char *s,int *a){
    char *p;
    int t[255];                //存放一個整數的每位數
    int len=strlen(s);
    int flag=0;                //標記當前字符是否為0-9
    int i=0,j;
    int num=0;                //整數的個數
    for(p=s;p<=s+len;p++)     //把最后的\0字符也當作非數字字符處理
    {
        if(*p>='0'&&*p<='9')
        {
            flag=1;
            t[i++]=*p-'0';    //把字符'0'~'9'裝換為數字0~9
        }
        else if(flag==1)     //如果當前字符非數字字符,且前一個字符為數字字符時,開始記錄整數
        {
            a[num]=0;
            for(j=0;j<i;j++)
                a[num]=a[num]+t[j]*pow(10,i-1-j);

            num++;
            flag=0;
            i=0;
        }
    }
    return num;
}
//如果使用VC,去掉第7行。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM