| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 751 人关注过本帖
标题:有一道题想你们帮忙啊
只看楼主 加入收藏
飘梅
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2011-7-25
结帖率:0
收藏
已结贴  问题点数:20 回复次数:12 
有一道题想你们帮忙啊
统计输入相印的数字的个数,并打印输出(写成函数调用形式)。比如输入1122333,输出:2个1,2个2,3个3。
搜索更多相关主题的帖子: 统计 
2011-08-09 17:12
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:3 
程序代码:
#include <stdio.h>
#include <string.h>

void fun(char *str,char *mem)
{
    char *p = str;
    while(*p)
    {
        mem[*p-48]++;
        p++;
    }
}
int main()
{
    char str[1000] = {0};
    char mem[11] = {0};
    gets(str);
    fun(str,mem);
    for(int i = 0;i<11;i++)
        if(0 != mem[i])
            printf("%d have %d\n",i,mem[i]);
    return 0;
}

                                         
===========深入<----------------->浅出============
2011-08-09 17:26
飘梅
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2011-7-25
收藏
得分:0 
这么运行不了啊!大哥啊
2011-08-09 19:25
飘梅
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2011-7-25
收藏
得分:0 
在这段有点问题是 fun(str,mem);
    for(int i = 0;i<11;i++)
2011-08-09 19:26
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:3 
建议
mem有10个就够了,没必要11个。
类型建议定义成int型,否则当取值范围太小,1个数字出现的数量超过127结果就会出错。
fun中最好对字符做一下判断,滤掉不是数字的字符。

重剑无锋,大巧不工
2011-08-09 20:22
小曹
Rank: 2
等 级:论坛游民
帖 子:8
专家分:24
注 册:2010-3-8
收藏
得分:3 
如果跟严格点的话 五楼的建议可行,另外二楼的代码中第六行应该是分号!
2011-08-09 21:17
学习小菜鸟
Rank: 2
等 级:论坛游民
帖 子:5
专家分:10
注 册:2011-8-3
收藏
得分:3 
怎么就不对某些语句注释一下呢  看起来很吃力啊  大牛太多了
2011-08-09 22:31
xiangqiu1986
Rank: 2
等 级:论坛游民
帖 子:79
专家分:95
注 册:2011-5-5
收藏
得分:3 
路过

学无止境!
2011-08-09 23:10
feiyu4581
Rank: 2
来 自:安徽六安
等 级:论坛游民
帖 子:8
专家分:10
注 册:2011-8-3
收藏
得分:3 
这个应该也可以,虽然不是用函数的,由于这台电脑上没有编译器,所以无法确定是否正确,但是那个大致思路应该是正确的。还有那位大神能详细解释下EOF的作用啊
#include<stdio.h>
#define MAXNUM 128
void main()
{
    int c,i;
    int digits[MAXNUM];
    for (i = 0; i < MAXUNM;i++)
        digits[i] = 0;
    while ((c = getchar()) != EOF)
            ++digits[c];
    for (i = 0; i < MAXUNM;i++)
        printf("%3d \t %3d\n"i,digits[i]);
}
2011-08-09 23:46
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
回复 9楼 feiyu4581
EOF是end of file的缩写。表示文件流的结束。
你的代码需要将输入存到一个文本文件里,并将标准输入流重定向到这个文件才能看到结果。如果用键盘输入的话是看不到结果的,因为键盘作为输入是一个无限流。
举个例子,如果你的代码编译成可执行程序名为p.exe。输入数据保存到t.txt文件里。
你可以在控制台下输入p<t.txt看看效果。

即使这样,你的代码还是不符合楼主的要求,你输出的是所有标准ASCII码的统计值,而不仅是数字。
而且这段代码很容易崩溃。在输入文件里包含个汉字试试。

重剑无锋,大巧不工
2011-08-10 01:09
快速回复:有一道题想你们帮忙啊
数据加载中...
 
   



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

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