7-8 刮刮彩票 (20 分)
刮刮彩票”是一款网络游戏里面的一个小游戏。如图所示:
-362960_55cb6a89bf693.png
每次游戏玩家会拿到一张彩票,上面会有 9 个数字,分别为数字 1 到数字 9,数字各不重复,并以 3×3 的“九宫格”形式排布在彩票上。
在游戏开始时能看见一个位置上的数字,其他位置上的数字均不可见。你可以选择三个位置的数字刮开,这样玩家就能看见四个位置上的数字了。最后玩家再从 3 横、3 竖、2 斜共 8 个方向中挑选一个方向,方向上三个数字的和可根据下列表格进行兑奖,获得对应数额的金币。
数字合计 获得金币 数字合计 获得金币
6 10,000 16 72
7 36 17 180
8 720 18 119
9 360 19 36
10 80 20 306
11 252 21 1,080
12 108 22 144
13 72 23 1,800
14 54 24 3,600
15 180
现在请你写出一个模拟程序,模拟玩家的游戏过程。
输入格式:
输入第一部分给出一张合法的彩票,即用 3 行 3 列给出 0 至 9 的数字。0 表示的是这个位置上的数字初始时就能看见了,而不是彩票上的数字为 0。
第二部给出玩家刮开的三个位置,分为三行,每行按格式 x y 给出玩家刮开的位置的行号和列号(题目中定义左上角的位置为第 1 行、第 1 列。)。数据保证玩家不会重复刮开已刮开的数字。
最后一部分给出玩家选择的方向,即一个整数: 1 至 3 表示选择横向的第一行、第二行、第三行,4 至 6 表示纵向的第一列、第二列、第三列,7、8分别表示左上到右下的主对角线和右上到左下的副对角线。
输出格式:
对于每一个刮开的操作,在一行中输出玩家能看到的数字。最后对于选择的方向,在一行中输出玩家获得的金币数量。
输入样例:
1 2 3
4 5 6
7 8 0
1 1
2 2
2 3
7
输出样例:
1
5
6
180
#include <stdio.h>
#include <math.h>
#include <string.h>
int main()
{
int a[3][3], b[3][2], i, j, f[10], m, sum = 0, n1, n2, sum1 = 0;
memset(f, 0, sizeof(f));
for(i = 0; i < 3; i++){
for(j = 0; j < 3; j++){
scanf("%d", &a[i][j]);
if(a[i][j] != 0){
f[a[i][j]] = 1; //f函数用于标记那个数为零
}
}
}
for(i = 0; i < 3; i++){
scanf("%d%d", &b[i][0], &b[i][1]);
}
scanf("%d", &m);
printf("%d\n%d\n%d\n", a[b[0][0]-1][b[0][1]-1], a[b[1][0]-1][b[1][1]-1], a[b[2][0]-1][b[2][1]]-1);
for(i = 0; i < 3; i++){
for(j = 0; j < 3; j++){
if(f[a[i][j]] == 0){
n1 = i;
n2 = j;
}
}
}
sum1 = 45;
for(i = 0; i < 3; i++){
for(j = 0; j < 3; j++){
sum1 = sum1 - a[i][j];
}
}
a[n1][n2] = sum1; //将为零的值赋值为有效值
if(m >= 1 && m <= 3){
for(i = 0; i < 3 ; i++){
sum = sum + a[m][i];
}
}else if(m >=4 && m <= 6 ){
for(i = 0; i < m; i++){
sum = sum + a[i][m];
}
}else if( m == 7){
sum = a[0][0] + a[1][1] + a[2][2];
}else{
sum = a[0][2] + a[1][1] + a[2][0];
}
if(sum == 6){
printf("%d", 10000);
}else if(sum == 7){
printf("%d", 36);
}else if(sum == 8){
printf("%d", 720);
}else if(sum == 9){
printf("%d", 360);
}else if(sum == 10){
printf("%d", 80);
}else if(sum == 11){
printf("%d", 252);
}else if(sum == 12){
printf("%d", 108);
}else if(sum == 13){
printf("%d", 72);
}else if(sum == 14){
printf("%d", 54);
}else if(sum == 15){
printf("%d", 180);
}else if(sum == 16){
printf("%d", 72);
}else if(sum == 17){
printf("%d", 180);
}else if(sum == 18){
printf("%d", 119);
}else if(sum == 19){
printf("%d", 36);
}else if(sum == 20){
printf("%d", 306);
}else if(sum == 21){
printf("%d", 1080);
}else if(sum == 22){
printf("%d", 144);
}else if(sum == 23){
printf("%d", 1800);
}else if(sum == 24){
printf("%d", 3600);
}
return 0;
}