C语言 随机数组排序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言 随机数组排序相关的知识,希望对你有一定的参考价值。

【题目】产生任意个 ( 个数由用户输入,至少100个 ) 个20到100之间的随机整数,然后统计数组中每个元素出现的次数,并按照元素升序排序输出统计结果。

#include "stdlib.h"
#include "stdio.h"

main()

int i,j,k,a[10000],b[10000],n,t;
printf("please input the number of integer: ");
scanf("%d",&n);

for(i = 0; i < n; i++)

a[i] = random(80) + 20; /*生成数组*/


for(i = 0;i < n;i++) /*初始化元素数量*/
b[i] = 1;

for(i = 0; i < n; i++)

for(j = i + 1;j < n;j++)

if(a[i] == a[j])

b[i]++; /*计数*/
n--;

for(k = j;k < n;k++) /*去掉数组中重复值*/
a[k] = a[k + 1];

j--;




for(i = 1;i < n;i++) /*升序排序*/
for(j = 0;j < n - i;j++)
if(a[j] > a[j+1])

t = a[j];a[j] = a[j + 1];a[j + 1] = t;
t = b[j];b[j] = b[j + 1];b[j + 1] = t;


printf("\n Integer numbers\n");
for(i = 0;i < n;i++) /*输出*/

printf(" %d %d\n",a[i],b[i]);

getch();
参考技术A #include<stdio.h>
#include<stdlib.h>

void main()
int *a,n,i,j,k,c;
/* 输入数组大小、分配内存 */
printf("n=?");
scanf("%d",&n);
a=(int*)malloc(n*sizeof(int));
/* 产生随机数并输出 */
for(i=0; i<n; i++)
a[i]=20+rand()%81;
printf("%d ",a[i]);

printf("\n");
/* 排序 */
for(i=0; i<n-1; i++)
k=i;
for(j=i+1; j<n; j++)
if(a[k]>a[j])
k=j;
if(k!=i)
c=a[i], a[i]=a[k], a[k]=c;

/* 输出排序结果 */
for(i=0; i<n; i++)
printf("%d ",a[i]);
printf("\n");
/* 统计各元素个数并输出 */
i=0;
while(i<n)
k=a[i];
c=1;
while(k==a[++i])
c++;
printf("元素 %d 的个数:%d\n",k,c);


参考技术B #include<stdio.h>
#include<stdlib.h>
void main()
int a[10000];
int i,j,n,min,t,r=1;
printf("输入需要产生随机数的个数(大于100):");
scanf("%d",&n);
for(i=0;i<n;i++) /*产生随机数*/
a[i]=rand()%(80)+20;
for(i=0;i<n;i++) /*选择排序*/

min=i;
for(j=i+1;j<=n;j++)

if(a[j]<a[min]) min=j;

t=a[i];a[i]=a[min];a[min]=t;

for(i=0,t=a[0];i<n;i++) /*统计出现次数*/

if(a[i]==t)r++;
else
printf("%d 出现了%d次\n",t,r);
t=a[i];
r=1;


数组实验报告

C语言设计实验报告

实验项目:循环结构实验

姓名:杜鹏 实验地点:一教524 实验时间:5.27

一、实验目的与要求

1、掌握一维和多维数组的定义和数组元素的使用方法。

2、了解一维和多维数组初始化的方法。学习一维和多维数组的基本方法。掌握C语言提供的对字符串进行处理的基本函数库。

二、实验内容

实验一

1、用冒泡排序法排序十个随机数

2、实验代码


p>3、问题分析

主要是知道如何产生随机数,然后根据产生的随机数用数组排序。

实验二

1、写一个函数,并对产生的随机数排序

2、实验代码

3)问题分析

把第一个数和其余的数依次进行比较,得到最小的那一个把它和第一个换位置,然后再从第二个数开始比较,

实验三

1、杨辉三角的产生

2、实验代码

3)问题分析

用两个for循环确定好行和列的关系。

实验四

1、确定的年月日,来确定是该年的第几天

2、实验代码

3)问题分析

定义一个二维数组,然后根据闰年和平年的天数来进行计算

实验五

1、判断一个字符串是否为回文素数

2、实验代码

3)问题分析

在for循环的条件时不需要些i<=len,这样写会进行更多的循环,只需要i<=len/2就行。

四、实验小结

对于我来说,数组这方面掌握的还不够好,仍需加强这一方面的能力。对于之前所学习的仍然需要复习好。

以上是关于C语言 随机数组排序的主要内容,如果未能解决你的问题,请参考以下文章

mpi生成随机数组并进行排序

排序算法c语言描述---桶排序

一百万个结构数组,根据其中一项值排序,用双链表还是数组排序效率更好

数组实验报告

C语言之插入排序

C语言数组排序问题