求教个问题使用C++编写一个小程序要求用Visual Studio可以运行

要求取100个随机数 排序后 用户输入一个数 然后从抽到的随机数中查找 找到就输出found 找不到就输出not found查找过程循环 直到用户输出-1退出程序
100以内的可以重复的数字也是可以的 期待你们的消息
4楼的兄弟没有 输入-1退出的一步~5楼兄弟的正在试~再次谢谢
5楼兄弟可以直接修改成一个完整的可运行程序吗 要把随机出来的数显示出来也可能是修改的不好~目前正在想办法显示数字 正在调试ING~~

//试试这个行不行
#include <iostream>
#include <ctime>
#include <cstdlib>
#include <iomanip>

using namespace std ;

const int SIZE = 100 ;

inline void exchange( int& x , int& y ) {
int t = x ;
x = y ;
y = t ;
}

void printarray(int source[] , int size){
for ( int i = 0 ; i < size ; i++)
cout << setw(8) << source[i] ;
}

void creatarray(int source[] , int size){
//产生随机数
srand( static_cast<int>(time(0)) ) ;
for(int i = 0 ; i < size ; i ++ )
source[i] = rand() % size ;
}

void quicksort(int source[] , int start , int end )
{
//快速排序
if( start < end ){
int i = start ;
int j = end + 1 ;
while( i < j ) {
i++;
while( source[i] < source[start] )
++i ;
j--;
while( source[j] > source[start] )
--j ;

if( i < j )
exchange(source[i] , source[j]) ;
}
exchange(source[j] , source[start]) ;
quicksort(source , start , j-1) ;
quicksort(source , j+1 , end) ;
}
}

void bubblesort(int source[] , int size) {
//冒泡排序
for ( int i = 0 ; i < size ; i++ )
for ( int j = size ; j > i ; j-- ) {
if ( source[j] < source[j-1] )
exchange(source[j] , source[j-1]) ;
}
}

int binarysearch(int source[] , int size , int num) {
//二分查找,返回 num 在 source 中的位置
int start = 0 , end = size-1 , mid ;
while(start <= end) {
mid = (start+end) / 2 ;
if( source[mid] == num )
return mid ;
else if ( source[mid] > num )
end = mid - 1 ;
else
start = mid + 1 ;
}
return -1 ;//找不到返回 -1
}

int search(int source[] , int size , int num) {
//顺序查找,返回 num 在 source 中的位置
for ( int i = 0 ; i < size ; i++ ) {
if(source[i] == num)
return i ;
}
return -1 ;//找不到返回 -1
}

int main(){

int source[SIZE] , i = 0 , pos = 0 ;

creatarray(source , SIZE) ;

//quicksort(source , 0 , SIZE-1) ;//排序
bubblesort(source , SIZE-1) ;
printarray(source,SIZE) ;

cout << "输入要查找的数,-1 退出" << endl ;
cin >> i ;
while( i != -1 ) {
pos = binarysearch(source,SIZE,i) ;//查找
//pos = search(source,SIZE,i) ;
if( pos != -1 )
cout << "found" << endl << "位置:" << pos << endl ;
else
cout << "not found" << endl ;
cout << "输入要查找的数,-1 退出" << endl ;
cin >> i ;
}

return 0 ;
}

如果有问题我再修改。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-10-26
代码如下:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a[100];
int i,j,search,count=0;
for(i=0;i<100;i++)
{
a[i]=rand()%100;
}
for(i=0;i<99;i++)
{
for(j=i+1;j<100;j++)
{
int temp;
if(a[i]>a[j])
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
printf("100个100以内的随机数(并且用从小到大排序):\n");
for(i=0;i<100;i++)
{
printf("%d\t",a[i]);
}
printf("请输入要找的数字:\n");
scanf("%d",&search);
for(i=0;i<100;i++)
{
if(search==a[i])
{
printf("found\n");
break;
}
if(search!=a[i])
{
count++;
if(count==100)
printf("not found\n");
}
}
system("PAUSE");
return 0;
}
本程序通俗易懂,希望你能从中有所收获,兄弟,加油啊!
第2个回答  2009-10-26
100个随机数都是100以内的数?那样的话岂不是不能创建一个无重复数的100以内数的数组...即,该100个随机数必然包含重复数据...是不是这个意思?LZ快来修改吧,程序都快写好了
第3个回答  2009-10-26
这随机数范围多大啊, 就 rand()的话, 能found就见鬼了
第4个回答  2009-10-26
100以内的随机数取100个不就是1-100么,楼主的问题把问题解释下把
相似回答