YXTS122
2015-11-22 23:33
采纳率: 100%
浏览 1.8k
已采纳

这代码最后那123怎么没输出来?问题出在哪了?

输入一个字符串,内有数字和非数字字符,例如:a123x456 7689?89njnk32lnk123,
将其中连续的数字作为一个整数,依次存放到一维数组a中,例如123放在b[0],456放
在b[1]......统计共有多少个整数,并输出这些数。弟1行输出个数,第2行输出多个整数
,用空格分隔。

 #include<stdio.h>
#include<math.h>
void main()
{
    int i,j=0,k=0,x=0,n,m,b[100];
    char s[100],a[100];
    gets(s);
    for(i=0;s[i]!='\0';i++)
    {
        if(s[i]>='0'&&s[i]<='9')
            a[j++]=s[i];
        else
        {
            j--;
            for(n=0;j>=0;j--,n++)
                x+=(a[j]-'0')*(int)pow(10,n);
            if(x!=0)
                b[k++]=x;
            x=0;  j=0;
        }
    }
    printf("%d\n",k);
    for(m=0;m<k;m++)
        printf("%d ",b[m]);
    printf("\n");
}

图片说明

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • logiciel 2015-11-23 00:40
    已采纳

    #include
    #include
    void main()
    {
    int i,j=0,k=0,x=0,n,m,b[100];
    char s[100],a[100];
    gets(s);
    for(i=0;s[i]!='\0';i++)
    {
    if(s[i]>='0'&&s[i]<='9')
    a[j++]=s[i];
    else
    {
    j--;
    for(n=0;j>=0;j--,n++)
    x+=(a[j]-'0')*(int)pow(10,n);
    if(x!=0)
    b[k++]=x;
    x=0; j=0;
    }
    }
    /*加以下代码处理最后一个数据*/
    if (j)
    {
    j--;
    for(n=0;j>=0;j--,n++)
    x+=(a[j]-'0')*(int)pow(10,n);
    if(x!=0)
    b[k++]=x;
    }
    printf("%d\n",k);
    for(m=0;m<k;m++)
    printf("%d ",b[m]);
    printf("\n");
    }

    打赏 评论
  • 智者知已应修善业 2015-11-23 00:38

    从代码看应该是最后一个123的后面没空格或任何字符引起的没执行合成语句,在最后加一个空格或任何字符试看。

    打赏 评论
  • YXTS122 2015-11-24 00:15

    图片说明

    打赏 评论
  • John_ToDebug 2016-01-23 08:51

    #include
    #include
    void main()
    {
    int i,j=0,k=0,x=0,n,m,b[100];
    char s[100],a[100];
    gets(s);
    for(i=0;s[i]!='\0';i++)
    {
    if(s[i]>='0'&&s[i]<='9')
    a[j++]=s[i];
    else
    {
    j--;
    for(n=0;j>=0;j--,n++)
    x+=(a[j]-'0')*(int)pow(10,n);
    if(x!=0)
    b[k++]=x;
    x=0; j=0;
    }
    }
    /*加以下代码处理最后一个数据*/
    if (j)
    {
    j--;
    for(n=0;j>=0;j--,n++)
    x+=(a[j]-'0')*(int)pow(10,n);
    if(x!=0)
    b[k++]=x;
    }
    printf("%d\n",k);
    for(m=0;m<k;m++)
    printf("%d ",b[m]);
    printf("\n");
    }

    打赏 评论

相关推荐 更多相似问题