- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验三 循环结构程序设计(参考答案)
1、设计程序 sy3-1.c ,要求打印小学九九乘法表。
算法分析:
根据九九乘法表可知,该表共有 9 行,第 i 行有 i 个表达式,而且表达式中的操作数和行、列数相关,
因此可以用嵌套的双重循环来实现,外循环控制行数(循环变量从 1 到 9),内循环控制每行的表达式个数
(循环变量从 1 变到 i)。
参考答案:
# include stdio.h
void main()
{
int i,j;
for(i=1;i=9;i++)
{
for(j=1;j=i;j++)
printf(%d*%d=%-5d,j,i,i*j);
printf(\n);
}
}
运行结果:
n
2、设计程序 sy3-2.c ,要求编程计算 x ,其中 x 和 n 均由键盘输入2。
算法分析:
要计算 x 的 n 次方,即是 n 次 x 相乘,其中 x 可以是整型或实型,而 n 必须是整型;另外要考虑结果
的类型,若 x 和 n 比较大,一般的 int 型容易产生溢出。
参考答案:
# include stdio.h
void main()
{
int i,n;
float x,p=1;
/*累乘器要赋初值 1*/
printf(Input x,n: );
scanf(%f,%d,x,n); /*以逗号分隔输入的已知数据 x 和 n 的值*/
for(i=1;i=n;i++)
p=p*x;
printf(%g^%d=%g\n,x,n,p);
}
运行结果:
3、设计程序 sy3-3.c,已知祖父年龄 70 岁,长孙 20 岁,次孙 15 岁,幼孙 5 岁,问要过多少年,三个孙子
的年龄之和同祖父的年龄相等,试用单重循环结构编程实现。
算法分析:
这个程序可以用穷举法来实现,1 年、2 年、3 年……,每加一年都判断三个孙子的年龄之和是否同祖
父的年龄相等,若相等则不加了,这个时候所加的年数为我们需要的结果。
参考答案:
# include stdio.h
void main()
{
int i,a,b,c,d;
a=20; b=15; c=5; d=70;
i=1;
while(a+i+b+i+c+i!=d+i)
i++;
printf(After %d years be can.\n,i);
}
运行结果:
4、设计程序 sy3-4.c ,有一数列:2/1,3/2,5/3,8/5,…求出这个数列的前 10 项之和。
算法分析:
这是一个序列累加的算法,第一项的值是 2/1,之后每一项的规律是:分母为前一项的分子,分子为
前一项分子分母之和;另外注意在除运算中若分子分母都为整数则结果也为整数,显然在这道题中分子分
母的类型应为实型。
参考答案:
# include stdio.h
void main()
{
int i;
float s=0,a=2,b=1,c,t;
for(i=1;i=10;i++)
{ t=a/b;
s=s+t;
c=a;
/*计算确定分子分母后当前项的值 */
/*将当前项 t 的值累加到求和变量 s 当中*/
/*将前一项的分子暂存于 c 变量中*/
a=a+b;
b=c;
/*修改下一项的分子为前一项分子分母之和 */
/*修改下一项的分母为前一项的分子 */
}
printf(The sum is %f\n,s);
}
运行结果:
5、设计程序 sy3-5.c ,一球从 200 米高度自由落下,每次落地后反跳回原高度的四分之一,再落下。编程
求它第 10 次落地时共经过的路程及第 10 次落地后反弹的高度。
算法分析:
该题也是进行多次加操作、求最终和的问题。在这里要定义一个变量( s)记录小球反复落地总共经
历的高度,还要定义一个变量(h)表示小球每次反弹起来的高度。需要注意的一点是,小球第一次落地
时经历的路程为初始高度,即 s 初值为 200,在第一次落地后,s 中每次累加的是两倍的 h 值(弹起和再落
下),这个过程只需再重复九次即可。
参考答案:
# include stdio.h
void main()
{
float s=200,h=s/4;
int i;
/*记录第一次落地经过的路程和第一次反弹的高度 */
for(i=2;i=10;i++)
{ s=s+2*h;
h=h/4;
}
printf(s=%.2f\n,s);
printf(h=%f\n,h);
}
运行结果:
6、设计程序 sy3-6.c ,要求求出满足“百位减去十位等于个位”的所有三位整数,并按一行 5 个数输出结果。
算法分析:
该算法可用循环穷举所有的三位整数,逐一判断是否满足条件,并设置一个计数器,计找到的满足条
件数的个数,当计数器为 5 的倍数的时候输出回车换行。
参考答案:
# include
文档评论(0)