Seven_P 2022-03-09 19:52 采纳率: 100%
浏览 118
已结题

c++编程,掷骰子游戏设计。

问题遇到的现象和发生背景

假如有n个学生排成一圈,编号从1到n,每个人有初始积分,不防设为100。从1号开始掷骰子,骰子出现后,根据点数减去掷骰人的相应积分,如减去 10*(6 - 投掷点数),然后根据点数多少,就依次向后数掷骰的点数同等数量的人,被数到的最后一个人继续掷骰子,计算积分,依此类推。如果某人掷骰后,其积分小于等于0则出列,余下的人继续按照此法进行游戏,直到剩下最后一个人,为胜利者。要求打印每次出列的人的编号,掷骰子的次数,当前积分。并打印最后胜利者的相应信息。

问题相关代码,请勿粘贴截图
#include <iostream>
#include <cstdlib>
#include <ctime>
#define N 100
using namespace std;

int Rnum()    //产生掷点数。
{
    srand((unsigned)time(NULL));
    int n;

    n=rand()%6+1;

    return n;
}
int main()
{
    int m,n;    //学生数m,掷点数n。
    int a[N]={0},a1[N]={0},i=1,j=0,k=0,cnt=0;        //学生编号i,出局人数cnt。
    cout<<"学生数为:";
    cin>>m;

    for(i=0;i<N;i++){
        a[i]=100;
    }
    n=Rnum();
    a[1]=100-10*(6-n);
    do{    
        i++;
        if(i>m)
            i=1;
        if(a[i]>0){        //未出局。
            k++;
            if(k==n){    //能掷骰子。
                n=Rnum();
                a[i]=100-10*(6-n);
                j=i;
                a1[j]++;
                k=0;
                if(a[i]<=0){    //出局。
                    cnt++;
                }
            }
        }
    }while(cnt!=m-1);
    for(i=1;i<=m;i++){
        if(a[i]>0){
            j=i;
            cout<<"胜利者编号:"<<i<<endl;
            cout<<"胜利者掷骰子次数:"<<a1[j]<<endl;
            cout<<"胜利者当前积分:"<<a[i]<<endl;
        }else{
            j=i;
            cout<<"出列学生编号:"<<i<<endl;
            cout<<"出列学生掷骰子次数:"<<a1[j]<<endl;
            cout<<"出列学生当前积分:"<<a[i]<<endl;
        }
    }

    return 0;
}

运行结果及报错内容

运行无结果输入

我的解答思路和尝试过的方法
我想要达到的结果

解答我写出的代码问题所在,感谢

  • 写回答

2条回答 默认 最新

  • CSDN专家-link 2022-03-09 19:58
    关注
    }while(cnt!=m-1);---这个条件要求仅当cnt 等于m-1时才会退出循环,要确认不出现死循环
    

    36行 a[i]=100-10*(6-n);应该有问题,应该是a[i] -= 10*(6-n); 经过多轮后,a[i]不再是基础的100分啊,你不能每次都是100减去一个值,这样a[i]永远不会小于40,就不会淘汰,死循环

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 3月19日
  • 已采纳回答 3月11日
  • 创建了问题 3月9日

悬赏问题

  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效