首页 > 编程语言 > 详细

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

时间:2017-08-03 21:05:44      阅读:2456      评论:0      收藏:0      [点我收藏+]

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

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!