[C/C++]随机生成信息,并保存到文件中

该博客介绍了如何使用C/C++编程随机生成一栋学生宿舍楼的数据,包括宿舍编号、随机学生数量及每个学生的姓名、ID、年龄和籍贯,并将所有信息保存到文件中。示例代码在VC++6.0环境下编译通过。
摘要由CSDN通过智能技术生成

实现功能:

随机生成一栋学生宿舍楼,每个宿舍具有宿舍编号,随机学生数。学生信息包括姓名,ID,年龄,籍贯。并把全部信息以文件保存。


编译通过:VC++6.0


代码如下:

#include <stdlib.h>
#include <time.h>
#include <iostream>
#include <iomanip>
#include <fstream>
#include <string>
using namespace std;

#define NPC 31//籍贯地址总数
#define DMCOU 50//新建宿舍数
#define FLMAX 25//一层楼最多宿舍数
#define STMAX 8//一间宿舍最多学生数
#define FOUT "fileOut.txt"//输出文件名字

int main(void)
{
	char xing[81] = "赵钱孙李周吴郑王冯陈褚卫蒋沈韩杨朱秦尤许何吕施张孔曹严华金魏陶姜戚谢邹喻柏水窦章";//姓
	char ming[81] = "世舜丞主产仁仇仓仕仞任伋众伸佐佺侃侪促俟信俣修倝倡倧偿储僖僧僳儒俊伟列则刚创前剑";//名
	string ht[NPC] = {"北京", "天津", "河北", "山西", "内蒙古", "辽宁", "吉林", "黑龙江", "上海", "江苏", "浙江", "安徽", "福建", "江西", "山东", "河南", "湖北"
C++,我们可以使用`<random>`库生成随机数,`<openssl>`库来处理大整数并检查素数,以及`<fstream>`库来操作文件。以下是实现这个需求的一个简单示例: ```cpp #include <iostream> #include <random> #include <string> #include <sstream> #include <openssl/bn.h> #include <fstream> // 随机生成指定长度的大整数 std::string generateBigNumber(int length) { std::stringstream ss; for (int i = 0; i < length; ++i) { ss << std::rand() % 16 + '0'; } return ss.str(); } // 检查是否为素数 bool isPrime(BIGNUM* num) { if (BN.bit_length(num) <= 2) return true; BIGNUM half, temp; BN_copy(&half, num); BN_divexact_word(&half, 2); BN_mod_exp_word(&temp, &half, num, BN_prime_rabin_miller_loop, 5); // 使用Rabin-Miller算法 return temp == 1 || temp == num; } int main() { const int bitLength = 1024; std::srand(std::time(0)); // 初始化随机种子 BIGNUM a, b, p; BN_init(&a); BN_init(&b); BN_init(&p); // 生成两个512位的随机数 BN_set_word(&a, std::rand()); BN_set_word(&b, std::rand()); // 生成1024位的随机数并检查素数 while (!isPrime(&p)) { BN_generate_prime_ex(&p, bitLength, nullptr, nullptr, BN_MONT_CTX_NONE); } // 将BN转为十六进制字符串 std::stringstream astr, bstr, pstr; BN_bn2hex(&astr, &a); BN_bn2hex(&bstr, &b); BN_bn2hex(&pstr, &p); // 输出和保存文件 std::cout << "a (hex): " << astr.str() << std::endl; std::cout << "b (hex): " << bstr.str() << std::endl; std::cout << "p (hex): " << pstr.str() << std::endl; std::ofstream dataFile("data.txt", std::ios::binary); if (dataFile.is_open()) { dataFile.write(astr.str().c_str(), astr.str().length()); dataFile.write(bstr.str().c_str(), bstr.str().length()); dataFile.write(pstr.str().c_str(), pstr.str().length()); dataFile.close(); } else { std::cerr << "Failed to open file!" << std::endl; } // 清理 BN_clear_free(&a); BN_clear_free(&b); BN_clear_free(&p); return 0; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值