| 
 | 
 
2鱼币 
题目是这样的 输入一个字符串,内有数字和非数字字符,例如: 
A123x456 17960? 302tab5876 
将其中连续的数字作为一个整数,依次存放到一维数组a中。例如,123放在a[0],456放在a[1]。。。。。。统计共有多少个整数,并输出这些数 
 
#include<stdio.h> 
int main() 
{ 
        char str[50],*p;   //str为输入的字符串 
        int a[50],i,n;    //a为存放数字的数组 
        printf("input a string:"); 
        gets(str); 
        p=str; 
        n=0; 
        while(*p != '\0') 
        { 
                if((*p>='0') && (*p<='9')) 
                { 
                        a[n] = a[n] * 10 + *p - '0'; 
                        p++; 
                } 
                n++; 
                p++; 
        } 
        printf("the number is :\n"); 
        for(i=0;i<n;i++) 
                printf("%d",a[i]); 
        printf("\n"); 
        return 0; 
} 
 
 
我输的代码是这样的,但结果是乱码,哪里有问题啊!!!
- #include<stdio.h>
 
  
- int main()
 
 - {
 
 -         char str[50], *p;   //str为输入的字符串
 
 -         int i, n;   
 
 -         int a[50] = { 0 };    //a为存放数字的数组     可能是这里没有初始化为0  数组都是随机的数
 
 -         printf("input a string:");
 
 -         gets_s(str);
 
 -         p = str;
 
 -         n = 0;
 
 -         while (*p != '\0')    //while里面有问题
 
 -         {
 
 -                 if ((*p >= '0') && (*p <= '9'))
 
 -                 {
 
 -                         a[n] = a[n] * 10 + *p - '0';
 
 -                         if (*(p + 1) < '0' || *(p + 1) > '9')
 
 -                         {
 
 -                                 n++;
 
 -                         }
 
 -                 }
 
 -                 p++;
 
 -         
 
 -         }
 
 -         printf("the number is :\n");
 
 -         for (i = 0; i<n; i++)
 
 -                 printf("%d ", a[i]);
 
 -         printf("\n");
 
 -         return 0;
 
 - }
 
  复制代码 
 
 
 |   
 
 
 
 
 
 |