这是源于王者荣耀战队微信群里的活动,队长让我处理一下cp随机配对的活儿,作为一名程序员,这种东西当然自己写一个简单的程序就能完成,于是有了下面的代码。

1.制作两份名单——一男一女的txt文件,放在解决方案的路径上

2.制作一个结构体,然后把男女名单分别从txt文件上拷贝到结构体数组中

3.制作随机函数(时间作为种子)

4.抽到一个人,分别从男或女的结构体数组中减去一个人,再在剩余的人数中进行随机

5.判断配对结果(1.男女均等。2.男多女少。3.男少女多)

// CpMatch.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//#include <iostream>
#include <stdlib.h>
#include <time.h>
#include <windows.h>
using namespace std;typedef struct Stack {int num;char name[20];
}Stack;Stack boys[100];
Stack girls[100];
//char name[6][10];void LoadBoysName() //读取.txt文件每一行的字符串
{FILE* fp;errno_t err; //C++写法err = fopen_s(&fp, "man.txt", "r");if (err){perror("fail to read");exit(1);}int i = 1;while (!feof(fp)){fscanf_s(fp, "%s",boys[i].name,20);boys[i].num = i;i++;}fclose(fp);
}void LoadGirlsName() //读取.txt文件每一行的字符串
{FILE* fp1;errno_t err; //C++写法err = fopen_s(&fp1, "women.txt", "r");if (err){perror("fail to read");exit(1);}int i = 1;while (!feof(fp1)){fscanf_s(fp1, "%s", girls[i].name, 10);girls[i].num = i;i++;}fclose(fp1);
}int RandNum(int i)
{int num;srand((unsigned)time(NULL));num = rand() % i + 1;// cout << num << '\t';//Sleep(2000);return num;
}int main()
{LoadGirlsName(); //导入名单LoadBoysName(); //导入名单boys[0].num = 0;strcpy_s(boys[0].name , "Blue.蓝色");girls[0].num = 0;strcpy_s(girls[0].name, "小萌新");/*产生随机数1-3  //printf("%d. %s\n", boys[num].num, boys[num].name);for (int k = 0; k < 10; k++){int num;srand((unsigned)time(NULL));num = rand() % 10 + 1;cout << num << '\t';Sleep(4000);}*/int boysTop = 1, girlsTop =1,i=1;int randnumberBoy, randnumberGirl;/*统计栈内元素的个数*/while (NULL != boys[boysTop].num){boysTop++;}while (NULL != girls[girlsTop].num){girlsTop++;}boysTop = boysTop - 1; girlsTop = girlsTop - 1;cout <<"男生总数:"<< boysTop+1 << "\t" << "女生总数:" << girlsTop+1 << endl;printf("---------男生---------\n");for (int l = 0; l <= boysTop; l++)printf("%d.%s\n", boys[l].num, boys[l].name);printf("---------女生---------\n");for (int l = 0; l <= girlsTop; l++)printf("%d.%s\n", girls[l].num, girls[l].name);printf("---------开始配对---------\n");while (boysTop != 0 || girlsTop != 0){int kb, kg, kkb, kkg;randnumberBoy = RandNum(boysTop);Sleep(1500);randnumberGirl = RandNum(girlsTop);Sleep(1500);printf("第%2d组cp:%-20s       %-20s\n",i,boys[randnumberBoy].name,girls[randnumberGirl].name);i++;/*更新栈*/kb = boysTop - randnumberBoy, kg=girlsTop - randnumberGirl, kkb = 1,kkg=1;while (kkb<=kb){boys[randnumberBoy].num = boys[randnumberBoy + kkb].num;strcpy_s(boys[randnumberBoy].name, boys[randnumberBoy + kkb].name);kkb++;}while (kkg <= kg){girls[randnumberGirl].num = girls[randnumberGirl + kkg].num;strcpy_s(girls[randnumberGirl].name, girls[randnumberGirl + kkg].name);kkg++;}boysTop--;girlsTop--;if (boysTop == 0 && girlsTop != 0){//printf("第%2d组cp:%-20s       %-20s\n", i , girls[0].name, boys[0].name);printf("\n");printf("有多余的女生:\n"); while (girlsTop > 0){cout << girls[girlsTop].num << "." << girls[girlsTop].name << endl;girlsTop--;}break;}else if (boysTop != 0 && girlsTop == 0){//printf("第%2d组cp:%-20s       %-20s\n", i , girls[0].name, boys[0].name);printf("\n");printf("有多余的男生:\n"); while (boysTop > 0){cout << boys[boysTop].num << "." << boys[boysTop].name << endl;boysTop--;}break;}else if (boysTop == 0 && girlsTop == 0){printf("全部匹配完毕"); break;}}
}

