如何用c语言实现:定义一个1~100的int数组,随机从里边选择十个数字?

如题所述

#include<stdio.h>
void insert(int *a, int *p){
int m,i,e;
printf("插入位置:(0<m<%d)",*p);
scanf("%d", &m);
printf("插入元素的值:");
scanf("%d", &e);
for(i = *p; i >= m ; --i)
a[i] = a[i - 1];
a[m-1] = e;
(*p)++;
}

void sort(int *a, int *p){
int i,j,temp;
for(i = 0; i<*p-1; ++i)
for(j = 0; j<*p-i-1; ++j){
if(a[j] > a[j+1]){
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}

}
void delet(int *a, int *p){
int i,m;
printf("删除第几个元素:(0<m<%d)",*p);
scanf("%d", &m);
for(i = m; i <= *p; ++i)
a[i-1] = a[i];
(*p)--;

}

void input(int *a, int *p){
int m,i;
printf("输入元素个数");
scanf("%d",&m);
for(i = 0; i<m; ++i)
scanf("%d",&a[i]);
*p=m;
}

void display(int *a, int *p){
int i;
for(i = 0; i < *p; ++i)
printf("%5d",a[i]);
printf("\n");
}

void main( )
{
int a[10],n=0,m;
do{
printf("1,输入数组\n""2,插入数据\n""3,显示数组\n""4,删除数据\n""5,数组排序\n""0,退出\n");
scanf("%d",&m);
switch(m){
case 1:input(a,&n);
display(a,&n);
break;
case 2:insert(a,&n);
display(a,&n);
break;
case 3:display(a,&n);
break;
case 4:delet(a,&n);
display(a,&n);
break;
case 5:sort(a,&n);
display(a,&n);
break;

}
}while(m);
}
粗糙做了做 vc下可运行
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-10-15
/////////////下面是运行效果和代码,有防止重复选择相同位置数的功能///////////////////////////////
生成100个随机数:
a[ 0]= 6 a[ 1]= 70 a[ 2]= 67 a[ 3]= 62 a[ 4]= 46
a[ 5]= 93 a[ 6]= 73 a[ 7]= 67 a[ 8]= 52 a[ 9]= 3
a[10]= 63 a[11]= 88 a[12]= 56 a[13]= 51 a[14]= 98
a[15]= 63 a[16]= 87 a[17]= 75 a[18]= 49 a[19]= 93
a[20]= 53 a[21]= 37 a[22]= 21 a[23]= 20 a[24]= 56
a[25]= 8 a[26]= 90 a[27]= 8 a[28]= 49 a[29]= 86
a[30]= 83 a[31]= 20 a[32]= 13 a[33]= 27 a[34]= 80
a[35]= 86 a[36]= 65 a[37]= 89 a[38]= 33 a[39]= 83
a[40]= 57 a[41]= 54 a[42]= 82 a[43]= 52 a[44]= 63
a[45]= 15 a[46]= 37 a[47]= 46 a[48]= 98 a[49]= 98
a[50]= 91 a[51]= 79 a[52]= 69 a[53]= 39 a[54]= 11
a[55]= 74 a[56]= 22 a[57]= 14 a[58]= 36 a[59]= 59
a[60]= 22 a[61]= 55 a[62]= 65 a[63]= 34 a[64]= 79
a[65]= 46 a[66]= 90 a[67]= 53 a[68]= 23 a[69]= 1
a[70]= 92 a[71]= 92 a[72]= 43 a[73]= 48 a[74]= 72
a[75]= 69 a[76]= 16 a[77]= 96 a[78]= 65 a[79]= 48
a[80]= 21 a[81]= 91 a[82]= 83 a[83]= 12 a[84]= 17
a[85]= 43 a[86]= 52 a[87]= 58 a[88]= 2 a[89]= 95
a[90]= 29 a[91]= 95 a[92]= 30 a[93]= 74 a[94]= 80
a[95]= 33 a[96]= 32 a[97]= 3 a[98]= 81 a[99]= 66
在第5次选择随机数时,a[6]已被选过!重新选择!

100个随机内随机选10个数:
a[ 0]= 6 a[11]=88 a[64]=79 a[ 6]=73 a[89]=95
a[ 6]=73 a[58]=36 a[49]=98 a[35]=86 a[25]= 8
Press any key to continue
#include "stdio.h"
#include "stdlib.h"
#include "time.h"

main()
{
int i,k,tmp,flag,a[100],b[10]={0};
srand((unsigned)time(NULL));
for (i=0;i<100;i++)
{
a[i]=rand()%100+1;
}
printf("生成100个随机数:\n");
for (i=0;i<100;i++)
{
printf("a[%2d]=%3d ",i,a[i]);
if ((i+1)%5==0)
{
printf("\n");
}
}

for (i=0;i<10;i++)
{
tmp = rand()%100;
for (k=0;k<i;k++)
{
flag = 0;
if (b[k]==tmp)
{
flag = 1;
printf("在第%d次选择随机数时,a[%d]已被选过!重新选择!\n",i,tmp);
}
else
flag = 0;
}
if (flag==0)
{
b[i] = tmp;
}
if (flag==1)
{
i--;
}

}
printf("\n100个随机内随机选10个数:\n");
for (i=0;i<10;i++)
{
printf( "a[%2d]=%2d ",b[i],a[b[i]]);
if ((i+1)==5)
printf("\n");
}
printf("\n");
}本回答被提问者采纳
第2个回答  2011-07-18
#include<iostream>
#include <Windows.h>
using namespace std;

int main()
{
cout<<GetTickCount()%100<<endl;
return 0;
}
这个可以得到一个0~99的数字,你可以当数组下标从数组里取值
第3个回答  2011-07-18
百度一下 里面有你需要的答案
相似回答