求助一个C语言问题:

题目是:输入一个字符串,内有数字和非数字字符,将其中连续的数字作为一个整数,依次存放到一个数组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);
}

测试结果:

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-05-20
在程序最后面加一个getchar()就不会自动退出了!追问

最后面?

追答

追问

你说的最后面具体指哪里?

追答

main函数的最后面啊

追问

我加了,还是不对啊,能解释一下么

追答

是程序报错还是自动退出?

追问

还是自动退出,百度私信一下好吧,这样太费了

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网