随机生成【1,100】之间的10个整数存放在数组中。

(1)对其由小到大进行排序
(2)从键盘输入一个整数,查找该数是否在数组中,如果存在则从数组中删除该数
用C语言编写。 加程序的注释

#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#define SIZE 10
main()
{
int ary[SIZE],i=0,j=0,k,n,m;
time_t t;
srand((unsigned)time(&t));//随机数的产生与系统时间有关
for(i=0;i<SIZE;i++) //输出生成数结果
{
ary[i]=rand()%100+1;
printf("The unifrom randrom number %d is %d\n",i+1,ary[i]);
}
arry(ary);//调用排序函数
for(k=0;k<SIZE;k++)/*输出排序结果,不是必需的*/
printf("After arry The %d is %d\n",k+1,ary[k]);
m=find(ary); /*调用find函数查找要删除的数并删除*/
for(n=0;n<SIZE-m;n++)/*输出删除之后的结果,不是必需的*/
printf("After delete %d is %d\n",n+1,ary[n]);
getch();
}
void arry(int t[])//排序函数
{
int i,j,temp;
for(i=0;i<SIZE;i++)
{
for(j=0;j<SIZE;j++)
{
if(t[i]<t[j])
{
temp=t[i];
t[i]=t[j];
t[j]=temp;
}
}
}
}

int find(int b[])//找出要删除的数并删除
{
int i,j,l=0,k;
printf("Please input the number you find:");
scanf("%d",&i);
for(j=0;j<SIZE;j++)
{
if(b[j]==i)
{
l++;
for(k=j;k<SIZE-l;k++)
b[k]=b[k+1];
j--;
}
}
return l;//返回值为删除相同数的个数
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-05-17
#include<stdio.h>
#include<stdlib.h>
#include<ctime>
#define MAX1 100 //在100以内找
#define MAX2 10 //找10个

int * random(int * a , int k){

int * random_store=(int *)malloc(sizeof(int)*k);

for(int i=0;i<k;i++){
random_store[i]=a[i];
}

srand(time(0)); // 初始化随机数生成器 头文件#include<ctime>

for(i=0;i<MAX1;i++){ // 使生成不重复的随机数
random_store[i]=rand()%MAX1;
for(int j=0;j<i;j++){
if(random_store[j]==random_store[i]){ //如果有重复的回退一步
i--;
break;
}
}
if(i==k)
break;
}

for( i=0;i<k;i++){
a[i]=random_store[i];
}

return a;

}
int * order(int * a,int k){
int MAX3=200;
int temp=0;
int mark=0;
for(int i=0;i<k;i++){
for(int j=i;j<k;j++){
if(a[j]<MAX3){ //从小到大排序
MAX3=a[j];
mark=j;
}
}
temp=a[i];
a[i]=MAX3;
a[mark]=temp;
MAX3=200;
}

return a;
}

int * find(int * a,int k,int key){
for(int i=0;i<k;i++){
if(a[i]==key){
a[i]=0;
return a;
}
}
return a;

}
void main(){
int * a=(int *)malloc(sizeof(int)*MAX2);
int key=0;
a=random(a,MAX2); //随机生成数
a=order(a,MAX2); //排序
for(int i=0;i<MAX2;i++){
printf("%d ",a[i]); //不需要可以删掉
}
printf("\n请输入一个数字:");
scanf("%d",&key);
a=find(a,MAX2,key); ///查找是否有与输入的数字一样的数
for( i=0;i<MAX2;i++){
printf("%d ",a[i]);
}
}
第2个回答  2008-05-18
#include <iostream>
using namespace std;
int cmp(const void *p1,const void *p2)//qsort中的比较函数
{
int *ptr1=(int*)p1;
int *ptr2=(int*)p2;
return (*ptr1-*ptr2);//从小到大排序
}
int main()
{
int list[10],num,flag;
srand(time(NULL));//随机种子
for (int i=0;i<10;i++)
list[i]=(rand()%100+1);//随机生成1~100的数
cout<<"随机生成的10个数为:"<<endl;
for (int i=0;i<10;i++)
cout<<list[i]<<" ";
cout<<endl;
qsort(list,10,sizeof(list[0]),cmp);//排序
cout<<"排序后的10个数为:"<<endl;
for (int i=0;i<10;i++)
cout<<list[i]<<" ";
cout<<endl;
cout<<"请输入待查找的数:";
cin>>num;
flag=0;
for (int i=0;i<10;i++)
if (num==list[i])
{
flag=1;
break;
}
if (flag)
cout<<num<<"在原数组中。"<<endl;
else
cout<<num<<"不在原数组中。"<<endl;
system("pause");
return 0;

}

输入输出函数你自己改成c语言的形式吧
第3个回答  2008-05-17
实验一下就知道拉
相似回答