CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

求一简单算法(20行),在线等!

楼主chendaiyin(freeman)2005-06-04 11:41:51 在 C/C++ / C语言 提问

随机生成100个数存入数组,在不添加额外数组的情况下把奇数放左边的数组     偶数放右边的数组 问题点数:50、回复次数:15Top

1 楼mccxj(老鼠不逛街)回复于 2005-06-04 11:50:01 得分 0

等等。。。把奇数放左边的数组     偶数放右边的数组。。一个数组的左边和右边??Top

2 楼chendaiyin(freeman)回复于 2005-06-04 11:55:10 得分 0

别人问的一个数据结构的题目,这是有人写的:  
  #include   <stdlib.h>  
  #include"iostream.h"  
   
  void   main()  
  {  
      int   x[100];  
          unsigned     int   n=1234;  
          unsigned   int   y;  
  int   NUM;  
  cout   <<   "Input   the   random   number   :"   <<   endl;  
  cin   >>   NUM;  
  srand(NUM);  
  cout<<endl<<"the   random   number"<<endl;  
        for(int   i=0;i<100;i++)  
        {   y=rand(     );  
    int   temp   =   y%1234;  
    x[i]=temp;  
        }  
          for(   i=0;i<100;i++)  
        {cout<<x[i]<<"   ";  
  if(i%20==0)   cout<<endl;  
        }  
  cout<<endl<<endl<<"Even   number:";  
            for(   i=0;i<100;i++)  
        {   if(x[i]%2==0)     cout<<x[i]<<"   ";  
    if(i%20==0)   cout<<endl;  
        }  
        cout<<endl<<endl<<"Odd   number:";  
          for(   i=0;i<100;i++)  
        {   if(x[i]%2!=0)     cout<<x[i]<<"   ";  
    if(i%20==0)   cout<<endl;  
        }  
   
   
  }    
   
  写个不一样的就可以了Top

3 楼naturemickey(米老鼠)回复于 2005-06-04 12:00:55 得分 8

#include   <iostream>  
  #include   <cstdlib>  
   
  int   main(void){  
   
  int   a[100],   n;  
  srand(0);  
   
  for(int   i   =   0,   j   =   0,   k   =   50;   i   <   100;)  
  {  
  n   =   rand();  
  if(n   %   2   &&   j   <   50)  
  {  
  a[j]   =   n,   ++j,   ++i;  
  }  
  else   if(k   <   100){  
  a[k]   =   n,   ++k,   ++i;  
  }  
  }  
  return   0;  
  }Top

4 楼mccxj(老鼠不逛街)回复于 2005-06-04 12:04:27 得分 8

#include   <iostream.h>  
  #include   <stdlib.h>  
  #include   <stdio.h>  
  #include   <time.h>  
  #include   <iomanip.h>  
   
  const   int   MAX=100;  
   
  int   main()  
  {  
  int   a[MAX];  
  int   temp,left=0,right=MAX-1;  
  srand(   (unsigned)time(   NULL));  
  for(int   i=0;i<MAX;i++)  
  {  
  temp=rand();  
  if(temp%2==0)   {a[right]=temp;right--;}  
  else   {a[left]=temp;left++;}  
  }  
  for(i=0;i<MAX;i++)  
  {  
  cout<<setw(7)<<a[i];  
  if((i+1)%10==0)   cout<<endl;  
  }  
  return   0;  
  }Top

5 楼yezi101(椰子)回复于 2005-06-04 12:08:34 得分 6

下面没有产生随机的数组,因为那不是主要的,只给出了算法  
  #include<stdio.h>  
  #define   N   10  
  void   main()  
  {  
  int   M[N]={1,2,3,4,5,6,7,8,9,10};  
  int   i   ,j,temp;  
  i=0;  
  j=N-1;  
          while(i<j)  
  {  
    while(M[i]%2!=0)  
    i++;  
    while(M[j]%2!=1)  
    j--;  
    if(i<j)  
    {  
    temp=M[i];  
    M[i]=M[j];  
    M[j]=temp;  
    }  
  }  
  for(i=0;i<N;i++)  
  printf("%d   ",M[i]);  
  }  
  Top