C语言——男女cp配对的小软件相关推荐

  1. 用名字测试爱情的软件有什么,男女姓名配对测试

    男女姓名配对测试是一款有趣的测试姓名配对指数的软件或者是你喜欢的人的名字和你名字进行配对,使用起来趣味十足,看看指数有多高哦,通过男女姓名配对测试app你可以配对男女双方的信息,快来本站下载体验吧. ...

  2. 一款恋爱星座男女配对微信小程序源码

    今天给大家推荐一款恋爱星座男女配对微信小程序源码,简单测试了一下,这款小程序还不错,无需服务器无需域名上传发布即可使用. 每个星座的不同性格,聚在一起,必然会产生不同的化学反应.你与他(她)的配对会如 ...

  3. 抖音姓名测试软件,抖音姓名配对测试小程序

    这是一款通过填入男女双方名字来得出是否配对的休闲测试类小游戏.现在有很多的年轻小情侣,平日里就喜欢做一些名字以及星座相关的测试,而之前体验了星座,现在就可以在这里来测试一下情侣之间的姓名是否搭配,只需 ...

  4. 【C语言】:第一个小游戏-猜数字(内推两个特好用的软件)

    学习C语言也有一段时间了,从最开始的一脸懵逼抓耳挠腮,然后再是重新振作,最后到现在的懵懵懂懂.其实也挺不容易的,不过,连我这种九年义务教育的漏网之鱼都能学会C语言,那还有谁学不会,兄弟们看到这不直接热 ...

  5. 关于C语言有没有答疑的软件,C语言答疑|有关arr的小知识

    原标题:C语言答疑|有关&arr的小知识 宜 预习知识 复习整理 2017年 陆月叁日 忌 虚度光阴 过度游戏 考期倒计时--15天-- Hello万票 我们又见面啦 不知道大家最近小日子过的 ...

  6. python语言与系统设计 大作业——背单词的小软件

    (一)需求和规格说明 问题描述: 这是一款帮助学生背单词的小软件.建立单词库: 第一个功能是学生帮助学生记单词,会显示单词库中单词的拼写.音标.词性.中文翻译,学生可以选择中途退出,再次进入的时候,可 ...

  7. c#小软件(SaveClassic)开发手记--(1)前言

    做了这么久程序员,一直是被动开发(纯属于体力劳动者,完成软件设计人员设计的软件).雁过留声人过留名,总想自己开发点东西留给自己.也许过几年回头看看,不至于遗憾,至少我还有点东西是自己.所以我现在就动手 ...

  8. 8个爽滑如丝的Windows小软件,不好用你拿王思葱砸死我

    假如我说有一款软件,能顶替60款软件:还有一款软件,能顶替60个你:还有一款软件,好用到60岁你都不想它被顶替-我知道,你不相信天是蓝的,你不相信雷的回声,你不相信梦是假的,你不相信死无报应. (夸张 ...

  9. 分享一个剪切板的小软件CopyQ

    我是最近在工作的时候经常需要复制一些命令,而且这些命令如果用手敲的话会超级麻烦,所以体验了几个剪切板的小软件,这个是我体验之后觉得最不错的一个,分享给大家. 软件链接地址 https://github ...

最新文章

  1. 【GStreamer】官网基本教程学习(basic-tutorial)
  2. js中将字符串转换成json的三种方式
  3. 直播预告 | AAAI 2022论文解读:基于能量的主动域自适应学习方法
  4. 【今晚七点半】:白板与开源
  5. 中信国健临床通讯  2011年3月期 目 录
  6. 小米路由器青春版装linux,比较费心的折腾 篇二:小米路由器青春版折腾负载均衡...
  7. Iptables-Fail2ban处理bind 非法***
  8. 5不能另存为dwg_5.建立数模
  9. 数据库基础知识七:同义词
  10. 三坐标测量软件DMIS语句解释
  11. python scrapy第一弹--爬取好看的堆糖头像
  12. luogu1725 琪露诺
  13. 遗传算法python与matlab_遗传算法之Python实现代码
  14. 异常(Exception)
  15. Python 之父出生 | 历史上的今天
  16. wps“公式编辑器”的MT Extra 字体无效,将无法显示和打印某些字体。请重新安装“公式编辑器”,以便正确安装其字体
  17. 量子信息技术(QIT)
  18. 先验概率、后验概率、条件概率
  19. 江南大学计算机技术复试科目,江南大学计算机专硕考哪些科目
  20. PowerPoint课件高级制作技巧

热门文章

  1. 数建 --SAS 软件介绍
  2. c语言与汇编语言混合编程实验,C语言与汇编语言混合编程实验
  3. Python爬虫应用——实现某中学选修课网上自动选课
  4. java下载完了放哪里了_JDK安装完成后,主要的命令如Javac、Java等都存放在()文件夹中。...
  5. php农历代码,PHP阳历转农历实现代码
  6. mysql中count()统计总结与思考
  7. node-npm安全性插件helmet(防护包含点击劫持、xss、嗅探攻击...)
  8. 分橘子问题-日本著名数学游戏专家中村义作教授提出这样一个问题:父亲将2520个桔子分给六个儿子...
  9. Delphi读写文本文件
  10. 电脑屏幕录制怎么弄?电脑上怎么录制屏幕, 3个实用方法