当前位置:首页 > 程序设计基础——基于C语言(第2版) 课后习题参考答案
两数A,B公约数CC=AA
(1)钞票换硬币:把一元钞票换成一分、二分、五分硬币(每种至少一枚),有哪些种换法? 分析:1元相当于100分,设5分、2分、1分的硬币数分别为X、Y、Z,求换法就是在寻找这样一种组合,使得5*X+2*Y+Z =100,所以每当找到1种组合时,将个数记录下来,就可知换法有多少种,算法描述如下:
Count = 0; //用于记录个数,初始为0 for(X=1;X<=20;X++) for(Y=1;Y<=50;Y++) for(Z=1;Z<=100;Z++) {
if(5*X + 2*Y + Z == 100) //可实现交换 Count ++; }
输出Count
(2)百钱买百鸡:一只公鸡值5元,一只母鸡值3元,3只小鸡值1元,现用一百元要买一百只鸡,问有什么方案?
分析:由题意可知,假设公鸡、母鸡、小鸡分别有X、Y、Z只,那么X、Y、Z满足:X+Y+Z=100,而且要满足钱数限定:5*X+3*Y+1/3*Z = 100,由于3只小鸡1元钱,所以小鸡的个数必须是3的整数倍,即:Z是3的整数倍。可通过限制条件,筛选出满足条件的X,Y,Z。当然X、Y、Z还满足以下条件:5*X <= 100;3*Y <= 100;Z <= 100。以下是算法描述:
for(X=0;X<=100;X++) for(Y=0;Y<=100;Y++) for(Z=0;Z<=100;Z++) {
if(5*X<=100 and 3*Y<=100 and z%3==0) {
if(X+Y+Z==100 and 5*X+3*Y+Z/3 == 100) {
输出X、Y、Z; } } }
(3)斐波那契兔子的问题:某人有一对兔子饲养在围墙中,如果它们每个月生一对兔子,且新生的兔子在第二个月后也是每个月生一对兔子,问一年后围墙中共有多少对兔子。
分析:第一个月是最初的一对兔子生下一对兔子,围墙内共有两对兔子。第二个月仍是最初的一对兔子生下一对兔子,共有3对兔子。到第三个月除最初的兔子新生一对兔子外,第一个月生的兔子也开始生兔子,因此共有5对兔子。继续推下去,第12个月时最终共有对377对兔子。由分析知,每个月的兔子都是上个月的兔子与新增兔子之和,而上个月新生的兔子到下个月才会生兔子,所以新增的兔子都是上两月的兔子生的。设每个月的兔子数为F(n),则可列出下列式子:
F(0) = F(1) = 1 F(n) = F(n-1) + F(n-2)
显然可用递归的方法解出此题,算法流程图如下:
开始F(n)=0i=0Fi==0||i==1TF(i) = F(i-1) + F(i-2)F(i)=1i++i==12T输出F(i)F开始
习题2参考答案
(1)请简要描述C语言的发展历史。
答:C语言是一种目前世界上普遍流行、使用广泛的高级程序设计语言,它是在B语言的基础上发展起来的,1972—1973年间,贝尔实验室设计出了C语言。1983年,美国国家标准化协会制定了C语言的标准,称为ANSI C。 (2)略。
(3)C语言的主要特点是什么? 答:C语言的主要特点如下。 ① C程序是由函数组成的。
② 函数由函数头和函数体组成。
③ C程序总是从main函数开始执行。
④ 每个语句和数据声明的最后必须有一个“;”。
⑤ C语言没有自己的输入/输出语句,它的输入/输出由库函数printf和scanf完成。 ⑥ 可以添加注释。
⑦ C语言程序中的变量必须先声明后使用。 (4)如何使用Visual C++ 6.0开发控制台程序? 使用VC6开发控制台程序的方法如下:
答:① 在Miscrosoft Visual C++ 6.0环境下,首先建立一个空的工程。
② 而后建立一个C源程序文件,并在该文件中输入源代码。 ③ 使用Bulid命令或者快捷键F7,进行编译连接。
④ 如果没有错误,选择Execute命令或者快捷键Ctrl+F5,进行执行。
习题3参考答案:
3.1 选择题
1.B 2.D 3.D 4.A 5.A 6.A 7.C 8.C 9.C 10.B 3.2 写出下列程序的输出结果
1.200 310 c8 2.a=100,b=200 3.97,141,61,a 4.
5.aabb c abc 4,3
6.6,6,6,7 3.3 编程题
1.
#include
int a=500;
printf(\}
输出结果:500,764,1f4 2.
#include
float x;
scanf(\
printf(\}
输入:66
输出结果:a=66.000,a=6.60000e+001 3.
#include
char ch1='a',ch2=ch1;
printf(\printf(\}
输出结果:A,65,101,41
a,97,141,61
4.
#include
float x,y,z,s,v;
scanf(\s=2*(x*y+x*z+y*z); v=x*y*z;
printf(\}
输入:3 4 5
输出结果:Area=94 ,Volume=60 5.
#define PI 3.14
共分享92篇相关文档