初学者,求简单的程序。
编写程序,随机生成30个10-99之间的整数保存到数组中,在输出此数组后,要求删除数组中所有重复的元素之后再次输出。
程序代码:
root@~ #cat randarray.c #include <stdio.h> #include <time.h> int main (void) { srand((unsigned)time(NULL)); int a[30]; int i,j,k,len=30,random,count=0; //生成一个30个大于10小于100的整数数组 for(i=0;i<len;i++) { a[i]=rand()%(100-10)+10; } //经典的排序(升序) for(i=0;i<len-1;i++) { for(j=i+1;j<len;j++) { if(a[i]>a[j]) { k=a[i]; a[i]=a[j]; a[j]=k; } } } //删除重复的元素 i=0,j=0,k=0; while(i<len) { if(a[i]==a[i+1]) { i++; k++; continue; } a[j]=a[i]; j++; i++; } //增加不重复的元素 len-=k; do { random=rand()%(100-10)+10; for(i=0;i<len;i++) { if(a[i]!=random) { j++; } } if(j==len) { a[len]=random; len++; j=0; count++; }else{ j=0; continue; } }while(count!=k); //打印 for(i=0;i<len;i++) { printf ("%i ",a[i]); };printf ("\n"); return 0; } root@~ #
测试:
root@~ #./randarray
13 16 17 18 24 25 28 37 38 41 48 50 53 54 59 60 62 68 69 72 73 74 77 79 81 86 92
94 87 55
root@~ #./randarray
13 16 19 30 31 33 34 35 40 46 47 50 54 55 61 62 70 72 75 78 79 81 86 96 14 80 39
58 88 53
root@~ #./randarray
13 16 19 30 31 33 34 35 40 46 47 50 54 55 61 62 70 72 75 78 79 81 86 96 14 80 39
58 88 53
root@~ #./randarray
14 17 22 24 25 28 29 31 42 44 46 48 50 59 67 76 77 78 79 80 82 83 85 86 93 99 70
36 23 52
root@~ #./randarray
14 17 22 24 25 28 29 31 42 44 46 48 50 59 67 76 77 78 79 80 82 83 85 86 93 99 70
36 23 52
root@~ #
[ 本帖最后由 ansic 于 2011-4-7 23:04 编辑 ]