题目是:输入一个字符串,内有数字和非数字字符,将其中连续的数字作为一个整数,依次存放到一个数组a中,统计一共有多少整数,并输出这些数。
#include "stdio.h"
void main()
{char str[100],num[10],*p;int i,j=0,k=0,a[10];
int convert(char s[10],int j);
printf("please input some characters:\n");
scanf("%s",str);p=str;
for(i=0;*(p+1)!='\0';i++)
{if(*(p+i)>='0'&&*(p+i)<='9')
{num[j]=*(p+i);j++;}
else if(num[0]!='\0')
{a[k]=convert(num,j);k++;j=0;}}
i=0;for(i=0;i<k;i++)
printf("number %d is %d\n",i+1,a[i]);
printf("%d numbers in total",k);
}
int convert(char s[10],int j)
{int i,a[10],k=0;
int mul(int a);
for(i=j;i>0;i--)
{a[i]=s[i-1]-'0';s[i-1]='\0';k=k+a[i]*mul(j-i+1);}
return(k);}
int mul(int a)
{int i,j=1;if(a==1) j=1;
else{for(i=a;i>1;i--)
j=j*10;}
return(j);}
这是我的程序,VC++没有报错,但是运行会自动退出,请问哪里出错了?
给你改了一下,主要就是注释掉部分的问题,你对比参考一下看看吧,有不明白的再问我吧:
#include "stdio.h"void main()
{
char str[100],num[10],*p;
int i,j=0,k=0,a[10];
int convert(char s[10],int j);
printf("please input some characters:\n");
scanf("%s",str);p=str;
// for(i=0;*(p+1)!='\0';i++)
// {
// if(*(p+i)>='0'&&*(p+i)<='9')
// {
// num[j]=*(p+i);j++;
// }
// else if(num[0]!='\0')
// {
// a[k]=convert(num,j);
// k++;
// j=0;
// }
// }
bool bNum = false;
for(i=0;*p!='\0'; i++, p++)
{
if(*p>='0' && *p<='9')
{
bNum = true;
num[j++] = *p;
}
else if (bNum)
{
bNum = false;
num[j] = '\0';
a[k++]=convert(num,j);
j=0;
}
}
if (bNum)
{
num[j] = '\0';
a[k++]=convert(num,j);
}
i=0;
for(i=0;i<k;i++)
printf("number %d is %d\n",i+1,a[i]);
printf("%d numbers in total",k);
}
int convert(char s[10],int j)
{
int i,a[10],k=0;
int mul(int a);
for(i=j;i>0;i--)
{
a[i]=s[i-1]-'0';s[i-1]='\0';k=k+a[i]*mul(j-i+1);
}
return(k);
}
int mul(int a)
{
int i,j=1;
if(a==1)
j=1;
else
{
for(i=a;i>1;i--)
j=j*10;
}
return(j);
}
测试结果:
最后面?
追答对
追问你说的最后面具体指哪里?
追答main函数的最后面啊
追问我加了,还是不对啊,能解释一下么
追答是程序报错还是自动退出?
追问还是自动退出,百度私信一下好吧,这样太费了