| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 407 人关注过本帖
标题:请各位帮忙解决一下
只看楼主 加入收藏
miao_100200
Rank: 2
来 自:广东-广州
等 级:论坛游民
帖 子:45
专家分:30
注 册:2009-10-26
结帖率:77.78%
收藏
已结贴  问题点数:20 回复次数:4 
请各位帮忙解决一下
定义一个50个int的数组,随机产生50个不同的整数,从大到小排序
2009-11-13 09:51
m456m654
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:783
专家分:2806
注 册:2009-9-17
收藏
得分:0 
用srand(time())来产生随机数,排序用冒泡法或者比较法。
2009-11-13 10:02
李若斌
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:219
专家分:184
注 册:2009-9-30
收藏
得分:2 
随机产生50个数是你输入的还是要你用一个函数来产生?
排序的话我就写一点:
int i,j,a[50],temp,max,maxi;
for(i=0;i<50;i++)
 {max=a[i];maxi=i
  for(j=i+1;j<50;j++;)
   {if(a[maxi]<a[j]) maxi=j;}
  temp=a[i];
  a[i]=a[maxi];
  a[maxi]=temp;
}
printf("a[50]=");
 for(i=o;i<50;i++)
  printf{"%3d",a[i]);
 不知道这里有没有错误 ,还请大家提点一下。
2009-11-13 10:18
ml232528
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:367
专家分:879
注 册:2007-7-23
收藏
得分:6 
程序代码:
#include<time.h>
#include<stdlib.h>
#include<stdio.h>

void sequence(int *a);

int main()
{
    srand(time(0));
    int a[50];
    printf("原始数据为\n");
    for(int i=0;i<50;i++)
    {        
        a[i]=rand();           //生成随机数
        printf("%6d",a[i]);    
        if(0==(i+1)%5)printf("\n");
    }

    sequence(a);              //排序方法
    printf("\n排序之后\n");
    for(int i=0;i<50;i++)
    {    
        printf("%6d",a[i]);    
        if(0==(i+1)%5)printf("\n");
    }

        
    getchar();    
} 

void sequence(int *a)
{
    int max,k,t;
    for(int i=0;i<50;i++)
    {
        max=a[i];k=i;
        for(int j=i;j<50;j++)
        {
            if(max<a[j]){max=a[j];k=j;}
        }
        t=a[i];a[i]=a[k];a[k]=t;
    }
}






[ 本帖最后由 ml232528 于 2009-11-13 10:46 编辑 ]

-︻┻┳═一 ☆ 悲伤的代价就是让自己明白什么是最重要的和应该珍惜的
2009-11-13 10:41
UserYuH
Rank: 12Rank: 12Rank: 12
来 自:毅华
等 级:火箭侠
威 望:8
帖 子:720
专家分:3300
注 册:2009-8-10
收藏
得分:12 
完整的程序,生成50个不相同的整数并按从大到小排序。
(每随机生成一个整数,就按从大到小顺序插入数组,如有相同重新生成该数)
程序代码:
#include <stdio.h>
#include <time.h>

int main(void)
{
  int a[50]={0},i,j,k,n;

  srand(time(NULL));
  for(i=0;i<50;i++)   
   {
     n=rand();
     for(j=0;j<i;j++)      /* 找插入点 */
       {
         if( n > a[j] )
          {
            for(k=i;k>j;k--)  /* 元素往后移 */
               a[k]=a[k-1];

            break;
          }
         else if( n == a[j] )  /* 如有相同再重新生成这个整数 */
           { i--; break;}
       }
     a[j]=n;         /* 插入到数组 */
   }

  for(i=0;i<50;i++)   /* 打印 */
    {
     printf("%-7d",a[i]);
     if((i+1)%10==0) printf("\n");
    }
  printf("\n\n");
  return 0;
}


[ 本帖最后由 UserYuH 于 2009-11-13 10:53 编辑 ]

努力—前进—变老—退休—入土
2009-11-13 10:41
快速回复:请各位帮忙解决一下
数据加载中...
 
   



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

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