| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 707 人关注过本帖
标题:快死人了。。。。。。
只看楼主 加入收藏
accbdbdada
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2008-10-4
结帖率:100%
收藏
 问题点数:0 回复次数:7 
快死人了。。。。。。
题目是  1个公司的100个软件投票,输出排名前10的软件的序号,此我用的双循环就是不成功,我快被折磨疯了。。。
#include<stdio.h>
#include<stdlib.h>
#define NUM 100

main()
{
      int i,a;
      int score[NUM],number[10];
      int j,temp;
      randomize();
      for(i=0;i<NUM;i++){
      score[i]=random(100);

          }
      for(i=0;i<NUM-1;i++){
       number[i]=i+1;

      for(j=i+1;j<NUM;j++){
      if(score[j]>score[i])
      temp=number[j];
      number[j]=number[i];
      number[i]=temp;
      }
}    printf("\nOrdering list is:");

     for(i=0;i<10;i++){
    printf("%5d",number[i]);

} return 0;    }
搜索更多相关主题的帖子: 我不会。。。 
2008-10-18 20:51
liyanhong
Rank: 3Rank: 3
来 自:水星
等 级:禁止访问
威 望:8
帖 子:1867
专家分:0
注 册:2008-5-3
收藏
得分:0 
score[i]=random(100);
??//每个人可以投100张票可是这个意思?

爱上你 是 我的错  可是离 开  又舍不得  听着你为我写的歌     好难过
如果说 我说如果  我们还 能  重新来过   不去计 较 谁对谁错  会怎么做
2008-10-18 20:54
accbdbdada
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2008-10-4
收藏
得分:0 
每个软件的投票数是1~100随即的
2008-10-18 20:55
liyanhong
Rank: 3Rank: 3
来 自:水星
等 级:禁止访问
威 望:8
帖 子:1867
专家分:0
注 册:2008-5-3
收藏
得分:0 
线性求余
int a=22,b=1,m=100,i;
  int r[10000];
  r[0]=2008;
  for(i=1;i<10000;i++)
  {
    r[i]=(a*r[i-1]+b)%m;
  }
  //求0-100的随机数代码  换上去

我只想讲这个东西

[[it] 本帖最后由 liyanhong 于 2008-10-18 21:14 编辑 [/it]]

爱上你 是 我的错  可是离 开  又舍不得  听着你为我写的歌     好难过
如果说 我说如果  我们还 能  重新来过   不去计 较 谁对谁错  会怎么做
2008-10-18 21:04
accbdbdada
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2008-10-4
收藏
得分:0 
恩,谢谢了。
不过我还是不能理解,我着程序是哪有毛病,还有您讲的这些的用意。我刚接触C语言2个月
(题目是  1个公司的100个软件投票,输出排名前10的软件的序号
输出的是序号,不是票数。)
2008-10-18 21:11
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
程序代码:
/*******************************************************************************

        个公司的100个软件投票,输出排名前10的软件的序号

--------------------------------------------------------------------------------

        我按照我的理解来作:有一百个软件,然后随机每个软件给它赋值,然后排序,输
    出得票数最多的前十名的序号(即是数组的下标)。

*******************************************************************************/
#include<stdio.h>
#include<time.h>
#define N 100
/*-------------------------随机数赋值----------------------------*/
void eval(int *a)
{
    int i;
    for(i=0;i<N;i++)
    {
        srand(time(NULL)+i);
        a[i]=rand()%100+1;
    }
}
/*---------------------交换数据--------------------------*/
void _swap(int *a,int *b)
{
    int tmp;
    tmp=*a;
    *a=*b;
    *b=tmp;
}
/*-----------------------冒泡法排序------------------------*/
void sort(int *a,int *b)
{
    int i,j;
    for(i=0;i<N;i++)
        for(j=i+1;j<N;j++)
            if(a[i]<a[j])
            {
                _swap(&a[i],&a[j]);
                _swap(&b[i],&b[j]);
            }
}
/*--------------------主函数-------------------------------*/
int main(void)
{
    int a[N],b[N];
    int i;
    for(i=0;i<N;i++)
        b[i]=i+1;
    eval(a);
    sort(a,b);
    for(i=0;i<10;i++)
        printf("票数: %d ,序号 : %d\n",a[i],b[i]);
    return 0;
    getch();
}
        
收到的鲜花
  • liyanhong2008-10-18 23:42 送鲜花  45朵   附言:我很赞同
2008-10-18 23:38
larden
Rank: 1
等 级:新手上路
帖 子:19
专家分:7
注 册:2008-8-28
收藏
得分:0 
for(i=0;i<NUM-1;i++){
       number[i]=i+1;

      for(j=i+1;j<NUM;j++)
这里写错了,把number[i]=i+1;去掉,number就只有10个大小
应该for(i=0;i<NUM-1;i++)
    for(j=i+1;j<NUM;j++){
}程序还有写小毛病就自己调试了,楼上的用到指针写的会简练点不用指针就直接数组上了
2008-10-19 02:38
woshicl
Rank: 1
来 自:河北大学
等 级:新手上路
帖 子:13
专家分:0
注 册:2008-3-26
收藏
得分:0 
学习了
2008-10-19 20:30
快速回复:快死人了。。。。。。
数据加载中...
 
   



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

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