#include<bits/stdc++.h>
using namespace std;//固定格式
(资料图)
int main(){
int a,b,c,linshi,miss;
long long key;
struct test{
int total;
bool bj;
string name;
}data[100];//数据的类型声明
for(int i=0;i<=100;i++){
data[i].total=0;
data[i].bj=true;}
cout<<"(如需查看更新日志,请在密钥栏输入‘0’)"<<endl<<endl;
cout<<"请输入随机的八位数字密钥:";
cin>>key;
if(key==0){
cout<<"现行版本:1.3.0"<<endl<<endl;
cout<<"更新日志:"<<endl;
cout<<"(2022-12-14)update-1.0.0:"<<endl;
cout<<"系统初步建立"<<endl<<endl;
cout<<"(2022-12-17)update-1.0.1:"<<endl;
cout<<"加入'中止抽背并统计'的功能" <<endl;
cout<<"将结尾等待时间从100秒改至99999秒"<<endl<<endl;
cout<<"(2023-1-15)update-1.1.0:"<<endl;
cout<<"引入'密钥',通过一定算法(动态数+常数)在不更换名单顺序的情况下实现不同次序"<<endl;
cout<<"加入'更新日志'"<<endl;
cout<<"将抽背完成后等待时间从99999秒改至999秒,减少非必要的内存消耗,加入时间提示"<<endl;
cout<<"解决'特殊位置无法抽到'的问题"<<endl;
cout<<"微量优化UI,在姓名间加入换行,使姓名更易读取"<<endl<<endl;
cout<<"(2022-1-19)update-1.1.1:"<<endl;
cout<<"简化了简单计算的写法,减少运行内存"<<endl;
cout<<"将站立标记的定义类型从int改为bool"<<endl<<endl;
cout<<"(此正式版未发布)update-1.2.0:"<<endl;
cout<<"完全改变数据的结构,用结构体data整合原变量,使程序结构更清晰"<<endl;
cout<<"抽背人数上限定为100人,减少存储空间"<<endl<<endl;
cout<<"(2023-1-21)update-1.3.0:"<<endl;
cout<<"加入数据的排序功能(冒泡排序),在输出时按需输出"<<endl;
cout<<"将程序源文件分段处理并加入注释,便于理解和改写"<<endl<<endl;
cout<<"如有发现功能异常,请及时联系作者"<<endl;
cout<<"(120秒后自动关闭)";
_sleep(120000);
return 0;//结束
}//更新日志
cout<<"输入人数及姓名:";
cin>>a;
for(int i=1;i<=a;i++){cin>>data[i].name;}
cout<<endl<<"输入抽背人数:";
cin>>b;
cout<<"按'0'以停止"<<endl;
_sleep(2000);//人数,名字的输入
for(int i=1;i<=b;i++){
linshi=(key/202+rand()%a+14+b*7)%a;//取随机数
if(linshi==miss){linshi+=1;}
if(linshi>a){linshi-=a;}
if(linshi==0){linshi=a;}
cout<<endl;
cout<<i<<"."<<data[linshi].name<<endl; //抽背功能实现核心部分
cout<<"分数决定(1或-1,0为中止并统计)";
cin>>c;
if(c==0){break;}
if(c==1){data[linshi].bj=true;}
if(c==-1){data[linshi].bj=false;b+=1;}
data[linshi].total+=c;
miss=linshi;}//miss令,分数计算,标记
for(int i=2;i<=a;i++){
for(int j=2;j<=a;j++){
if(data[j-1].total<data[j].total){
swap(data[j-1].name,data[j].name);
swap(data[j-1].bj,data[j].bj);
swap(data[j-1].total,data[j].total);}}}//排序功能
cout<<endl<<endl<<"分数统计:"<<endl;
for(int i=1;i<=a;i++){
if(data[i].bj==false){cout<<"(站立中)";}
else{cout<<" ";}
cout<<data[i].name<<" "<<data[i].total<<endl;}
cout<<endl<<"999秒后自动关闭";
_sleep(999999);//按序输出
return 0;}
标签: TOTAL SWAP DATA SLEEP RAND INTJ TRUE NAME 100秒 FALSE BREAK MISS