当前位置:首页 » 编程语言 » c语言怎么乱序输出数组
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言怎么乱序输出数组

发布时间: 2022-08-31 04:56:45

A. c语言如何随机打乱数组

int a[] = {3,5,7,1,4};
// 本程序考虑时间复杂度最小情况的乱序算法,O(t)=len-1
// 算法模仿彩票摇号,从全集中先取一个为第一位,再在剩余集合中取出一个为第2位,...
// 直至最后一个,只是考虑空间利用,已排序集合利用全集的空间。
int len=sizeof(a); // 全集元素数量
srand(unsigned(time(NULL))); // 摇号机准备
for(int i=len;i>1;i--) // 从全集开始摇号,直至只剩一个,已排在最后
{
int cur=len-i+(rand()%i); // 在剩余集合中摇号
int tmp=a[len-i]; // 当前序号位置挪空
a[len-i]=a[cur]; // 摇出的彩球放入当前序号
a[lcur]=tmp; // 放好剩余的彩球
}

B. c语言,逆序输出一组数,要求用到数组

可以定义一个字符数组,然后由用户输入字符,再从数组的后面向前一一输出字符,即可实现题目要求。下面在手机上用易历知食软件里的微C程序设计来编写一个示例程序,手机上的代码如下图:

#include<stdio.h>
intmain(intarg,char*args[])
{
charbuff[100];
inti,len;
printf("请输入一串字符 ");
gets(buff);
printf("原字符是 %s ",buff);
printf("逆序后的字符是 ");
len=strlen(buff);
for(i=len-1;i>=0;i--)
{
printf("%c",buff[i]);
}
return0;
}

C. 用C语言怎样打乱一组数据

#pragma
once
#include
<iostream>
#include
<Windows.h>
using
namespace
std;
#pragma
comment(
lib,
"winmm.lib"
)
int
main()
{
//定义一个数组(自己随便定义,这里以10个大小的数组为例)
const
int
iSum
=
10;
int
iAry[iSum]
=
{3,7,5,87,23,1,65,8,51,64};
//定义一个数组用来保存打乱顺序后的数
int
iDistrubAry[iSum]
=
{0};
//播随机种子(以便每次随机的值有相等的机会)
srand(timeGetTime());
//每次随机的不相同的数存到这个数组里(以便下次随机时判断随机的数是否已经随机过了)
int
iRandomData[iSum]
=
{0};
//将iRandomData元数都赋初值为-1,表示没有产生一个随机数
for
(
int
i=0;
i<iSum;
i++
)
{
iRandomData[i]
=
-1;
}
//共产生不同的随机的个数
int
iRandomSum
=
0;
//打乱这个数组
for
(
int
i=0;
i<iSum;
i++
)
{
//随机一个数
int
iRandom
=
rand()%iSum;
//判断iRandomSum是否为0,是0的话表示没有随机过任何数,就不用查询是否随机到这个数了
if
(
iRandomSum
!=
0
)
{
//用来判断是否连续随机(当随机的数与之前随机的有重复时就连续随机)
for
(
int
i=0;
i<iRandomSum;
i++
)
{
if
(
iRandom
==
iRandomData[i]
)
{
iRandom
=
rand()%iSum;
//i要赋值为-1,表示重新查询是否与以前随机的数重复
i
=
-1;
}
}
}
//将产生的随机数添加到RandomData里面
iRandomData[iRandomSum]
=
iRandom;
//将随机的数作为原来数组的索引,取出原来数组此索引的值保存在打乱后的数组中
iDistrubAry[iRandomSum]
=
iAry[iRandom];
//将iRandom加1,表明已经打乱好了一个数
iRandomSum++;
}
//显示未打乱的数组
cout<<"未打乱的数组:";
for
(
int
i=0;
i<iSum;
i++
)
{
cout<<iAry[i]<<"
";
}
cout<<endl;
//显示打乱后的数组
cout<<"打乱后的数组:";
for
(
int
i=0;
i<iSum;
i++
)
{
cout<<iDistrubAry[i]<<"
";
}
cout<<endl;
system(
"pause"
);
}

D. 用C语言对数组内元素乱序排列并输出

方法1:比较笨的办法是先排好。再在里面找。看是原来的第几个。 (代码我就不写了。)
方法2:有一个很快的方法,就是用快速排序排,
如果你深入的了解了快排,那么这个就很简单了。而且效率很高。
我给你写代码。

E. 用c语言初始化一个10个元素的数组,赋值为1-10,乱序后,输出; //(两种方法)

省去最后打印的printf循环部分。

①在插入的时候随机。
int a[10] = {0};
int num, i;

srand(time(NULL));
for (num = 1; num < 10; i++)
{
i = rand()% 10;
while (a[i] == 0)
i = rand()%10;
a[i] = num;
}

②先按1-10插入,然后打乱
int a[10];
int temp, pos;

srand(time(NULL));
for(i = 0; i< 10; i++)
a[i] = i + 1;

for (i = 0; i < 10; i++)
{
pos = rand()%10;
temp = a[i];
a[i] = a[pos];
a[pos] = temp;
}

F. 怎样用C语言打乱一个已排序的数组

如果要求不是很严格的话,感觉可以随机交换N次,每次交换,随机生成两个交换的元素的下标。

如果要求严格随机的话,感觉可以依次从数组里无放回的取数,并按照取数的先后顺序放入一个新的数组,然后新的数组就是打乱顺序之后的数组了。

G. C语言中如何将数组乱序

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
int main()
{
int a[] = {3,5,7,1,4};
int n=5;
int i,j,T=1000,tmp;
srand(unsigned(time(NULL)));
while(T--)
{
i=rand()%n;
j=rand()%n;
tmp=a[i];
a[i]=a[j];
a[j]=tmp;
}
for(i=0;i<n;i++)printf("%d ",a[i]);
puts("");
return 0;
}

H. C语言,读取txt文件,每行内容不变,乱序输出每行,思路

1)申请一个足够大的指向字符的指针数组,并把每一行字符串的首地址保存到这个数组中,假设有N行;
2)产生一个[0,N)的随机整数x,输出第x行的字符串。
3)将指针数组中第x个元素与第N-1个元素交换位置。
4)N=N-1,如果N>0则转2),否则结束。

I. c语言 输入一串字符 然后打乱顺序随机输出

你可以将输入的字符串放到数组中,然后通过随机函数生成数组下标(注意限制下标越界),然后输出就可以啦

J. C语言 把一个数组逆序输出

从最后一个元素,逆向遍历到数组的0元素,逐一输出即可实现。

1、创建数组;

2、输入值;

3、逆序遍历输出数组。

代码:intmain(){ inta[10]; inti;

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

scanf("%d",a+i);

for(i=9;i>=0;i--)

printf("%d",a[i]);}

(10)c语言怎么乱序输出数组扩展阅读:

将一个数组逆序输出。

1、程序分析:用第一个与最后一个交换。

2、程序源代码:

#define N 5

main()

{ int a[N]={9,6,5,4,1},i,temp;

printf(" original array: ");

for(i=0;i printf("%4d",a[i]);

for(i=0;i {temp=a[i];

a[i]=a[N-i-1];

a[N-i-1]=temp;

}

printf(" sorted array: ");

for(i=0;i printf("%4d",a[i]);}