| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 832 人关注过本帖
标题:有谁可以告诉我错哪里了
只看楼主 加入收藏
逗比
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2014-10-31
结帖率:60%
收藏
 问题点数:0 回复次数:11 
有谁可以告诉我错哪里了
统计整数个数(5分)
.题目内容:

输入一个字符串,内有数字和非数字字符,例如:

     A123cdf 456cpc876er 849

     将其中连续的数字作为一个整数,依次存放到数组a中。例如123存放在a[0],456存放在a[1]……统计共有多少个整数,并输出这些数。

注意:非数字字符可包括:大小写字符、空格、*、-、/、+、%、$、#等其他非数字的字符

输入格式:


输入一个带有数字和非数字字符的字符串

输出格式:


输出整数个数   ----->     "共有%d个整数\n"

输出这些整数 ------>      %d

输入样例:


A123cdf 456cpc876er 849

输出样例:


共有4个整数

123

456

876

849




#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
    char *sp;
    char *p=sp;
    int a[80];
    int num=0,power=1,i;
    int value=0;
   
    gets(sp);
    while(*p!='\0')
    {
        // if p没有指向数字,跳过

        for (; !(*p>='0'&& *p<='9'); p++)
        // 从p开始的所有数字,依次取出放入value
        value=0;
        for (value=0; *p>='0'&& *p<='9'; p++)
        {
            value=value*10+*p-'0';
        }
        
        for (power=1; *p>='0'&& *p<='9'; p++)
        {
            value=value*10+*p-'0';
            power=power*10;
        }
        value=value/power;
        a[num++]=value;      
    }
    printf("共有%d个整数\n",num);
    for(i=0;i<num;i++)
    {
        printf("%d\n",a[i]);
    }

   

}
搜索更多相关主题的帖子: 字符串 统计 
2015-06-10 13:07
calix
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:28
帖 子:249
专家分:1442
注 册:2015-5-4
收藏
得分:0 
把char *sp;改成char sp[合适的数];
char *sp;只是声明了指针,并没有分配他所指向的内存
2015-06-10 13:20
敬爱的汪老师
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2015-6-21
收藏
得分:0 
2015-06-21 16:02
敬爱的汪老师
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2015-6-21
收藏
得分:0 
2015-06-21 18:56
prototype
Rank: 2
等 级:论坛游民
威 望:1
帖 子:21
专家分:32
注 册:2015-6-21
收藏
得分:0 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
    char sp[20];
    char *p;
    int a[20];
    int num=0,power=1,i;
    int value=0;
    p=gets(sp);
    printf("Input characters\n");
    while((*p)!=0)
    {
      for (; !(*p>=48&& *p<=57)&&((*p)!=0); p++)
        value=0;
        if ((*p)!=0)
        {
        for (value=0; *p>=48&& *p<=57; p++)
        {
            value=value*10+*p-'0';
        }
        
        for (power=1; *p>=48&& *p<=57; p++)
        {
            value=value*10+*p-'0';
            power=power*10;
        }
        value=value/power;
        a[num++]=value;
        }      
    }
    printf("共有%d个整数\n",num);
    for(i=0;i<num;i++)
    {
        printf("%d\n",a[i]);
    }
getchar();
getchar();   

}

可以识别非法字符了

[ 本帖最后由 prototype 于 2015-6-22 16:44 编辑 ]

a man a plan a canal-panama
2015-06-21 20:47
prototype
Rank: 2
等 级:论坛游民
威 望:1
帖 子:21
专家分:32
注 册:2015-6-21
收藏
得分:0 
gets(sp);错了

[ 本帖最后由 prototype 于 2015-6-21 22:12 编辑 ]

a man a plan a canal-panama
2015-06-21 20:48
自傲
Rank: 2
等 级:论坛游民
帖 子:53
专家分:95
注 册:2015-5-16
收藏
得分:0 
2015-06-21 22:02
prototype
Rank: 2
等 级:论坛游民
威 望:1
帖 子:21
专家分:32
注 册:2015-6-21
收藏
得分:0 
设输入A123cdf
*p执行到f后面的'\0'时,没有终止
转而继续执行

a man a plan a canal-panama
2015-06-22 10:31
prototype
Rank: 2
等 级:论坛游民
威 望:1
帖 子:21
专家分:32
注 册:2015-6-21
收藏
得分:0 
已经修改了

a man a plan a canal-panama
2015-06-22 16:42
prototype
Rank: 2
等 级:论坛游民
威 望:1
帖 子:21
专家分:32
注 册:2015-6-21
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册

a man a plan a canal-panama
2015-06-22 16:46
快速回复:有谁可以告诉我错哪里了
数据加载中...
 
   



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

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