avirl108 2015-06-06 08:43 采纳率: 62.5%
浏览 2013
已采纳

@C语言大神,这程序谭浩强给的答案看不懂,求解释?

//题目:输出字符串里数字团,以及个数。比如89cy129//就输出89,129,一共2个数。// 问题:后面一大段为啥要复制粘贴前面一大段的代码?//有什么用?求解释。而且运行也不对,求修改!跪谢!

include

int main()
{ char str[80],*pstr;
int m,i=0,j=0,k=0,digit=0,ndigit=0,e10,a[80],*pa; pstr=&str[0];pa=&a[0]; gets(str);while(*(pstr+i)!= '\0') { if((*(pstr+i)>='0')&&(*(pstr+i)<='9')) j++; else { if(j>0) { digit=*(pstr+i-1)-48; k=1; } if(k0) digit=(*(pstr+i-1)-48); k=1; if(k<j) { e10=1; for(m=1;m<=k;m++) e10=e10*10; digit=digit+*((pstr+i-1-k)-48)*e10; k++; pa=digit; ndigit++; pa++;//这里为什么要把第一段代码复制粘贴一次? j=0; //求解释! } pa=&a[0];printf("There are %d numbers:\n",ndigit);j=0;for(j=0;j<ndigit;j++) printf("%d,",(pa+j));printf("\n");}

  • 写回答

6条回答 默认 最新

  • threenewbee 2015-06-06 08:52
    关注
     #include "stdio.h"
    #include "stdlib.h"
    
    int main()
    {
        char s[] = "123ss456w7";
        int nShow = 1;
        for (int i = 0; i < (int)strlen(s); i++)
        {
            if (s[i] >= '0' && s[i] <= '9')
            {
                printf("%c", s[i]);
                nShow = 1;
            }
            else
            {
                if (nShow) printf("\n");
                nShow = 0;
            }
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器