6 楼inquisitor_2(灰影子)回复于 2005-06-04 13:59:26 得分 6

void   f(int   p[],int   left,int   right)  
  {  
          int   i,j;  
   
          i=left,j=left+1;  
          while   (j<=right)  
                        if   (p[j]%2)  
                              swap(j,++i,p);  
          swap(left,i,p);    
  }  
  void   swap(int   i,int   j,int   p[])  
  {  
            int   tmp;  
            p[i]=tmp;  
            p[i]=p[j];  
            p[j]=tmp;  
  }  
  只是排列的函数,没有写主函数Top

7 楼inquisitor_2(灰影子)回复于 2005-06-04 14:01:09 得分 0

while   (j<=right)  
              {     if   (p[j]%2)  
                              swap(j,++i,p);  
                      j++;  
                }  
  少写了一行......Top

8 楼mostideal(三甲)回复于 2005-06-04 14:57:18 得分 0

同意     mccxj(爱逛街的老鼠)   的  
  就那个就不错了。。。Top

9 楼hzh_net(_风云_)回复于 2005-06-04 15:16:28 得分 6

include   <stdlib.h>  
  #include"iostream.h"  
   
  void   main()  
  {  
      int   x[100];  
          unsigned     int   n=1234;  
          unsigned   int   y;  
  int   NUM;  
  cout   <<   "Input   the   random   number   :"   <<   endl;  
  cin   >>   NUM;  
  srand(NUM);  
  cout<<endl<<"the   random   number"<<endl;  
        for(int   i=0;i<100;i++)  
        {   y=rand(     );  
    int   temp   =   y%1234;  
    x[i]=temp;  
        }  
          for(   i=0;i<100;i++)  
        {cout<<x[i]<<"   ";  
  if(i%20==0)   cout<<endl;  
        }  
  cout<<endl<<endl<<"Even   number:";  
            for(   i=0;i<100;i++)  
        {   if(x[i]%2==0)     cout<<x[i]<<"   ";  
    if(i%20==0)   cout<<endl;  
        }  
        cout<<endl<<endl<<"Odd   number:";  
          for(   i=0;i<100;i++)  
        {   if(x[i]%2!=0)     cout<<x[i]<<"   ";  
    if(i%20==0)   cout<<endl;  
        }  
   
   
  }    
   
  ----------------------  
  #include   <iostream.h>  
  #include   <stdlib.h>  
  #include   <stdio.h>  
  #include   <time.h>  
  #include   <iomanip.h>  
   
  const   int   MAX=100;  
   
  int   main()  
  {  
  int   a[MAX];  
  int   temp,left=0,right=MAX-1;  
  srand(   (unsigned)time(   NULL));  
  for(int   i=0;i<MAX;i++)  
  {  
  temp=rand();  
  if(temp%2==0)   {a[right]=temp;right--;}  
  else   {a[left]=temp;left++;}  
  }  
  for(i=0;i<MAX;i++)  
  {  
  cout<<setw(7)<<a[i];  
  if((i+1)%10==0)   cout<<endl;  
  }  
  return   0;  
  }  
  ----------------------Top

10 楼SailorK(态度决定一切!)回复于 2005-06-04 16:22:30 得分 6

