| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 544 人关注过本帖
标题:看看这个程序,有什么问题
只看楼主 加入收藏
shiningwater
Rank: 1
等 级:新手上路
帖 子:51
专家分:5
注 册:2010-3-25
结帖率:93.75%
收藏
已结贴  问题点数:10 回复次数:5 
看看这个程序,有什么问题
#include<stdio.h>
#include<math.h>
void main()
{
  void pro(char * p);
  char str[20];
  gets(str);
  pro(str);

  getch();

}

void pro(char * p)
{
  int k=0,s=0,digit=0,t=0,i,j,flag=0,a[20];
  for(i=0;* (p+i)!='\0';i++)
  {
    if(* (p+i)>='0'&& * (p+i)<='9')
    {
      t++;flag=1;
    }

    else flag=0;
    if(t>0&&flag==0)
    {
      for(j=i-1,k=0;j>=i-t&&k<t;j--)
        {digit+= * (p+j)*pow(10,k);
        k++;}


       a[s]=digit;
      t=0;k=0;digit=0; s++;

    }

  }
  printf("there are %d nums!\n",s);
  for(i=0;i<s;i++)
  printf("%d",a[i]);

}


输入一个字符串,内有数字字符和非数字字符。要求将连续的数字最为一个整数,一次存放到一数组a中。
2010-09-25 00:42
linqingwudi
Rank: 2
等 级:论坛游民
帖 子:35
专家分:31
注 册:2010-9-14
收藏
得分:0 
*pow(10,k);这里?说实话程序的变量有点多,我看这有点晕
2010-09-25 08:01
erikyo
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:270
专家分:1154
注 册:2010-6-10
收藏
得分:5 
关键是你的输入是怎么样的,楼主的虽然说了字符串里有字符和数字,但是这个数字是全连续的呢,还是分段连续的呢。
最好给一个输入的例子,这样才能编写正确的程序。
2010-09-25 09:22
erikyo
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:270
专家分:1154
注 册:2010-6-10
收藏
得分:5 
提供一个数字是连续的情况下的程序;
#include<stdio.h>
#include<math.h>

void main()
{
  void pro(char * p);
  char str[20];
  gets(str);
  pro(str);

  getch();

}

void pro(char * p)
{
  int k=0,s=0,digit=0,t=0,i,j,flag=0,a[20];
  char *tmp = NULL;
  for(i=0; *(p+i)!='\0'; i++)
  {
    if(*(p+i)>='0'&& *(p+i)<='9')
    {
      t++;
      flag=1;
    }

    else
        flag=0;

  }

  if(t > 0)
  {
      i = 0;
      while(!isdigit(*(p + i)))
          i++;
      tmp = p + i;
      for(j = 0; j < t; j++)
      {
        s = 10 * digit;
        digit = s + (*(tmp + j) - '0');
        a[j] = *(tmp + j) - '0';
      }
  }

    printf("digit = %d!\n",digit);
      printf("array is :\n");
    for(j = 0; j < t; j++)
        printf("%d  ",a[j]);

}
2010-09-25 09:37
shiningwater
Rank: 1
等 级:新手上路
帖 子:51
专家分:5
注 册:2010-3-25
收藏
得分:0 
回复 2楼 linqingwudi
比如说:输入a123x456  17961?这一字符串,程序应将123存入a[0].456存入a[1],17960存入a[2],最后输出数组a
2010-09-25 11:37
shiningwater
Rank: 1
等 级:新手上路
帖 子:51
专家分:5
注 册:2010-3-25
收藏
得分:0 
改过来了,供大家参考
#include<stdio.h>
#include<math.h>
void main()
{
  void pro(char * p);
  char str[20];
  gets(str);
  pro(str);


}

void pro(char * p)
{
  int k=0,s=0,digit=0,t=0,i,j,flag=0,a[20];
  for(i=0;* (p+i)!='\0';i++)
  {
    if(* (p+i)>='0'&& * (p+i)<='9')
    {
      t++;flag=1;
    }

    else flag=0;
    if(t>0&&flag==0)
    {
      for(j=i-1,k=0;j>=i-t&&k<t;j--)
        {digit+= (*(p+j)-'0')*pow(10,k);
        k++;}


       a[s]=digit;
      t=0;k=0;digit=0; s++;

    }

  }
  printf("there are %d nums!\n",s);
  for(i=0;i<s;i++)
  printf("%d",a[i]);

}
2010-09-25 23:34
快速回复:看看这个程序,有什么问题
数据加载中...
 
   



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

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