C语言随机数组中自然数的前100项中抽取10项由大到小排序

供稿:hz-xin.com     日期:2025-01-15
C语言数组排列怎么做?

对n个数排序,先输入n,再输入n个数。
选择排序
#include
int main()
{
int a[100];
int i,j,t,p,n;
while (~scanf("%d",&n))
{
for (i=0;i<n;i++)
scanf("%d",&a[i]);

for (i=0;i<n-1;i++)
{
p=i;
for (j=i+1;j<n;j++)
if (a[p]>a[j])
p=j;

if (p!=j)
{
t=a[p];a[p]=a[i];a[i]=t;
}
}
for (i=0;i<n;i++)
if (i!=n-1)
printf("%d ",a[i]);
else
printf("%d
",a[i]);

}

return 0;
}


冒泡排序
#include
int main()
{
int i,j,t,n;int a[1000];
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(j=0;j<(n-1);j++)
for(i=0;i<(n-1)-j;i++)
if(a[i]>a[i+1])
{t=a[i];a[i]=a[i+1];a[i+1]=t;}
for(i=0;i<n;i++)
{
if (i!=n-1)
printf("%d ",a[i]);
else
printf("%d
",a[i]);
}

return 0;
}

1.选择排序思想:假定按从大到小排序,比较数组中所有数的大小,挑出最大的元素将其与第一个元素交换位置,然后比较除第一个元素外其他各元素的大小,挑出最大的元素与第二个元素交换位置,依此类推,完成排序。

2.给你解释开头的n-2:k=0 to k=n-2,k总共取n-1个元素,当k=n-2时,对应a[n-2]为数组倒数第二个元素,此时i=n-i,a[i]即a[n-1]对应数组最后一个元素,当比较完a[n-2]和a[n-1]并排序后,整个数组就完成了排列。

3.代码:
for(k=0;k<=n-2;k++)
{
index=k;
for(i=k+1;i<=n-1;i++)
{
if(a[i]<a[index])
{
index=i;
}
}
temp=a[k],a[k]=a[index],a[index]=temp;
}

#include <stdio.h>
#include <time.h>
#include <stdlib.h>

int main()
{
int a[10] = {0};
int i, j, t;
//产生1~100的随机数(10个)
srand(time(NULL));
for(i = 0; i < 10; i++)
{
a[i] = rand() % 100 + 1;
}
//从小到大排序
for(i = 0; i < 9; i++)
{
for(j = i + 1; j < 10; j++)
{
if(a[i] < a[j])
{
t = a[i];
a[i] = a[j];
a[j] = t;
}
}
}
//输出排序后的结果
for(i = 0; i < 10; i++)
{
printf("%d\t", a[i]);
}
printf("\n");

return 0;
}

随机数的范围有要求吗?

JAVA程序题 1到100的自然数,任意取两个出来,然后打乱顺序存入一个集合...
\/\/ 创建一个数组,保存1~100之间的整数 int temp[] = new int[100];for (int i = 1; i <= 100; i++) { temp[i - 1] = i;} \/\/ 任意从数组中取出2个数字,并保存到另一个集合中 Random r = new Random();List<Integer> newList = new ArrayList();for (int i = 1; i ...

一个98位自然数数组,在1-100内怎么知道那两个数字不在数组中?要具体的...
建立一个100位自然数数组b[100]然后给出的98位数组是a[98]赋值,b[n]=n+1 (就是说b[0]=1,b[1]=2,...b[99]=100)将a[n]从小到大排列一下,(比如把原来a[0]=3,a[1]=2,a[2]=1,给改成 a[0]=1,a[1]=2,a[2]=3)然后从n=0开始比对a[n]和b[n]一直比对到n=97 ...

c语言1到100 混乱排序只用一个for循环求出缺哪个数
假设这99个数放在一个数组a上,则:int Total=0, Sum=0,nMisNum;for(int i=0;i<99;i++){ Total+=i;Sum+=a[i];} Total+=100;nMisNum=Total-Sum;\/\/思路:求出1-100的自然数之和,然后求出这个数组的所有元素之和,一减,就得到缺的数了。

用C语言把2-100之内的素数放到数组里,并且输出来。
输出100以内的素数,思路:假如自然数N不是素数,则除1和其本身之外,必然至少存在两个数A和B,使得A*B=N,则A和B中必有一个大于或者等于sqrt(N),另一个小于或者等于sqrt(N)。下面是粗略证明如果N是合数,则必有一个小于或者等于根号N的素因子.因为任何合数都可表示为两个或者更多个素数之积。...

c语言,求2~100的素数,并且存于a中
include <stdio.h>#include <conio.h>#define ARR_LEN 255 \/*数组长度上限*\/\/* 试除法判断素数 *\/\/* 大于1的自然数num,若其不能被2~num^1\/2(num的平方根)之间的任一自然数整除,则其为素数 *\/\/* num是素数返回1,否则返回0 *\/int isPrime (int num) {int i;if (num <= 1) ...

在C语言中,如何输出一组数的排列组合
int k;\/\/输入自然数的个数 printf("请输入连续自然数的个数:");scanf("%d",&k);int *list = (int *)malloc(k);for (int i = 0; i < k; i ++){ list[i] = i + 1;} \/\/ int list[] = {1, 2, 3, 4, 5};perm(list, 0, k-1);printf("total:%d\\n", n);...

...编写程序,用函数完成:计算从1开始到n的自然数的和???
2、添加一个cpp文件。3、包含需要用到的头文件。4、输入main函数。5、定义两个变量,分别是:a和sum。6、使用while语句计算1到100之间所有自然数之和。7、运行程序,打印出结果。注意事项:C语言的语法限制不太严格,对变量的类型约束不严格,影响程序的安全性,对数组下标越界不作检查等。从应用的...

用C语言输入一个自然数n,求n!,同时统计结果中有多少个0
n);\/\/数字转字符串int main(){ int n,i,len,cnt=0; char *nStr=NULL; while(1) { nStr=(char *)malloc(sizeof(char)*2); meError(nStr); nStr[0]='1',nStr[1]=0; printf("输入一个自然数n,求n!\\n");...

c语言中任意自然数怎么表示
c语言中任意自然数表示:C语言中直接提供的是e为底的自然对数log,和以10为底的常用对数log10,其他对数写个函内数就可以。在C语言中,没有针对实数的随机数函数。一般都是从rand演变。比如,要取一个0到100之间的实数,精度在6位小数,那么就先取一个,0~100000000之间的整型随机数,然后除以...

C语言中按照以下方阵示例生成一个由自然数1~N的2次方组成的N阶方阵 写...
第一个 include <stdio.h> int a[100][100];int main(){ int i,j,k,n;scanf("%d", &n);memset(a,-1,sizeof(a)); \/\/将数组设置为-1 for (i=1;i<=n;i++) \/\/将n*n的区域赋值为0 for (j=1;j<=n;j++)a[i][j]=0;k=2;i=2;a[1][1]=1;j=1;while (1)...