Ⅰ c语言编程:随机产生,选择法,每行5个输出排序后结果(程序模块化设计)
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#defineN10
voidsort(inta[],intn);
intmain()
{
inti,array[N];
srand(time(0));
printf("十个10~100的随机数 ");
for(i=0;i<N;i++)
array[i]=rand()%90+10;//[10,99]
sort(array,N);
printf(" 排序后数组的值为 ");
for(i=0;i<N;i++)
{
printf("%d",array[i]);
if((i+1)%5==0)
printf(" ");
else
printf("");
}
return0;
}
排序函数是正确的,不用动。
Ⅱ C语言设置5个随机一位数排序
排序的部分没啥问题,前面初始化的地方问题很多。
1、int a[] = {}; 在c里不是能定义这样的数组的,这样定义你的a数组长度就是0,你这后对a的任何访问都会出错,应该写做
2、我不清楚你为啥要在循环里写了两遍随机数,难道是想算出不重复的随机数,但题目上也没看到这个要求,在while (a[i] == a[j])这里,这里的 j本身是没值的,它的值是个随机的,所以这里是个死循环,如果只要是普通的随机数据,初始化地方改为
int a[5]={0};
for (i=0; i<=4; i++) {
a[i] = (10*rand())/(RAND_MAX+1.0); //这里你计算随机数怪怪的,一般来说是用rand()%10
}
Ⅲ 用c语言怎么实现排列组合啊比如从100个数里面任意选出5个数,即C100 5……
#include<stdio.h>
void main()
{
int n = 100;
int m = 5;
int n1 = 1, m1 = 1;
for(int i = 1; i <= m; i++)
{
n1 *= n - i + 1;
m1 *= i;
}
n1 = n1/m1;
printf("C100 5 = %d\n",n1);
}
从n中选出m个,只要改变n和m的值即可,VS2010下测试通过。
Ⅳ c语言 任意输入5个数从小到大排列 程序怎么写
#include <stdio.h>
int main(int argc, char *argv[])
{
int a[5]; /*保存5个数的数组*/
int i = 0 , j = 0; /*计数器*/
int m = 0 ; /*用于标识最小的那个数*/
int n; /*用于两个数的交换,中间值*/
/*从键盘接收5个数*/
for( i = 0 ; i < 5 ; i ++)
{
printf("请输入第%d个数", i + 1);
scanf("%d",&a[i]);
}
/*排序算法:选择排序*/
for( i = 0 ; i < 5 ; i ++)
{
m = i ;
for( j = i +1 ; j < 5 ; j ++)
if( a[j] < a[m] )
m = j ;
n = a[i];
a[i] = a[m];
a[m] = n;
}
/*输出*/
printf("经过排序后,这些数是:\n");
for( i = 0 ; i < 5 ;i ++)
printf("%d ",a[i]);
printf("\n");
return 0;
}
Ⅳ C语言中怎么对数组随机排序
可以用一个辅助数组进行随机排序,方法如下:
1 获取要排序的数组长度L。
2 定义整型的辅助数组,长度为L。
3 生成L个随机整型数字,存与辅助数组中,这样要排序数组和辅助数组就是一一对应的了。
4 对辅助数组排序,排序过程中,当改变辅助数组中数字的位置时,同步改变要随机排序的原数组中对应的元素位置。比如为排序交换辅助数组的第三个和第五个元素,那么就要同时交换原数组中的第三个和第五个元素。
5 当辅助数组排序完成后,原数组中的值就是随机顺序了。
6 删除辅助数组。
Ⅵ C语言随机生成5个浮点数,按照小数点后的数字大小进行排序
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{ int nums[20],num[20];
int i;
srand(time(NULL));
for (i=1;i<=20;i++)
{
nums[20] = rand();
printf("%d\n",nums[20]);
}
旦鼎测刮爻钙诧水超惊getch();
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int nums[21],num[21]; /*你的角标从1开始,这里的20就不够了*/
int i,j;
int index,temp;
srand(time(NULL));
for (i=1;i<=20;i++)
{
nums[i] = rand(); /*这个应当是i*/
printf("%d\n",nums[i]);
num[i]=nums[i]; /*备份原始数据*/
}
/*选择法,从小到大排序*/
for (i=1;i<=20;i++)
{
index=i; /*从i到20这几个元素中最小值的序号*/
for (j=i+1;j<=20;j++)
if (nums[index]>nums[j])
index=j;
if (index!=i)/*交换i和index的元素的值*/
{
temp=nums[index];
旦鼎测刮爻钙诧水超惊 nums[index]=nums[i];
nums[i]=temp;
}
}
for (i=1;i<=20;i++)
printf("%d\t%d\n",num[i],nums[i]);
getch();
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int nums[21],num[21]; /*你的角标从1开始,这里的20就不够了*/
int i,j;
int index,temp;
srand(time(NULL));
for (i=1;i<=20;i++)
{
nums[i] = rand(); /*这个应当是i*/
printf("%d\n",nums[i]);
num[i]=nums[i]; /*备份原始数据*/
}
/*选择法,从小到大排序*/
for (i=1;i<=20;i++)
{
index=i; /*从i到20这几个元素中最小值的序号*/
for (j=i+1;j<=20;j++)
if (nums[index]>nums[j])
index=j;
if (index!=i)/*交换i和index的元素的值*/
{
temp=nums[index];
旦鼎测刮爻钙诧水超惊 nums[index]=nums[i];
nums[i]=temp;
}
}
for (i=1;i<=20;i++)
printf("%d\t%d\n",num[i],nums[i]);
getch();
return 0;
}
随机数真的生成了吗?为什么我记得语句不是这样的= =!你生成随机数然后。每随机一次只是一个数字所以你要循环20次存入数组。然后用数组排序来做它~我没看到你的排序语句……就在最后加个for(int j=0;j<20;j++)
{
旦鼎测刮爻钙诧水超惊 for(int k=1;k<20;k++)
{
if(a[j]<a[k])
{temp=a[j];a[k]=a[j];a[j]=a[k];}
}
}
这是排序的~然后输出就可以了~
题目要求你把得到的20个数和排序后的20个数分别显示出来。
看你的代码只完成了一部分,剩下的就是排序了,网上有很多排序的方法
如有不明白,可以call我。
才发现,你这个还有问题,只是把第二十个数组的内容显示出来了
应该把:nums[20] = rand();
printf("%d\n",nums[20]);
中的20都改成i,并且每个数字加上一个空格区分,然后可以按照楼上的方法排序
int sort(int *s,int *max) //最大数的请在main()中声明,函数返回最小数
{ int min;int i=1,j;min=*s;
while(i<40)
{ if(min<=*(s+j)) if(max<=*(s+j)) max=*(s+j),j++;
else min=*(s+j),j++;
}
return min;}
我英语也不好,猜着大概意思是要你弄20个随机数然后用选择排序法排序,然后再显示出来,但那个单词list不知道是不是什么数据结构,毕业3年了,基本没有编过程,所以也快忘光了。以下是我在vc2008里调试的,你参考一下,至于选择排序,你可以搜索一下,
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{ int nums[20];
int i;
srand(time(NULL));
for (i=0;i<20;i++)
{
nums[i] = rand()%20;//rand()%20意思是0到19之间的随机数,这个你自己定
printf("%d\n",nums[i]);//nums数组最后一个应该是num[19]才对,你要显示num[20]已经越界了
}
getchar();//getch(),我vc2008里有错,我就用这个了
return 0;
}
float b=rand()/(RAND_MAX+1.0);
printf("%f\n",b);
Ⅶ c语言编程:随机输入五个整数,利用选择排序法对输入的数进行从小到大排序
你的程序逻辑有些问题,输入,排序,输出分开做,这样更明确,更清晰,代码如下:
#include<stdio.h>
#include<stdlib.h>
intmain()
{
inta[5];
inti,j,t;
intmin;
//输入
printf("input5numbers: ");
for(i=0;i<5;i++)
scanf("%d",&a[i]);
//选择排序
for(i=0;i<5;i++){
for(j=i+1;j<5;j++){
if(a[j]<a[i]){
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}
//输出
printf("thesorrtednumbers: ");
for(i=0;i<5;i++){
printf("%d",a[i]);
}
printf(" ");
system("pause");
return0;
}
运行结果: