【C语言】输入一个字符串,内有数字和非数字字符,例如:a123x456 17960? 302tab5876将其中连续的数字作为一个整数,依次存放到一个数组a中。

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

#include <stdio.h>
#include <math.h>
#define N 100                                //N为字符串的长度
int main()
{
 int record(char *p,int q[]);             //声明record函数(记录连续数字,返回值为有效元素个数)
 int a[N],i,k;                            //a[N]为存放连续数字的数组
 char s[N];                    
 gets(s);
 k=record(s,a);                            //k为数组a中有效元素个数 
 printf("共有%d个整数\n分别为:",k);
 for(i=0;i<k;i++) printf("%d ",a[i]);
 return 0; 
}
int record(char *p,int q[])
{
 int number(int x[],int m,int n);         //声明number函数(返回值就是连续的数字的值) 
 int i=0,j=0,l,f[N];                      //f[N]数组记录字符串中出现的数字 
 while (*p!='\0') 
 {
  l=i;                                 //l表示数组q的第j个元素的首位数字在数组f中的起始位置 
  if (*p<'0'||*p>'9') {p++;continue;}
  else {while (*p>='0'&&*p<='9')        
        {f[i]=*p-48;p++;i++;}          //用ASCII码值的关系给数组f赋值 
        q[j]=number(f,i,l);            //调用number函数给数组q赋值 
        j++;
        }
 } 
 return j;
}
int number(int x[],int m,int n)
{
 int total=0,i;                           //total为连续的数字的值 
 for(i=0;n<m;n++)
 {total=total+pow(10,i)*x[m-1-i];i++;}
 return total;
}

注释语言上有不规范的地方大佬们指出来-0-。

  • 8
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值