77范文网 - 专业文章范例文档资料分享平台

北理C语言作业及答案3(2)

来源:网络收集 时间:2019-03-16 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

/* PRESET CODE BEGIN - NEVER TOUCH CODE BELOW */#include \int josephus( int *boy, int n, int m, int r );int main( ){ int i, boy[50]={0}, n, m, r; scanf(\ if( n<=0 || n>50 || m<=0 || m>50 || r<=0 ) printf(\ else { for( i=0; i1) { if((m+r-1)%n!=0) { for(j=(m+r-1)%n-1;j

}

H18:拱猪计分(选作)

成绩: 5 / 折扣: 0.8

背景:

拱猪是一种很有趣的扑克牌游戏。即使你不知道它的玩法,你也可以由它的计分方式来了解它的趣味性。 假设在此我们仅考虑四个人的拱猪牌局,本题要求你根据下面的计分规则,在牌局结束时计算四位玩家所得分数。

1. 我们分别以S、H、D及C来代表黑桃,红心,方块及梅花,并以数字1至 13来

代表A、2、…、Q、K等牌点,例如:H1为红心A,S13为黑桃K。

2. 牌局结束时,由各玩家持有的有关计分的牌(计分牌)仅有S12(猪),所有红心牌,

D11(羊)及C10(加倍)等16张牌。其它牌均弃置不计。若未持有这16张牌之任一张则以得零分计算。

3. 若持有C10的玩家只有该张牌而没有任何其它牌则得+50分,若除了C10 还有其

它计分牌,则将其它计分牌所得分数加倍计算。 4. 若红心牌不在同一家,则H1至H13等13张牌均以负分计,其数值为-50, -2,-3,

-4,-5,-6,-7,-8,-9,-10,-20,-30,-40。而且S12与D11分别以-100及+100分计算。

5. 若红心牌H1至H13均在同一家,有下列情形:

o 所有红心牌以+200分计算。

o 若S12、D11皆在吃下所有红心牌之一家,则此玩家得+500分。 o 而C10还是以前面所述原则计算之。 例一:若各玩家持有计分牌如下: ( 每列代表一玩家所持有之牌 ) S12 H3 H5 H13 D11 H8 H9

C10 H1 H2 H4 H6 H7 H10 H11 H12

则各家之得分依序为: -148 、 +83 、 -138 及 -60 。 例二:若各玩家持有计分牌如下:(第四家未持有任何计分牌) H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 S12 C10 D11

则各家之得分依序为: +200 、 -200 、 +100 及 0 。

例三:若有一玩家持有所有 16 张计分牌,则得 +1000 分。其余三家均得零分。

输入:

每个输入文件由多组测试数据构成,每组测试数据有四行,每一行第一个数为该玩家所持有计分牌总数,而后列出其所持有之所有计分牌,牌数与各计分牌均以一个以上的空格分开。相邻两组测试数据之间不会有空白行,读到四家持牌数都为 0 表示文件结束。

输出:

每一行输出一组测试数据对应的结果,依次输出各家所得分数,共四个整数 ( 含正负号,0 除外),相邻两个整数之间以一个空格分开,符号和数字间不可以有空格。每组输出间不需要有空白行。

时间内存限额外限制进程制 1秒 64M 0 测试输入以文本方式显示 1. 2. 3. 4. 5. 期待的输出 测试用例 1 4 S12 H3 H5 H13? 3 D11 H8 H9? 6 C10 H1 H2 H4 H6 H7? 以文本方式显示 3 H10 H11 H12? 13 H1 H2 H3 H4 H5 H6 H7 1. -148 +83 -138 H8 H9 H10 H11 H12 H13? -60? 6. 2 S12 C10? 2. +200 -200 7. 1 D11? +100 0? 8. 0? 9. 0? 10. 0? 11. 0? 12. 0? #include \

int myinput(int card[],int number[]) {

int i,n; char s[5];

for(i=0;i<4;i++) {

scanf(\ number[i]=n; while(n--) {

scanf(\ switch(s[0]) {

case 'S':card[13]=i;break; case 'D':card[14]=i;break; case 'C':card[15]=i;break;

case 'H':s[2]=='\\0'?(card[s[1]-'1']=i):(card[s[2]-'1'+10]=i); } } }

return number[0]+number[1]+number[2]+number[3]; }

int main() {

int

value[15]={-50,-2,-3,-4,-5,-6,-7,-8,-9,-10,-20,-30,-40,-100,100}, card[16],

score[4]={0,0,0,0}, number[4], i,s, input();

while(myinput(card,number)) {

for(i=0,s=0;i<13;i++) s+=card[i]; if(s) {

for(i=0;i<15;i++)

score[card[i]]+=value[i]; } else {

if(card[0]==card[13]&&card[13]==card[14]) score[card[0]]+=500; else {

score[card[0]]+=200;

score[card[14]]+=value[14]; score[card[13]]+=value[13]; } }

score[card[15]]+=number[card[15]]==1?50:score[card[15]]; for(i=0;i<4;i++)

printf(\ for(i=0;i<4;i++) score[i]=0;

}

return 0; }

46 求表示方法

成绩: 10 / 折扣: 0.8

设 m、n 均为自然数,m 可表示为一些不超过 n 的自然数之和,f(m,n) 为这种表示方式的数目。

例如,f(5,3)=5,有5种表示方法:3+2,3+1+1,2+2+1,2+1+1+1,1+1+1+1+1。 请编写程序,计算f(m,n)的值。 输入: m n 输出: f(m,n)的值

测试输入 期待的输出 时间限制 内存限制64M 额外进程0 以文本方式显示 以文本方式显示 1秒 测试用例 1 1. 5 3? 1. 5? 以文本方式显示 以文本方式显示 1秒 测试用例 2 1. 6 4? 1. 9? 64M 0 #include int f(int y,int x) {

if(y==1) return 1; if(x==1) return 1; if(y

if(x==y) return 1+f(y,x-1); return f(y,x-1)+f(y-x,x); }

main() {

int m,n;

scanf(\

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库北理C语言作业及答案3(2)在线全文阅读。

北理C语言作业及答案3(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/527122.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: