| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2277 人关注过本帖
标题:[讨论]更好方法
只看楼主 加入收藏
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
以下是引用C语言学习者在2006-10-30 20:47:11的发言:

统计每一个字符个数.
例:
输入:abcdefgabcdeabc
输出:33322110000000
自己觉得效率不好,有什么更好方法请介绍。
#include<conio.h>
#include<stdio.h>
int main()
{
char a[80],b[80];
int i,j,k=0,n=0,m,l=0,g;
gets(a);
for(i=0;a[i]!=0;i++);
g=m=i;
while(m!=0)
{
for(j=0;j<m;j++)
{

if(a[0]!=a[j])
{b[n]=a[j];n++;}//将不和a[0]相同的字符记录下来.
else
{
k++; //统计和a[0]相同的个数
}
}
printf("%d ",k);
b[n]=0;
for(j=0;b[j]!=0;j++)
a[j]=b[j]; //写回给a
m=j; //记录不同字符的个数.
n=k=0;
l++;
}
觉得第二次循环时,if(a[0]!=a[j])这个会一直执行.m将不会改变.是否将里面的a[0]改为a[l].

for(i=0;g-l>i;i++)
printf("0 ");
printf("\n");
getch();
return 0;
}


倚天照海花无数,流水高山心自知。
2006-10-31 21:57
C语言学习者
Rank: 4
等 级:贵宾
威 望:13
帖 子:1278
专家分:0
注 册:2006-9-26
收藏
得分:0 
结果可能不正确。

谁有强殖装甲第二部,可以Q我460054868
2006-10-31 22:08
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
那还是请楼主把题目的意思说清楚吧,我还是没能弄懂你的程序到底要怎么样输出.
假如是: abcdgde
那么输出:1112110
还是: 2111110
还是: 1112101

倚天照海花无数,流水高山心自知。
2006-10-31 22:12
C语言学习者
Rank: 4
等 级:贵宾
威 望:13
帖 子:1278
专家分:0
注 册:2006-9-26
收藏
得分:0 
以下是引用nuciewth在2006-10-31 22:12:45的发言:
那还是请楼主把题目的意思说清楚吧,我还是没能弄懂你的程序到底要怎么样输出.
假如是: abcdgde
那么输出:1112110

例:
abcdegde
1
1
1
2 (d出现二次)
1
1
aaaaddda
5 (出现五次)
3 (出现三次)
0 (其余都是0)
0
0
0
0
0
上面只是为了说明,而下面才是真正形式
假如是: abcdgde
那么输出:1112110

[此贴子已经被作者于2006-10-31 22:23:29编辑过]


谁有强殖装甲第二部,可以Q我460054868
2006-10-31 22:21
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 

#include<stdio.h>
#include<string.h>
int main()
{
int i,n=0,len=0;
char c;
int a[26]={0};
while((c=getchar())!='\n')
{
a[c-'a']++;
len++;
}
for(i=0;i<26;i++)
{
if(a[i]!=0)
{
printf("%d",a[i]);
n++;
}
}
while(n<len)
{
printf("0");
n++;
}
printf("\n");
return(0);
}


/*看看是不是这个意思*/


倚天照海花无数,流水高山心自知。
2006-10-31 22:49
zero442
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2006-5-26
收藏
得分:0 

好象还是不能符合楼主的要求啊!!


还是不知道怎么会有这样的想法,但是我永远之爱你一个!!
2006-10-31 23:30
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 

他要的不是这么么?
假如是: abcdgde
那么输出:1112110


倚天照海花无数,流水高山心自知。
2006-10-31 23:35
unicorn
Rank: 4
等 级:贵宾
威 望:14
帖 子:1066
专家分:0
注 册:2005-10-25
收藏
得分:0 

刚下课...用链表写了个 思想很简单怎么写出来这么冗杂呢...

#include<stdio.h>
#include<malloc.h>
#include<string.h>
typedef struct node
{ char c;
int count;
struct node *next;
}*snode;

void main()
{
snode head,p,q,s;
int flag=0;
p=(snode)malloc(sizeof(struct node));
char ch[30];
gets(ch);
p->c=ch[0];
p->count=1;
p->next=NULL;
head=s=p;
for(int i=1;ch[i]!='\0';i++)
{ while(s!=NULL)
{
if(ch[i]==s->c)
{
s->count++;
flag=1;
break;
}
p=s;
s=s->next;
}
s=head;
if(flag==0)
{q=(snode)malloc(sizeof(struct node));
q->c=ch[i];
q->count=1;
q->next=p->next;
p->next=q;
p=q;
}
flag=0;
}
p=head;
flag=1;
while(p!=NULL)
{printf(\"%d\",p->count);
s=p;
p=p->next;
free(s);
flag++;
}
while(flag++<=strlen(ch))
putchar('0');
printf(\"\n\");
}


unicorn-h.spaces. ◇◆ sava-scratch.spaces.  noh enol ! pue pu!w hw u! shemle aq ll!m noh 
2006-11-01 12:53
wyzn12
Rank: 1
等 级:新手上路
帖 子:129
专家分:0
注 册:2006-10-28
收藏
得分:0 
呵呵,我也觉得题目要求是的任意的话用链表是最好的

新王登基,血流成河!
2006-11-01 15:46
C语言学习者
Rank: 4
等 级:贵宾
威 望:13
帖 子:1278
专家分:0
注 册:2006-9-26
收藏
得分:0 
to:nuciewth版主,只对26字符处理。
to:unicorn版主,为什么没有按我形式呢。
例:输入1234aaa
输出1111300
甚至
!@~@$#
121110

谁有强殖装甲第二部,可以Q我460054868
2006-11-01 18:58
快速回复:[讨论]更好方法
数据加载中...
 
   



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

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