| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2555 人关注过本帖
标题:%s输入字符串,统计数字个数,哪里有错怎么改?
只看楼主 加入收藏
MuMuLee
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2016-1-16
结帖率:84.21%
收藏
已结贴  问题点数:10 回复次数:8 
%s输入字符串,统计数字个数,哪里有错怎么改?
本人大一,指针都还没有学到,希望哥哥姐姐能告诉我 我的代码哪里有错,而不是把我都看不懂的代码粘贴过来。
以下代码我用的是CodeBlocks编译器。在编译器中可以运行 结果也正确。在学校的网站上就提交不上。



description
对与一个字符串我们想知道这个字符串里面有多少个数字,该怎么办呢?例如:对于字符串adsdfd454dfg456fgf,一共6个数字,Now,it's your turn to solve!

input
输入数据有多组,每组一行,代表输入的字符串,保证输入的字符串中没有空格,用%s输入(字符串长度不超过100)

output
输出占一行,代表字符串中数字的个数,输出后换行。

sample_input
adsdfd454dfg456fgf

sample_output
6



以下是我的程序:
程序代码:
#include <stdio.h>
#include <stdlib.h>

int main()
{
  char a[100];
    while(scanf("%c",&a[0])!=EOF)
    {

        int i,s=0;
        scanf("%s",a);
        for(i=0;i<100;i++)
        {
            if(a[i]>='0'&&a[i]<='9')
                s++;
        }
        printf("%d",s);

    }
    return 0;
}


哪里有问题?

 
程序代码:
char a[100];
    while(scanf("%s",a)!=EOF)
    {
   
    }
我把最前面这样改了之后还是不对的
搜索更多相关主题的帖子: 编译器 字符串 统计 哥哥 网站 
2016-02-18 20:49
qq1023569223
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
注 册:2010-12-22
收藏
得分:2 
我对处理字符方面也不熟悉,你试试下面的可不可以。
程序代码:
#include <stdio.h>
#include <stdlib.h>

int main()
{
    char a[100];
    scanf("%s\n",a);
    
    int count=0;
    for(int i=0;i<100;i++)
    {
        if(a[i]>='0'&&a[i]<='9')
        {
            count++;
        }
    }
    
    printf("%d\n",count);
    
    return 0;
}

   唯实惟新 至诚致志
2016-02-18 21:19
z450558237
Rank: 2
等 级:论坛游民
帖 子:48
专家分:11
注 册:2014-10-21
收藏
得分:1 
int i,s=0;你每次进来都把S重置为0,当然不对啊,S放循环外面置初始值0
2016-02-18 22:12
z450558237
Rank: 2
等 级:论坛游民
帖 子:48
专家分:11
注 册:2014-10-21
收藏
得分:1 
scanf("%c",&a[0])!=EOF这个反正我是不懂,我都是写char c;while((c=a[i])!='\0')
2016-02-18 22:14
z450558237
Rank: 2
等 级:论坛游民
帖 子:48
专家分:11
注 册:2014-10-21
收藏
得分:1 
我可能理解错了
2016-02-18 22:16
MuMuLee
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2016-1-16
收藏
得分:0 
回复 2楼 qq1023569223
亲。这个程序没法运行
2016-02-19 11:04
qq1023569223
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
注 册:2010-12-22
收藏
得分:2 
程序代码:
#include <stdio.h>
#include <stdlib.h>

int main()
{
    char a[100];
    scanf("%s",a);

    int count=0;
    int i=0;
    do{
        if(a[i]>='0'&&a[i]<='9')
            count++;
            i++;
    }while(i<100);

    printf("%d\n",count);

    system("pause");
    return 0;
}


   唯实惟新 至诚致志
2016-02-19 13:55
血性天堂
Rank: 1
等 级:新手上路
帖 子:9
专家分:1
注 册:2016-2-20
收藏
得分:1 
这段代码中用了 while(scanf("%c",&a[0])!=EOF),所以你的程序在你没有输入Ctrl+z时,是一直处于while循环中,没有跳出的。
你可以在while循环后面加上一个输出函数,如printf("djifjelnoi"); 来检测程序有没有运行到这一步。
我猜你之所以提交不上去,是因为程序一直没有运行结束,对于这行代码,你输入完数据之后需要输入Ctrl+z才能跳出循环,进行下一步。
至于如何修改,我也不知道,或者你可以选用其它方法,不用这行代码。
2016-02-20 15:01
书生牛犊
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:星夜征程
等 级:贵宾
威 望:10
帖 子:1101
专家分:5265
注 册:2015-10-27
收藏
得分:2 
print(“%d”,s)修改为 printf("%d\n",s)
关于系统评测的话,他们通常是用一个文件a作为输入,用另一个文件b存储输出,最后把形成的文件b和标准答案进行逐个字符比较。完全相同则为正确。
本题中,针对每一组输入你虽然都有输出,但是,你输出的数字是连在一起的。没有回车符的话你提交上去的答案形成的文件b里面有且仅有一行数字。那当然就是错的咯。

这种用“一个文件作为输入。一个文件作为输出”的测试方法我也是不久前学到的,是用的命令行指令。具体实现方法,http://www.           (可能直接点进不去,你用账户登录后打开 C语言进阶-翁恺  第7周 文件 )

/*******************
现在那门课已经结束了,不过你可已查看存档。看得到视频的@

φ(゜▽゜*)♪
2016-02-21 11:37
快速回复:%s输入字符串,统计数字个数,哪里有错怎么改?
数据加载中...
 
   



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

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