| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 985 人关注过本帖, 1 人收藏
标题:统计个数
只看楼主 加入收藏
银河战舰2011
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2011-10-27
结帖率:88.89%
收藏(1)
已结贴  问题点数:15 回复次数:13 
统计个数
有一个字符数组  有5个元素    如何统计出其中的相同元素的个数, 并输出
        n=1;
    for(i=0;i<5;i++)
    {
        for(d=1;d<5;d++)
        {
            if(!strcmp(a[i],a[i+d]))
            n++;
        }
        printf("The number of %c is %d\n",a[i],n);
        n=1;
        }

这是我写的    但是输出后的结果有多余的
比如说:a[5]={'A','B','A','B','B'}
结果是The number of A is 2
The number of B is 3
The number of A is 1
The number of B is 2
The number of B is 1

后面的三行怎么才能去掉
搜索更多相关主题的帖子: 元素 如何 统计 number 
2011-12-13 11:20
天天涯涯
Rank: 4
等 级:业余侠客
帖 子:215
专家分:267
注 册:2011-10-17
收藏
得分:0 
你能不能把完整的题贴出来???
2011-12-13 11:25
银河战舰2011
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2011-10-27
收藏
得分:0 
回复 2楼 天天涯涯
前面只是对a[5]的输入  都是scanf()   所以我就没有贴
2011-12-13 11:27
半个灵魂
Rank: 2
等 级:论坛游民
帖 子:13
专家分:11
注 册:2011-11-17
收藏
得分:0 
你那个嵌套循环明显重复了撒,应该是这样的:
for(i=0;i<5;i++)
{
   for(d=i+1;d<5-i;d++)
 
2011-12-13 11:35
银河战舰2011
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2011-10-27
收藏
得分:0 
回复 4楼 半个灵魂
关键问题不是这个  而是输出结果的重复
2011-12-13 11:59
半个灵魂
Rank: 2
等 级:论坛游民
帖 子:13
专家分:11
注 册:2011-11-17
收藏
得分:0 
回复 5楼 银河战舰2011
你那样输出不重复才怪!你对程序的执行过程还没有理解,自己再好好想想为什么会重复。。。。
2011-12-13 12:13
银河战舰2011
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2011-10-27
收藏
得分:0 
回复 6楼 半个灵魂
按照你写的 输出的还是重复呀
2011-12-13 16:25
tw720
Rank: 2
等 级:论坛游民
帖 子:6
专家分:18
注 册:2011-11-26
收藏
得分:0 
你可以顺序去看看你写的程序的执行过程:(1)第一个元素和后面的元素依次比较;(2)第二个元素和后面的元素依次比较,依次类推.....到第三个元素的时候,'A',后面没有和它相同的元素,所以输出为1,后面的'B'是同样的道理。
要想不重复,你应该在比较后面的元素时,首先判断该元素是不是之前已经比较过的。
2011-12-13 17:11
银河战舰2011
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2011-10-27
收藏
得分:0 
回复 8楼 tw720
你说的这些问题 我已经想到了,而且我也是了很多方法让后面的和前面的比较   可是还是不行   所以我想问一下代码应该怎么写
2011-12-14 10:17
luchar
Rank: 9Rank: 9Rank: 9
来 自:南京
等 级:蜘蛛侠
帖 子:279
专家分:1263
注 册:2011-11-3
收藏
得分:8 
简单理解的方法
程序代码:
#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);
    }
}

哈希表法
程序代码:
#include "string.h"
#define N 100
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]);
}
2011-12-14 12:17
快速回复:统计个数
数据加载中...
 
   



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

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