解题思路:
由题目可得,A和B进行剪刀石头布的游戏,A与B分别都有自己的规律,且分别在NA和NB循环一次,需要判断经过N次之后,谁获胜的次数更多。
首先,由于输入的两个数组分别均为A与B的数组,数组元素分别为NA,NB,需要现将其根据循环特性拓展为元素个数为N的数组,再分别判断两个数组对应元素之间的输赢关系,如果A获胜,A获胜次数sum1++;如果B获胜,B获胜次数sum2++;如果平手则都不输出,最后比较sum1和sum2的大小,从而判断谁获胜次数更多。
注意事项:
利用A与B各自的循环特性,将arr1[NA]和arr2[NB]均扩展为元素为N的数组。
将对应下标的两个元素进行比较,判断输赢关系。
参考代码:
#include <stdio.h>
//判断数组对应元素A与B的输赢
int my_Ordering(int a, int b)
{
if (a == 0 && b == 2 || a == 2 && b == 5 || a == 5 && b == 0)
{
return 1;
}
else if (a == 0 && b == 5 || a == 5 && b == 2 || a == 2 && b == 0)
{
return -1;
}
else
{
return 0;
}
}
int main()
{
int N = 0;
int NA = 0;
int NB = 0;
int arr1[100] = { 0 };
int arr2[100] = { 0 };
int sum1 = 0;
int sum2 = 0;
scanf("%d %d %d", &N, &NA, &NB);
//分别输入A与B的特征数组
int i = 0;
for (i = 0; i < NA; i++)
{
scanf("%d", &arr1[i]);
}
for (i = 0; i < NB; i++)
{
scanf("%d", &arr2[i]);
}
//将arr1[NA]和arr2[NB]均拓展为arr1[N]和arr2[N]
for (i = NA; i < N; i++)
{
arr1[i] = arr1[i % NA];//使下标为i的数组元素大小与下标为i + NA元素相等,拓展数组
}
for (i = NB; i < N; i++)
{
arr2[i] = arr2[i % NB];//使下标为i的数组元素大小与下标为i + NB元素相等,拓展数组
}
//逐项对比数组元素,判断输赢关系
for (i = 0; i < N; i++)
{
if (my_Ordering(arr1[i], arr2[i]) == 1)
{
sum1++;
}
else if (my_Ordering(arr1[i], arr2[i]) == -1)
{
sum2++;
}
}
//根据输出的赢的总次数,输出结果
if (sum1 > sum2)
{
printf("A\n");
}
else if (sum1 < sum2)
{
printf("B\n");
}
else
{
printf("draw\n");
}
return 0;
}
0.0分
1 人评分
C二级辅导-求偶数和 (C语言代码)浏览:659 |
C语言训练-求矩阵的两对角线上的元素之和 (C语言代码)浏览:3472 |
2005年春浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:530 |
C语言训练-求具有abcd=(ab+cd)2性质的四位数 (C语言代码)浏览:619 |
C语言程序设计教程(第三版)课后习题8.3 (C语言代码)浏览:693 |
WU-图形输出 (C++代码)浏览:836 |
【蟠桃记】 (C语言代码)浏览:1084 |
关于float,double变量的几点说明浏览:1926 |
川哥的吩咐 (C语言代码)浏览:663 |
C语言程序设计教程(第三版)课后习题6.8 (C语言代码)浏览:653 |