- 1、本文档共24页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PAGE \* MERGEFORMAT1
计算机程序设计基础
课程设计
目录
TOC \o 1-3 \u 一:捕鱼问题 PAGEREF _Toc414006021 \h 3
1、【设计题目】 PAGEREF _Toc414006022 \h 3
2、【设计内容及思路】 PAGEREF _Toc414006023 \h 3
3、【算法】 PAGEREF _Toc414006024 \h 3
4、【程序清单与运行结果】 PAGEREF _Toc414006025 \h 4
二:荷兰国旗问题 PAGEREF _Toc414006026 \h 5
1、【设计题目】 PAGEREF _Toc414006027 \h 5
2、【设计内容及思路】 PAGEREF _Toc414006028 \h 5
3、【算法】 PAGEREF _Toc414006029 \h 5
4、【程序清单与运行结果】 PAGEREF _Toc414006030 \h 6
三:发纸牌 PAGEREF _Toc414006031 \h 8
1、【设计题目】 PAGEREF _Toc414006032 \h 8
2、【设计内容及思路】 PAGEREF _Toc414006033 \h 8
3、【算法】 PAGEREF _Toc414006034 \h 8
4、【程序清单与运行结果】 PAGEREF _Toc414006035 \h 8
四:数字旋转方阵 PAGEREF _Toc414006036 \h 10
1、【设计题目】 PAGEREF _Toc414006037 \h 10
2、【设计内容及思路】 PAGEREF _Toc414006038 \h 10
3、【算法】 PAGEREF _Toc414006039 \h 10
4、【程序清单与运行结果】 PAGEREF _Toc414006040 \h 11
五:【总结及设计体会】 PAGEREF _Toc414006041 \h 12
一:捕鱼问题
1、【设计题目】
A、B、C、D、E五个人合伙夜间捕鱼,上岸时都疲惫不堪,各自在湖边的树丛中找地方睡觉了。清晨,A第一个醒来,将鱼分成5份,把多余的一条扔回湖中,拿自己的一份回家了;B第二个醒来,也将鱼分成5份,扔掉多余的一条鱼,拿自己的一份回家了;接着,C、D、E依次醒来,也都按同样的办法分鱼。问:5个人至少共捕到多少条鱼?每个人醒来后看到多少条鱼?
2、【设计内容及思路】
根据题意,总计将所有的鱼进行了五次平均分配,每次分配时的策略是相同的,即扔掉一条鱼后剩下的鱼正好分成五份,然后拿走自己的一份,余下其它的四份。假定鱼的总数为X,则X可以按照题目的要求进行五次分配:X-1后可被5整除,余下的鱼为4*(X-1)、5。
3、【算法】
采用正推法,fish[0]从1开始每次增加5,然后依次考查fish【n】是否满足被5证书后余1,算法描述如下:
Step1:初始化fish【0】=1;
Step2:重复下述操作,直到fish【n】满足被5除后余1;
Step2.1:fish【0】=fish【0】+5;
Step2.2:循环变量i从1到4,重复执行下述操作;
Step2.2.1:fish【i】=(fish【i-1】-1)/5*4;
Step2.2.2:如果fish【i】不满足被5除后余1,则转step2.1;
Step2.2.3:i++
Step3:依次输出数组fish【n】
4、【程序清单与运行结果】
#include stdio.h
int main()
{
char man[5] = {A,B,C,D,E};
int fish[5], i;
fish[0] = 1;
do
{
fish[0] = fish[0] + 5;
for (i = 1; i 5; i++)
{
fish[i] = (fish[i - 1] - 1) / 5 * 4;
if (fish[i] % 5 != 1)
break;
}
} while (i 5);
for (i = 0; i 5; i++)
printf(%c看到的鱼数是%d\n, man[i], fish[i]);
return 0;
}
显示结果:
A看到的鱼是3121
B看到的鱼是2493
C看到的鱼是1996
D看到的鱼是1596
E看到的鱼是1276
二:荷兰国旗问题
1、【设计题目】
要求重新排列一个由Red、White和Blue(这是荷兰国旗的颜色)构成的数组,使得所有的Red都排在最前面,White排在其次,Blue排在最后。
2、【设计内容及思路】
荷兰国旗问题其实就是一个排序
文档评论(0)