提取 字符串中 数字

来源:互联网 发布:初中全程辅导软件下载 编辑:程序博客网 时间:2024/05/16 16:00
#include<stdio.h>#include <stdlib.h>#include <string.h>void main(){    char c[100];        int find=0;    int i=0,l;//'    char te[50][50];        int flag=0,num=0;//行列    int stop=1;//是否为字母记号        int temp=0,mark=0;//行,列        printf("请输入一含有数字的字符串:\n");    gets(c);    l=strlen(c);    while(1)//判断字符串中是否有字符数字,有则执行下一步,没有则重新输入    {        while(l)        {            if(c[l]>='0'&&c[l]<='9')//判断是否含有数字字符            {                find=1;                break;            }            l--;        }        if(find)            break;//有数字则退出循环        else            printf("没有数字!!! 请重新输入:\n");        gets(c);//没有则重新出入        l=strlen(c);                }            l=strlen(c);    printf("字符串长度为:%d\n",l);    for(i=0;i<l;i++)//遍历数组    {        if(c[i]>='0' && c[i]<='9'|| c[i]=='.'|| c[i]=='-')        {            te[flag][num]=c[i];            num++;            stop=0;            te[flag][num]='\0';            if(c[i]=='-'&&c[i-1]>='0' && c[i-1]<='9')            {                te[flag][num-1]='\0';                flag++;                te[flag][0]='-';                num=1;            }                   }        else if(stop==0)        {            te[flag][num]='\0';            flag++;            num=0;            stop=1;        }        te[flag][num]='\0';            }             for(i=0;i<=flag;i++)//输出     {          mark=0;          for(temp=0;te[i][temp]!='\0';temp++)          {           if(te[i][temp]=='.')            {                 printf("%f\n",atof(te[i]));                mark=1;            }          }          if(mark==0)          printf("%d\n",atoi(te[i]));     }    }

以下为别人代码,非原创

地址:http://www.jb51.net/article/41046.htm

#include<iostream>using namespace std;int main(){    int a[30]={0};    char str[200];    cout<<"请输入一个含有数字的字符串\n"<<endl;    cin>>str;    bool flag=0;    int i=0,j=0;    int s=0;    int num=strlen(str);    cout<<"\n你一共输入了:"<<num<<"个字符"<<endl;    for(i=0;i<num;){        while(str[i]>='0' && str[i]<='9' &&i<num ){            s=s*10+int(str[i])-int('0');            i++;            flag=1;        }        if(flag==1){            a[j++]=s;            s=0;            flag=0;        }        i++;    }    i=0;    cout<<"\n其中共"<<j<<"个数字\n"<<endl;    while(i<j){        cout<<a[i]<<endl;        i++;    }    cout<<endl;    return 0;}

另一个

地址:http://wenku.baidu.com/view/416aa95f58f5f61fb636661d

#include<stdio.h>#include"string.h"#define false 0#define true 1void main(){    char c[100];    int find=0;    int j;    int sum[30],num[50],i=0,l,s=0,N=1,g=0;    printf("请输入一含有数字的字符串:\n");    gets(c);    l=strlen(c);    while(1)//判断字符串中是否有字符数字,有则执行下一步,没有则重新输入    {        while(l)        {            if(c[l]>='0'&&c[l]<='9')//判断是否含有数字字符            {                find=1;                break;            }            l--;        }        if(find)            break;//有数字则退出循环        else            printf("没有数字!!! 请重新输入:\n");        gets(c);//没有则重新出入        l=strlen(c);                }    l=strlen(c);    printf("字符串长度为:%d\n",l);    for(i=0;i<l;i++)//转换为数字    {                    if((c[i]>='0')&&(c[i]<='9'))         {             sum[s++]=c[i]-48;//单个字符数字转换为数字             N*=10;             if(c[i+1]<='0'||c[i+1]>='9'||c[i+1]=='\0')//判断下一个字符是否为字符数字,不是则执行下一步,即是否是一个连续的数             {                 num[g]=0;                 N/=10;                 for(j=0;j<s+1;j++)//连起来的数字转为一个整数                 {                     sum[j]*=N;                     N/=10;                     num[g]+=sum[j];                 }                 g++;//记录字符串中数字串的个数                 s=0;//用于sum[30]重新存储下个字符数字                 N=1;//用于字符数字转为数字             }         }    }    printf("字符中的数字个数有%d个\n",g);    printf("字符中的数字分别为:\n");    for(i=0;i<g;i++)//输出结果        printf("%d\t",num[i]);    printf("\n");       getchar();    getchar();}



0 0
原创粉丝点击