Re: [问题] c++掷骰子题目 赌香肠

楼主: bwzhan (bwzhan)   2014-11-28 14:03:13
小弟初学C++,常常下好离手
#include<iostream>
#include<cstdlib>
#include<ctime>
using namespace std;
int tmp_num[4];
int match_tmp_num(void){
int grade=0;
if(tmp_num[0]==tmp_num[1] && tmp_num[1]==tmp_num[2] &&
tmp_num[2]==tmp_num[3]) {
grade=100;
//cout<<"分数:100分\n";
}
else if(tmp_num[0]==tmp_num[1] && tmp_num[2]==tmp_num[3]) {
grade=tmp_num[2]+tmp_num[3];
//cout<<"分数:"<<grade<<"分\n";
}
else if(tmp_num[0]==tmp_num[1]){
grade=tmp_num[2]+tmp_num[3];
//cout<<"分数:"<<grade<<"分\n";
}
else if(tmp_num[1]==tmp_num[2]){
grade=tmp_num[0]+tmp_num[3];
//cout<<"分数:"<<grade<<"分\n";
}
else if(tmp_num[2]==tmp_num[3]){
grade=tmp_num[0]+tmp_num[1];
//cout<<"分数:"<<grade<<"分\n";
}
return grade;
}
void get_tmp_num(void){
int i,j,tmp;
for(i=0;i<4;i++){ //取乱数:介于1~6
tmp_num[i]=rand()%6+1;
}
for(i=0;i<4;i++){ //由小到大排序
for(j=i+1;j<4;j++){
if ( tmp_num[i] > tmp_num[j] ) {
tmp=tmp_num[i];
tmp_num[i]=tmp_num[j];
tmp_num[j]=tmp;
}
}
}
}
int main(void){
int grade;
srand(time(NULL));
for (int i=0;i<100;i++){
get_tmp_num();
grade=match_tmp_num();
cout << tmp_num[0] << " " << tmp_num[1] << " " << tmp_num[2]
<< " " <<tmp_num[3] << " 共" << grade << "分\n";
}
return 0;
}
请各位大大多多指教!!
※ 引述《sone90935 (icesky)》之铭言:
: 四个骰子 使其一次可以产生4个骰子之值请模拟5次值骰子结果
: 每次根据4个骰子之值印出分数
: 计分规则如下
: 1 若恰有2个骰子点数相同 则分为两个不同点数相加
: 2 若有两对骰子点数相同 则分数为较高那对点数和
: 3 若有4个骰子点数相同 分数即为100
: 4 其他情形 无分数
: 要如何使用for跟if去写这个程式
: 完全下不了手...

Links booklink

Contact Us: admin [ a t ] ucptt.com