logo资料库

C语言程序:保龄球程序代码设计.doc

第1页 / 共4页
第2页 / 共4页
第3页 / 共4页
第4页 / 共4页
资料共4页,全文预览结束
试题三 阅读以下程序说明和 C 程序,将应填人棗(n)棗处的字句,写在答卷的对应栏内。 [程序说明] 打保龄球是用一个滚球去打出十个站立的柱,将柱击倒。一局分十轮,每轮可滚球一次或多次,以击倒的 柱 数为依据计分。一局得分为十轮得分之和,而每轮的得分不仅与本轮滚球情况有关,还可能与后续一两轮 的 ;滚球情况有关。即,某轮某次滚球击倒的柱数不仅要计入本轮得分,还可能会计入前一两轮得分。具体 的 滚球击柱规则和计分方法如下: 1. 若某一轮的第一次滚球就击倒全部十个柱,则本轮不再滚球。(若是第十轮则还需另加两次滚球)。 该轮得分为本次倒柱数 10 与以后两次滚球所击倒柱数之和。 2. 若某一轮的第一次滚球未击倒十个柱,则可对剩下未倒的柱再滚球一次。如果这两次滚球击倒全 部十 个柱,则本轮不再滚球(若是第十轮则还需另加一次滚球),该轮得分为本次倒柱数 10 与以后一 次滚 球所击倒柱数之和。 3. 若某一轮的两次滚球未击倒全部十个柱,则本轮不再继续滚球,该轮得分为这两次滚球击倒的柱 数这 和。 总之,若一轮中一次滚球或两次滚球击倒十个柱,则本轮得分是本轮首次滚球开始的连续三次滚球击倒柱 数 之和(其中有一次或两次不是本轮滚球)。若一轮内二次滚球击倒柱数不足十个,则本轮得分即为这两次 击 倒柱数之和。 以实例说明如下: 轮 1 各轮 10 2 10 3 10 4 7 5 9 6 8 7 8 8 10 9 9 10 10 8 第一 次得 分 各轮 / / / 2 1 1 2 / 1 / 2 第二 次得 分 各轮 30 27 19 9 18 9 20 20 20 20 得分
累计 30 57 76 85 103 112 132 152 172 192 总分 本程序是模拟打一局保龄球的过程,统计各轮得分和累计总分。程序交互地逐轮逐次 输人一次滚球击倒的柱数,计算该轮得分和累计总分。为记录因一轮内击倒十柱,还暂不能计算该轮得分 和 累计总分的情况,程序引人变量 Oh,用来记录当前已完成完整计算的轮次。程序每输人一次滚球击倒柱数, 就检查还未完成完整计算的轮次,并计算之。 (程序)1 #include<stdio. h> #define N 13 struct { int n;/* 一轮内滚球次数 */ int f;/* 第一次击倒柱数 */ int s;/* 第一次击倒柱数 */ int score; /* 本轮得分 */ int total;/* 至本轮累计总分 */ int m; /* 完成本轮得分计算,还需滚球次数 */ } a [N]; int ok = 0; /* 已完成完整计算的轮次数 */ int ball(int i, int n, int max) /* 完成一次滚球,输入正确击倒柱数 */ { int d, j, k; staic c=1; while(1) { if (i<=10) printf(" 输入第%d 轮的第%d 次滚球击倒柱数。(<=%d)\n", i, n, max); else
printf(" 输入附加的第%d 次滚球击倒柱数。(<=%d)\n", C++, max); scanf("%d", &d); if (d >=0 && d<=max) break; printf(" 不合理的击倒柱数,请重新输入。\n"); } if (ok
a[i].score+=a[i].s=second=ball(i,2,10-first); if (first + second ==10) a[i].m=1; a[i].n=2; } if(i <= 10 && first <10 && fist +second <10) { a[i].total =(i>1 ? a[i-1].total:0)+a[i].score; ok=i; } printf(" 各轮第一次得分"); for(k=1; k<=1; k++) printf("%5d", a[k].f); printf("\n 各轮第二次得分 "); for(k=1; k<=i; k++) if (a[k].n <2) printf(" /"); else printf("%5d", a[k].s); printf(" \n 各轮得分 "); for(k=1; k <= ok; k++) printf("%5d", a[k].score); printf("\n 累计总分 "); for(k=1; k<= ok; k++) printf("%5d", a[k].total); printf("\n\n"); } }
分享到:
收藏