⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 10_16_3.c

📁 c语言第三版 十章16题
💻 C
字号:
#include <stdio.h>
main()
{ char str[50], *pstr;
  int i,j,k,m,e10,digit,ndigit,a[10],*pa;
  printf("Input a string: \n");
  gets(str);
  printf("\n");
  pstr=&str[0];                             /* 字符指针pstr置于数组str首地址*/
  pa=&a[0];                                 /* 指针pa置于数组a首地址*/
  ndigit=0;                                 /* ndigit代表有多少个整数*/
  i=0;                                      /* 代表字符串中字符的位置*/
  j=0;                                      /* 代表连续数字的位数*/
  while(*(pstr+i)!='\0')
  { if((*(pstr+i)>='0')&&(*(pstr+i)<='9')) j++;
    else
    { if(j>0)
      { digit=*(pstr+i-1)-48;                 /*将个数位赋予digit */
        k=1;
        while(k<j)              /*将含有两位以上数的其他位的数值累计于digit */
        { e10=1;
          for(m=1;m<=k;m++)
          e10=e10*10;                          /*e10代表该位数所应乘的因子*/
          digit=digit+(*(pstr+i-1-k)-48)*e10;  /*将该位数的数值累加于digit*/
          k++;                                 /*位数k自增*/
        }
        *pa=digit;                             /*将数值赋予数组a*/
        ndigit++;
        pa++;                                  /*指针pa指向a数组下一元素*/
        j=0;
      }
    }
    i++;
  }
    if(j>0)                                    /*以数字结尾字符串的最后一个数据*/
  { digit=*(pstr+i-1)-48;                    /*将个数位赋予digit*/
    k=1;
    while(k<j)                   /*将含有两位以上数的其他位的数值累计于digit*/
    { e10=1; 
      for(m=1;m<=k;m++)
        e10=e10*10;                         /*e10代表该位数所应乘的因子*/
      digit=digit+(*(pstr+i-1-k)-48)*e10;   /*将该位数的数值累加于digit*/
      k++;                                  /*位数k自增*/
    }
    *pa=digit;                              /*将数值赋予数组a*/
    ndigit++;
    j=0;
  }

  
  printf("There are %d numbers in this line. They are:\n",ndigit);
  j=0;
  pa=&a[0];
  for(j=0;j<ndigit;j++)                      /*打印数据*/
    printf("%d ",*(pa+j));
  printf("\n");
  getch();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -