永发信息网

C++指针查数字

答案:1  悬赏:70  手机版
解决时间 2021-04-11 23:47

输入字符串,内有数字和非数字字符,将其中连续数字作为正数存放在数组中。

请高手指教一下问题出在哪里。

#include <iostream>
using namespace std;
int main()
{void convert(char *,int *);
char a[50],*q;
int b[10] = {0},*p,i;
gets(q);
convert(q,p);
for(i = 0;i<10;i++)
{if(b[i] != 0)
cout << b[i] << " ";
}
cout << endl;
return 0;
}

void convert(char *p,int *q)
{int n = 0;
while(*p != '\0')
{ if(*p >='0'&&*p <= '9')
{ n = 10*n + *p - 48;
p++;
}
else if((*p < '0'||*p > '9'))
{if(n != 0)
{*q = n;
q++;
}
n = 0;
p++;
}
else p++;
}
}

最佳答案

声明指针时没有给定指针所指的地址,用时,指针指向的地址具有随机性,很可能出现奇怪的错误,所以用指针时最好是在定义时就给它指定它指向的地址,如:


char a[50],*q=a;


参照你的程序写程序如下:


#include <iostream>
using namespace std;
int main()
{
void convert(char *a,int *b);
char p[100],*a=p;
int q[100],*b=q,i=0;
scanf("%s",a);
convert(a,b);
return 0;
}


void convert(char *a,int *b)
{int n = 0,i=0,j=0;
while(a[i] != '\0')
{
if(a[i] >='0'&&a[i] <= '9')
{ n++;
b[j]=a[i];
i++;
j++;
}
else if((a[i] < '0'||a[i] > '9'))
{
if(n <= 1)
{j=j-n;
}
i++;
n = 0;}
}
for(i=0;i<j;i++)
printf("%c",b[i]);
}


结果:



我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
要开车出门旅行了,带了一台相机,有好的轻便
咳嗽怎么办,食管癌术后咳嗽怎么办
汉声Rocoo-D标准版和Power版选哪个
定额税率的一个重要特点是什么?急需
电脑本什么配置好价钱适中哪有啊
单选题下列叙述正确的是A.糖类都有甜味,都易
睡觉,怎么睡对身体好
九华冶炼厂女工工种
不敢对你说一句话,那一天你说你要走 你一句话
联想(万荣王涛店)这个地址在什么地方,我要处
新都哪家理发店剪头发剪的最好?
山东日照今日天气
RB好可以把直接把武器加到11吗?
旅行青蛙怎么设置提醒青蛙回来了?
单选题任取两种烃混合后点燃,如果生成CO2的
推荐资讯
请大师为我儿子取名。紧急!!!!!!!!!
昆明哪里做的眉毛整体比较好,价格也不坑人,
谁知道QQ飞车的歌曲是什么?
什么叫脱式计算题,什么叫脱式计算,比如15+7+
三国怎么点亮
DNF为什么进不去频道?
关于穿越者的反应?
瘦鬼钊牛腩粉这个地址在什么地方,我要处理点
鑫春生汽车修理部在哪里啊,我有事要去这个地
爱慕婚庆时尚婚礼策划地址在什么地方,想过去
中国联通莱西天津路营业厅特斯拉目的地充电站
QQ三国团长,加我入团吗?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?