#include<iostream>  
  using   namespace   std;  
  #define   MAX_SIZE   10  
   
  main()  
  {  
          int   iArray[MAX_SIZE+1];  
          //cout<<sizeof(iArray)/sizeof(int)<<endl;  
          iArray[MAX_SIZE]='\0';  
           
          for(int   i=0;i<=MAX_SIZE-1;i++)  
          {  
                  //rand  
                  iArray[i]=rand()%100;  
                  cout<<iArray[i]<<"     ";  
          }  
          cout<<endl;  
           
          int   iFront=0,iBack=MAX_SIZE-1;  
          //int   iTemp=0;  
           
          for(int   j=0;j<=MAX_SIZE-1;j++)  
          {  
                  if(iFront>=iBack)     break;  
                  if(iArray[iFront]%2)      
                  {  
                          iFront++;  
                          continue;  
                  }  
                  if(!(iArray[iBack]%2))  
                  {  
                          iBack--;  
                          continue;  
                  }  
                  swap(iArray[iFront],iArray[iBack]);  
                  /*iTemp=iArray[iFront];  
                  iArray[iFront]=iArray[iBack];  
                  iArray[iBack]=iTemp;  
                  */  
                  iFront++;  
                  iBack--;  
          }  
           
          for(int   k=0;k<=MAX_SIZE-1;k++)  
          {  
                cout<<iArray[k]<<"     ";  
          }  
          cout<<endl;  
                   
          system("\npause");  
  }  
  Top

11 楼tian_su(问天(渺小得惶恐))回复于 2005-06-04 17:36:04 得分 6

在VC6.0中可以运行  
  其它未知  
  #include   "iostream.h"  
  #include   <time.h>  
  #include   <stdlib.h>  
   
  void   main()   {  
  int   a[100];  
  int   i=0,j=99;  
  int   f;  
  srand((unsigned)time(0));  
  for(int   d=0;d<100;d++)   {  
    f=rand()%10000;  
  ((f%2?1:0)==1)?(a[i++]=f):(a[j--]=f);  
  }  
  for(int   e=0;e<100;e++)  
  cout<<a[e]<<"   ";  
  }  
   
  呵,不到20行哦Top

12 楼gogdo(草草)回复于 2005-06-04 18:55:01 得分 2

#include   "iostream"  
  using   namespace   std;  
  #include   "iomanip"  
   
  void   main()  
  {  
  int   a[100];  
  int   j,x=0;  
  for(int   i=0,j=99;   i<=j;)  
  {  
  x   =   rand()%100;  
  if(x   %   2==0)  
      a[i++]   =   x;  
  else    
      a[j--]   =   x;  
  }  
  for(int   i=0;   i<100;   i++)  
  { if(i   %   10==0)  
      cout<<endl;  
  cout<<setw(4)<<   a[i];  
  }  
  }  
  这段CODE可以吧,请问各位高手其中在FOR循环里为什么不可以这样定义?  
  --for(int   i=0,int   j=99;i<=j;)     ?????!!!!!  
  Top

13 楼mccxj(老鼠不逛街)回复于 2005-06-04 19:24:38 得分 0

。。。晕。。现在写code怎么都比谁的短了。。不是要清晰吗?Top

14 楼yuanarea(Sail before)回复于 2005-06-04 23:12:14 得分 0

tian_su(问天)   经典Top

15 楼foochow(无聊,灌水......)回复于 2005-06-05 00:48:00 得分 2

#include<iostream.h>  
  #include<time.h>  
  #include<stdlib.h>  
  int   main()  
  {  
  int   a[100],x,i=0,j=99;  
  srand(time(0));  
  while(i<=j)  
  if((x=rand()%200)%2)a[i++]=x;  
  else   a[j--]=x;  
  for(i=0;i<100;++i)cout<<a[i]<<"   ";  
  return   0;  
  }Top

相关问题

  • 简单算法
  • 求一简单算法,在线等!
  • 简单的算法!
  • 求简单算法??
  • 求简单算法??
  • 求简单算法!!
  • 求简单算法
  • 求对jpg文件进行图片缩小的简单算法
  • 线上等一很简单的算法,语言请用C++ !!
  • 银行算法

关键词

  • 数组
  • srand
  • max
  • unsigned
  • cout
  • num
  • main
  • include
  • temp
  • time

得分解答快速导航

  • 帖主:chendaiyin
  • naturemickey
  • mccxj
  • yezi101
  • inquisitor_2
  • hzh_net
  • SailorK
  • tian_su
  • gogdo
  • foochow

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo