| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2661 人关注过本帖
标题:关于计算重复出现次数的问题
只看楼主 加入收藏
勤奋的关键字
Rank: 1
来 自:辽宁
等 级:新手上路
帖 子:51
专家分:2
注 册:2011-10-24
结帖率:72.73%
收藏
已结贴  问题点数:20 回复次数:12 
关于计算重复出现次数的问题
问题是在键盘上输入一段字符串,输出每个字符出现的次数,下面是我写的,可是运行之后是能出现每个字符的出现次数,可是比如我输入abcdaeff  他就给我显示a出现了2次,b出现了1次,c出现了1次,然后又给我输出了a出现了2次,然后接着e出现了1次,f出现了2次,f出现了2次,怎么能改成把多余的输出去掉啊 百思不得其解啊 求高手指教啊!
程序代码:
void main()
{
    char a[N];
    int b,i,j,x=1,s=0;
    printf("请输入字符串:\n");
    gets(a);
    for(b=0;b<N;b++)
    {
        x=1;
        if(a[b]=='\0')
            break;
        for(i=0;i<N;i++)
        {
            if(b==i)
                continue;
            if(a[b]==a[i])
                x++;
            for(j=0;j>N;j++)
            {
                if(b==i&&b==j&&i==j)
                    continue;
                if(a[i]==a[j])
                    x++;
               
            }
       
        }
        printf("字符%c出现了%d次\n",a[b],x);
    }
}



[ 本帖最后由 勤奋的关键字 于 2011-11-26 07:27 编辑 ]
搜索更多相关主题的帖子: 键盘 字符串 
2011-11-25 17:15
luchar
Rank: 9Rank: 9Rank: 9
来 自:南京
等 级:蜘蛛侠
帖 子:279
专家分:1263
注 册:2011-11-3
收藏
得分:20 
程序代码:
#include <stdio.h>
#define N 100
void main()
{
    char a[N];
    int b,i,j,m=0,x;
    printf("请输入字符串:\n");
    gets(a);
    for(b=0;b<N;b++)
    {
        x=1;
        if(a[b]=='\0')
            break;
    for(j=0;j<b;j++)    //用于检查该字符是否在a[j]之前出现过,如果出现过,则给m赋值1
        if(a[j]==a[b])
        m=1;
    if(m==1) continue;   //如果m为1,则说明该字符已经出现过,则不继续,结束本次循环
        for(i=b+1;i<N;i++)
            if(a[b]==a[i])
                x++;             
        printf("字符%c出现了%d次\n",a[b],x);
    }
}
2011-11-25 18:03
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:0 
检重最好的办法是哈希表  你要检查字符那就开128的数组当哈希表就行了

                                         
===========深入<----------------->浅出============
2011-11-25 18:09
hxcet
Rank: 4
等 级:业余侠客
帖 子:78
专家分:229
注 册:2011-11-15
收藏
得分:0 
2L正解!
你的程序最后会把字符串中每个字符出现的次数逐一输出的,这样肯定会有重复
2011-11-25 19:44
心灵百合
Rank: 5Rank: 5
等 级:职业侠客
帖 子:215
专家分:367
注 册:2011-3-30
收藏
得分:0 
把 printf("字符%c出现了%d次\n",a[b],x); 这句放到循环外面
2011-11-25 19:52
勤奋的关键字
Rank: 1
来 自:辽宁
等 级:新手上路
帖 子:51
专家分:2
注 册:2011-10-24
收藏
得分:0 
回复 2楼 luchar
明白了,对啊 我怎么没想到这点呢,要是在设个变量做比较就对拉!  谢谢 焕然大悟!  呵呵~

人生就像程序,得经过一次次的调试才会趋于简单但却完美.
2011-11-26 07:29
勤奋的关键字
Rank: 1
来 自:辽宁
等 级:新手上路
帖 子:51
专家分:2
注 册:2011-10-24
收藏
得分:0 
回复 2楼 luchar
还有个问题, 咱两的程序 i 和 j的位置是不一样的,我的i行,j列,你的时跟我一样吗?如果不是我就没疑问了,如果一样的话为什么颠倒呢? 是不是 j 和 i 在这段程序里面没有什么实际意义吧,因为数组是一维数组,所以都代表个循环而已,我这个说法对吗?

人生就像程序,得经过一次次的调试才会趋于简单但却完美.
2011-11-26 07:34
于祥
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:5
帖 子:1047
专家分:4132
注 册:2011-4-24
收藏
得分:0 
2楼给力

最基础的往往是你最容易忽略的!
2011-11-26 09:50
勤奋的关键字
Rank: 1
来 自:辽宁
等 级:新手上路
帖 子:51
专家分:2
注 册:2011-10-24
收藏
得分:0 
回复 2楼 luchar
我刚才上课,老师把这题的答案给我们看了,但是我不是很明白。
程序代码:
#include "stdafx.h"
#include "string.h"
#define N 100
void main()
main()
{
    char str[80];
    int a[256]={0},i,temp;
    puts("Input string");
    gets(str);
    for(i=0;str[i]!='\0';i++)
    {
        temp=str[i];
        a[temp]++;
    }
    puts("");
    for(i=0;i<256;i++)
        if(a[i]!=0)
            printf("%c=%d ;",i,a[i]);
}
第一个FOR和第二个FOR   两个循环里面都看不懂,你能给我讲讲吗?

人生就像程序,得经过一次次的调试才会趋于简单但却完美.
2011-11-26 09:59
韩三明
Rank: 1
等 级:新手上路
帖 子:11
专家分:5
注 册:2011-8-30
收藏
得分:0 
以下是引用勤奋的关键字在2011-11-26 09:59:50的发言:

我刚才上课,老师把这题的答案给我们看了,但是我不是很明白。#include "stdafx.h"
#include "string.h"
#define N 100
void main()
main()
{
    char str[80];
    int a[256]={0},i,temp;
    puts("Input string");
    gets(str);
    for(i=0;str!='\0';i++)
    {
        temp=str[i];
        a[temp]++;
    }
    puts("");
    for(i=0;i<256;i++)
        if(a!=0)
            printf("%c=%d ;",i,a[i]);
}
第一个FOR和第二个FOR   两个循环里面都看不懂,你能给我讲讲吗?
我也是初学者
第一个FOR,相当于是把相同的字母放到相同的盒子,每放入一个字母则在该盒子上+1.
第二个FOR,表示盒子里的内容以及盒子上的数字。既该字母出现过的次数。
有疑问的地方是
第一个FOR里,str[i]是字符型,而temp是整数型。为什么可以代入?从下一行的a[temp]++可以看出,temp是整数,就说明str[i]是整数。可str[i]明明是字符。。。
第二个FOR里,printf("%c=%d",i,a[i])   i是数字,为什么输出的时候变成了字符?
请教知道的前辈能!
2011-11-27 00:32
快速回复:关于计算重复出现次数的问题
数据加载中...
 
   



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

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