| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1360 人关注过本帖
标题:从字符串中挑出数字,为什么不对
只看楼主 加入收藏
lzxm160
Rank: 1
等 级:新手上路
帖 子:103
专家分:0
注 册:2006-12-26
收藏
 问题点数:0 回复次数:7 
从字符串中挑出数字,为什么不对
#include<stdio.h>
#include<string.h>
    void main()
    { void pick(char *s,int number[]);
      char s[20];int number[20]={0};int i;
      printf("please input a string:\n");
      scanf("%s",s);
      pick(s,number);
      printf("the string is %s\n",s);
      printf("the number is:\n");
      for(i=0;number[i]!=0;i++)
      printf("%d",number[i]);
    }
    void pick(char *s,int number[]);
    {
      char *p;
        p=s;
       char *q;int n=0;int *t=number;
       q=p;
       while(*p!='\0')
       { while(!(*p>='0'&&*q<='9'))p++;
         q=p;
       while(*q>='0'&&*q<='9')
       {n=(n+*q-'0')*10;q++;
       }
       n/=10;*t=n;t++;p=q;
       }
    }
搜索更多相关主题的帖子: 数字 字符 挑出 
2007-12-22 23:07
dumpling131
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2007-11-17
收藏
得分:0 
我只能挑出编译的错误,第二个 void pick(char *s,int number[]);
不应该有分号。不是声明语句。  p=s;语句应该在 char *q;int n=0;int *t=number;后边。
2007-12-23 13:39
许一民
Rank: 1
来 自:江苏连云港
等 级:新手上路
帖 子:60
专家分:0
注 册:2007-9-29
收藏
得分:0 
  难道0不算数字?

丛丛芳芫满冬秋,淡淡一笑泯恩仇!
2007-12-26 10:42
lzxm160
Rank: 1
等 级:新手上路
帖 子:103
专家分:0
注 册:2006-12-26
收藏
得分:0 
#include<stdio.h>
#include<string.h>
    void main()
    { void pick(char *s, int number[]);
      char s[20];int number[20]={0};int i;  clrscr();
      printf("please input a string:\n");
      scanf("%s",s);
      pick(s,number);
      printf("the string is: %s\n",s);
      printf("the number is:\n");
      for(i=0;number[i]!=0;i++)
      printf("%d ",number[i]);
    }
    void pick(char *s, int number[])
    {
      char *p;

       char *q;int n=0; int *t=number;
       p=s;
       q=p;
       while(*p!='\0')
       { while(!(*p>='0'&&*p<='9'))p++;
         q=p;  n=0;
       while(*q>='0'&&*q<='9')
       {n=(n+*q-'0')*10;q++;
       }
       n/=10;*t=n;t++;p=q;
       }
    }



OK了
2007-12-26 21:27
龙=虾
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2007-12-26
收藏
得分:0 
只指出问题
两点问题,
1,PICK函数太复杂,根本不用这么复杂, while(*p!='\0')循环里面只要个
   if
     不是数字, 取下一个字符
   else
      是数字, 将 其减字符'0' 得相应的整数,送入数组保存
 就可以搞定
2, number[ ]数组 预送的整数不应该是0, 最好是-1 , 因为0也可能是串中挑出来的数字.
2007-12-26 23:25
flyaway57
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2007-3-28
收藏
得分:0 
回复 4# 的帖子
你试试输入这个fasdvds848948948915164864

戒骄戒躁
2007-12-26 23:29
flyaway57
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2007-3-28
收藏
得分:0 
回复 1# 的帖子
楼主创建number数组的目的应该是把每个数字放进去number的每一项(这是我的理解),但是你输出一下整个number数组,就会发现你的所有数只是在number[0]上,剩下的全部是0

戒骄戒躁
2007-12-26 23:35
龙=虾
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2007-12-26
收藏
得分:0 
楼主问题没说清楚
其实不是挑出单个数字,而是将串中连续的数字当成一个整数.那pick函数可以这么写.
2007-12-26 23:43
快速回复:从字符串中挑出数字,为什么不对
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014995 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved