| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1033 人关注过本帖, 1 人收藏
标题:有个地方不是很明白,请帮忙解释一下,谢谢.
只看楼主 加入收藏
当当
Rank: 1
等 级:新手上路
帖 子:235
专家分:0
注 册:2004-4-30
收藏(1)
 问题点数:0 回复次数:9 
有个地方不是很明白,请帮忙解释一下,谢谢.

/*随机给出50个数,计算其中出现次数最多的数是哪个,出现过多少次,频率是多少,最少 是哪个数,出现过多少次,频率是多少,用函数做.*/ #include <stdio.h> #include <stdlib.h> #include <time.h>

void stat(int num[]);

void main() { int num[50],i=0,k=0; static int count[10]; srand((unsigned)time(NULL)); for(i=0;i<50;i++) { num[i]=rand()*10/RAND_MAX; printf("%d\t",num[i]); }

for(i=0;i<50;i++)//50个数 { for(k=0;k<10;k++)//0-9的值 { if(num[i]==k)//如果num[0]=0;那么负责记数的变量count[0]就加一个; count[k]++; } } stat(count);//将记随机数出现次数的数组传入函数; }

void stat(int num[]) { static int i,max,min; max=min=num[0]; //将数组第一个值赋给记出现最多的变量和记出现最少的变量; for(i=1;i<10;i++) { if(max<num[i]) max=num[i];//判断哪个数出现的次数最多 if(min>num[i]) min=num[i];//判断哪个数出现的次数最少 } printf("出现次数最多的数字是:"); for(i=0;i<10;i++) { if(max==num[i]) //以上都还能明白,这里有点转不过弯来,请解释一下,谢谢 printf("%d\t",i); } printf("\n次数是:%d\n频率是:%d%%\n",max,max*2); printf("出现次数最少的数字是:"); for(i=0;i<10;i++) { if(min==num[i]) printf("%d\t",i); } printf("\n次数是:%d\n频率是:%d%%\n",min,min*2); }

搜索更多相关主题的帖子: 解释 
2004-06-23 19:14
zff_ff
Rank: 1
等 级:新手上路
帖 子:147
专家分:0
注 册:2004-5-12
收藏
得分:0 

max和min是什么变量?

num[]数组里存放的又是什么数据?

当max==num[i]或min==num[i]时i代表了什么?

这并不是什么很难的问题,如果你肯仔细看看的话

从时间算法上来说,这决不是一个好的程序,

其中完全可以节省两个循环的时间


偶是一只想要飞却忘了咋飞的菜鸟
2004-06-23 22:50
sfyghl
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2004-6-23
收藏
得分:0 

我给你写个答案:

#include<stdio.h>

#include<stdlib.h>

#include<time.h>

void stat(int arr[])

void main()

{

int a[50];

iint i;

int c[10]={0};

int j,k,m=0;

int b[10]={0,1,2,3,4,5,6,7,8,9}

printf("以下为产生的50个随即数:\n");

srand((10)*time(0));

for(i=0;i<50;i++)

{

a[i]=rand()*10/RAND_MAX;

printf("%d",a[i]);

}

printf("\n这些随即数中,0-9出现次数为别是:");

for(j=0;j<10;j++)

{

for(k=0;k<50;k++)

{

if(b[j]==a[k])

c[j]=c[j]+1;

}

printf("\n");

printf("%d",j);

printf("%d",c[j]);

}

stat(c);

}

void stat(int arr[])

{

int j,k,m,n;

k=arr[0];

for(m=0;m<10;m++)

{

if(arr[m]<=k)

{

k=arr[m];

j=m;

}

}

printf("\n这些随即数中,0-9中出现次数最少的数是:%d",j);

printf("\n出现次数是:%d",k);

n=k*100/50;

printf("出现频率是:%d%%",n);

k=arr[0];

for(m=0;m<10;m++)

{

if(arr[m]>=k)

{

k=arr[m];

j=m;

}

}

printf("\n这些随即数中,0-9中出现次数最大的数是:%d",j);

printf("\n出现的次数是:%d",k);

n=k*100/50;

printf("\n 出现频率是:%d%%",n);

printf("\n");

}

2004-06-23 23:25
sfyghl
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2004-6-23
收藏
得分:0 

晕,写了半天咋给写成一长条了

2004-06-23 23:26
sfyghl
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2004-6-23
收藏
得分:0 
你转不过弯那地方是开始先把那数组循环复制给另一个数组,经过另一个数组排序排出最小值付给max,然后在用max循环和最初的数组循环比较比到一样大小的数值后记录他的数组下标~
2004-06-23 23:31
zff_ff
Rank: 1
等 级:新手上路
帖 子:147
专家分:0
注 册:2004-5-12
收藏
得分:0 

http://websx.home.zccn.net/bbs/dispbbs.asp?boardID=44&ID=2718&page=1

难怪我觉的题目很眼熟了,原来你以前有问过

这是我当时给你的答案,不知道你看过没

希望能帮上你


偶是一只想要飞却忘了咋飞的菜鸟
2004-06-23 23:31
当当
Rank: 1
等 级:新手上路
帖 子:235
专家分:0
注 册:2004-4-30
收藏
得分:0 
看过,但是你只是求出谁出现的次数最多而已啊.

学好编程就能编出自己的未来! 加油!自信!努力!奋斗!
2004-06-25 15:10
zff_ff
Rank: 1
等 级:新手上路
帖 子:147
专家分:0
注 册:2004-5-12
收藏
得分:0 

void main() { int max=0,min=0; int num[50],i=0,k=0; int a[10]={0}; static int count[10]; srand((unsigned)time(NULL)); for(i=0;i<50;i++) { num[i]=rand()*10/RAND_MAX; a[num[i]]++; printf("%d\t",num[i]); } for(i=0; i<10;i++) { if(a[max]<a[i]) max=i; if(a[min]>a[i]) min=i; } printf("频率最高为%d\n",max); printf("频率最低为%d\n",min);

printf("\n最大次数是:%d",a[max],);

printf("\n最大次数是:%d",a[min],); }


偶是一只想要飞却忘了咋飞的菜鸟
2004-06-25 16:12
当当
Rank: 1
等 级:新手上路
帖 子:235
专家分:0
注 册:2004-4-30
收藏
得分:0 

a[num[i]]++;

这一句怎么解释一下,第一次看到这种格式.不过你的方法还真是高. 我上面的那个方法是我们老师教我们的,我已懂了.


学好编程就能编出自己的未来! 加油!自信!努力!奋斗!
2004-06-25 21:25
zff_ff
Rank: 1
等 级:新手上路
帖 子:147
专家分:0
注 册:2004-5-12
收藏
得分:0 

a[]是一个记数器,记录0~9的个数


偶是一只想要飞却忘了咋飞的菜鸟
2004-06-26 00:23
快速回复:有个地方不是很明白,请帮忙解释一下,谢谢.
数据加载中...
 
   



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

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