| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1484 人关注过本帖
标题:大一新生求解 字符统计
只看楼主 加入收藏
逆时光飞
Rank: 2
等 级:论坛游民
帖 子:27
专家分:49
注 册:2011-11-5
结帖率:100%
收藏
已结贴  问题点数:3 回复次数:9 
大一新生求解 字符统计
题目描述
给出一串字符,要求统计出里面的字母、数字、空格以及其他字符的个数。
字母:A, B, ..., Z、a, b, ..., z组成
数字:0, 1, ..., 9
空格:" "(不包括引号)
剩下的可打印字符全为其他字符。
输入
测试数据有多组。
每组数据为一行(长度不超过100000)。
数据至文件结束(EOF)为止。
输出
每组输入对应一行输出。
包括四个整数a b c d,分别代表字母、数字、空格和其他字符的个数。
示例输入
A0 ,示例输出
1 1 1 1
我解的 我估计是多组字符串 我输的不对 但不知道该怎么表示多组字符串的输入与结束。。。。

#include<stdio.h>
#include<string.h>
int main()
{
    int  i, j, k, a=0, b=0, c=0, d=0;
    char str[100];
    for(j=1;j!=EOF;j++)
    {
        gets(str);
        k=strlen(str);
        for(i=0;i<=k-1;i++)
        {
            if(str[i]>='A'&&str[i]<='Z'||str[i]>='a'&&str[i]<='z')
                a++;
            else if(str[i]>='0'&&str[i]<='9')
                b++;
            else if(str[i]==' ')
                c++;
            else
                d++;
        }        
        printf("%d %d %d %d\n",a,b,c,d);
        a=0; b=0; c=0; d=0;

    }
    return 0;
}
运行倒是可以 但提交到我们学校的题上就错了   Output limit
搜索更多相关主题的帖子: 字母 大一新生 include 字符串 
2011-11-05 22:42
superjian
Rank: 2
等 级:论坛游民
帖 子:8
专家分:15
注 册:2011-9-25
收藏
得分:0 
for(j=1;j!=EOF;j++) 该循环不会终止
2011-11-05 22:57
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:1 
回复 楼主 逆时光飞
j!=EOF;这句不对。而且对于题目,是文件操作,并不是手动输入的

总有那身价贱的人给作业贴回复完整的代码
2011-11-05 23:00
逆时光飞
Rank: 2
等 级:论坛游民
帖 子:27
专家分:49
注 册:2011-11-5
收藏
得分:0 
请楼上给个解法  该如何写
2011-11-05 23:03
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
你这个程序当然交不出手?写了多久?思考过多少?

授人以渔,不授人以鱼。
2011-11-05 23:07
逆时光飞
Rank: 2
等 级:论坛游民
帖 子:27
专家分:49
注 册:2011-11-5
收藏
得分:0 
我就是把我知道的都用上了 不知道该怎么写了 我这几天都在想啊 交了好多次了
2011-11-05 23:27
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:2 
首先,你没有认真审题:每行不超过1000000字符,你把缓冲区str[]定多大了?
其次,明确说从文件读入数据,你却写了从键盘读入。

授人以渔,不授人以鱼。
2011-11-05 23:32
逆时光飞
Rank: 2
等 级:论坛游民
帖 子:27
专家分:49
注 册:2011-11-5
收藏
得分:0 
嗯首先谢谢楼上
我学的可能还不足以解决这个问题 我先回去看书
那个
示例输入
A0 ,
示例输出
1 1 1 1
我觉得A0 ,是键盘输入啊
2011-11-05 23:40
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
数据至文件结束(EOF)为止。100000字符的数据测试量是不可能从键盘得到的。

授人以渔,不授人以鱼。
2011-11-05 23:45
khaz
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:130
专家分:188
注 册:2011-4-21
收藏
得分:0 
程序代码:
#include<stdio.h>
#include<string.h>

int main(void)
{
    char count[200];
    char buff[2048];
    int i;

    char *ptr = buff;

    /*将内存清0*/
    memset(count, 0, sizeof(count));
    memset(buff, 0, sizeof(buff));

    /*从标准输入获取字符串,比gets安全*/
    fgets(buff, sizeof(buff), stdin); 

    while(*ptr++ != '\0')
        count[*ptr]++;  //本例的思路关键,把需要统计的字符作为下标统计出现该同样字符的数组元素个数


    for(i = 0; i < 200; i++)
    {
        /*如果下标是字母数字并且统计个数不为0*/
        if( ((i >= '0' && i <= '9')||(i >= 'a' && i <= 'z')||(i >= 'A' && i <= 'Z')) && count[i] != 0)
            printf("the count of %c: %d\n", i, count[i]);
    }

    getchar();
    return 0;
}
收到的鲜花
  • 逆时光飞2011-11-06 12:52 送鲜花  3朵   附言:现在还看不懂 还没学指针 不过谢谢哈
2011-11-05 23:59
快速回复:大一新生求解 字符统计
数据加载中...
 
   



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

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