码迷,mamicode.com
首页 > 编程语言 > 详细

10.16输入一个字符串,内有数字和非数字字符,如: a123x456 17960? 302tab5876 将其中连续的数字作为一个整数,依次存放到一数组num中。例如123放在num[0]中,456放在num[1]中……统计共有多少个整数,并输出这些数。

时间:2017-08-03 22:12:53      阅读:545      评论:0      收藏:0      [点我收藏+]

标签:phi   vda   get   dag   br0   zll   nbsp   bin   print   

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]中……统计共有多少个整数,并输出这些数。

标签:phi   vda   get   dag   br0   zll   nbsp   bin   print   

原文地址:http://www.cnblogs.com/Allen-win/p/7281514.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!