c语言求已知概率分布,【精品干货】C语言----密码概率分布

将密码出现次数出现最多的排在前面。

由于我这里没有什么裤子,所以就只能拿数组来模拟了。

1a9637684fbc?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

7105(编号: 悟空)20381

【运行效果】

1a9637684fbc?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

【代码】

#include

#include

#include

#include

#define N 30

void main()

{

//定义一个动态数组

int* Parr=(int*)malloc(sizeof(int)*N);

//对动态数组元素清零

memset(Parr, 0, sizeof(int)*N);

//获取随机数种子

srand((unsigned int)time(NULL));

//对动态数组的每一个元素赋值

for (int i = 0; i < N; i++)

{

Parr[i] = rand() % (N / 2)+1;

}

//显示动态数组状态

for (int i = 0; i < N; i++)

{

printf("%5d", Parr[i]);

if (0==(i + 1) % 5)

{

puts("");

}

}

//对动态数组进行排序

for (int i = 0; i < N - 1; i++)

{

for (int j = 0; j < N - 1 - i; j++)

{

if (Parr[j] >= Parr[j + 1])

{

//数据交换

int Temp = Parr[j];

Parr[j] = Parr[j + 1];

Parr[j + 1] = Temp;

}

}

}

puts("");

//显示动态数组状态

for (int i = 0; i < N; i++)

{

printf("%5d", Parr[i]);

if (0==(i + 1) % 5 )

{

puts("");

}

}

//定义一个结构体类型

struct PassWord

{

int Num;

int Counter;

};

//定义一个动态结构体数组

struct PassWord* PW = (struct PassWord*)malloc(sizeof(struct PassWord)*N);

//对结构体数组清零

memset(PW, 0, sizeof(struct PassWord)*N);

//PWi 结构体数组的下标

int PWi = 0;

for (int i = 0; i < N; i++)

{

//将数组的元素赋值给结构体成员 PW[PWi].Num

PW[PWi].Num = Parr[i];

//统计 Parr[i] 出现的次数

int Counter = 1;

for (int j = i; j < N; j++)

{

//判断数组第 j 个元素是否等于第 j+1 个元素

if (Parr[j] == Parr[j + 1])

{

Counter++;

}

else

{

i = j;

break;

}

}

//将统计的次数存放到结构体数组的 PW[PWi].Counter 成员中

PW[PWi].Counter = Counter;

//结构体数组下标前进

PWi++;

}

//Ibreak 记录结构体数组的中断点

int Ibreak = 0;

for (int i = 0; i < N; i++)

{

if (0==PW[i].Counter )

{

Ibreak = i;

break;

}

}

//打印结构体数组的中断点

printf("\n结构体数组的中断点 %d\n",Ibreak);

//对结构体数组进行排序,将次数出现最多的排在前面

for (int i = 0; i < Ibreak-1; i++)

{

for (int j = 0; j < Ibreak - 1 - i; j++)

{

if (PW[j].Counter <= PW[j + 1].Counter)

{

//数据交换

int Temp = PW[j].Counter;

PW[j].Counter = PW[j + 1].Counter;

PW[j + 1].Counter = Temp;

Temp = PW[j].Num;

PW[j].Num = PW[j + 1].Num;

PW[j + 1].Num = Temp;

}

}

}

puts("");

//显示结构体数组状态

for (int i = 0; i < Ibreak; i++)

{

printf("Num==%-5d Counter==%-5d\n", PW[i].Num, PW[i].Counter);

}

//释放为结构体指针数组分配的内存

free(PW);

//将结构体数组指针赋值为空,避免野指针

PW = NULL;

//释放为指针数组分配的内存

free(Parr);

//将动态数组指针赋值为空,避免野指针

Parr = NULL;

system("pause");

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值