C语言问题,很简单,只因为我是初学者,答得好追加分数

来源:百度知道 编辑:UC知道 时间:2024/06/19 07:27:52
将字符串中连续的数字放在数组中
main()
{
char string[20],*p=string;
int a[10],i,add;
scanf("%s",p);
for(i=0;*p!='\0';p++)
{if(*p>='0'&&*p<='9'&&*(p+1)>='0'&&*(p+1)<='9')
a[i]=*p-'0';
i++;add++;
a[i]=*(p+1)-'0';}
for(i=0;i<=add;i++)
printf("%d",a[i]);}
为什么我输入as12d45的结果是145呢?我要的是1245,可却是错的
你回不会啊?
我ADD是有点问题,但你自己把我题目看清楚了没有啊?
别乱答啊!!!!
乱答的别进来!!!

问题太多了
add没有赋值,就开始add++

修改如下;
#include<stdio.h>
main()
{
char string[20]="as12d45",*p=string;
int a[10],i,add;
//scanf("%s",p);
for(add=0;*p!='\0';p++)
{
if(*p>='0'&&*p<='9')
{
a[add++]=*p-'0';
}
}
for(i=0;i<add;i++)
printf("%d",a[i]);
}

补充:
我确实没有看清楚题目!
但我也确实把你问题的症结指出来了嘛!
我有不是神仙?犯个错也没有什么吧?

帮你回答问题,你连个谢字都没有,还反过来质问啊?!
什么素质!

void main()
{
char string[20],*p=string;
int a[10],i=0,add=0;
scanf("%s",p);
for(;*p!='\0';p++) {
if(*p>='0'&&*p<='9'&&*(p+1)>='0'&&*(p+1)<='9') {
a[i]=*p-'0';
i++;add++;
a[i]=*(p+1)-'0';
i++;add++;
}
}
for(i=0;i<add;i++)
printf("%d",a[i]);
}