当前位置:文档之家› 实验4_循环结构程序设计1题目及解答

实验4_循环结构程序设计1题目及解答

4.3 循环结构程序设计1
【(1)题中页码均为《C 语言程序设计教程》中的页码
(2)题后为原程序文件名 (3)仅提交名为【*.c 】的源程序文件,可一起提交,也可逐题提交 】
1、 按照右边给出的流程图用while 语句求1~100之间的偶数之和。

(007张三t411.c, 007张三t412.c ) 【提示:参见p89—例4.18 ,并按照下面的左流程图书写007张三t411.c ,右流程图书写007张三t412.c 程序运行结果: s=2550 】
2、 按照右边给出的流程图用while 语句求出所有的水仙花数(如135:
153=13+53+33)。

(007张三t42.c )【限制用一重循环实现】 【提示:
程序运行结果:
全部水仙花数如下:⋃⋃153⋃⋃370⋃⋃371⋃⋃407 】
3、 根据公式,求)(1n n 1
4313212
11
....+∙∙∙∙++++ 的前n 项之和。

(007张三t431.c ,007张三t432.c ) 【提示:参见p90—例4.19了解类似算法的实现
参见p93--例4.18了解do-while 语句的应用 007张三t431.c---用while 语句实现, 007张三t432.c 用do —while 语句实现
程序运行时: 程序运行结果:
请输入n :10↵ 前10项之和=0.91 请输入n :20↵ 前20项之和=0.95 】
4、求1!+2!+……+n!(007张三441.c和007张三442.c)【要求n≤10】
【提示:参见p90—例4.20,注意当n=10时,结果超过int 的最大值,建议用长整型(long int--%ld)007张三441.c---用while语句实现,
007张三442.c 用do—while语句实现
程序运行时:程序运行结果:
请输入n:1↵1!~1!之和=1
请输入n:3↵1!~3!之和=9
请输入n:10↵1!~10!之和=4037913
请输入n:20↵20超出本程序的求解范围!
请输入n:0↵0超出本程序的求解范围!

5、输出个位数字是6,且能被3整除的所有3位数(007张三45.c)【要求:输出时,每个数字占4位,右对齐】
程序运行结果:
附加题:
1、编制一个能破解4位数字组成的数字密码的程序(即密码不能以0开头),假设数字密码为:1234(007张三4附加1.c)。

【程序运行结果:
密码是:1234

2、鸡兔同笼问题,已知鸡和兔的总头数为a,总脚数为b,求鸡和兔的有多少只?(007张三4附加21.c,007张三4附加
22.c)【要求:(1)用循环结构实现,存于007张三4附加21.c
(2)顺序结构实现,存于007张三4附加22.c
【程序运行时:程序运行结果:
请输入鸡和兔的总头数和总脚数:4 8↵当4个头,8只脚时:鸡4只, 兔0只
请输入鸡和兔的总头数和总脚数:4 12↵当4个头,12只脚时:鸡2只, 兔2只

参考解答:
1、
2、
#include <stdio.h>
void main( )
{
int x, g, s, b; /*x-三位整数,g –个位,s-十位b-百位*/ x =100;
printf("全部水仙花数如下:");
while ( x <=999 )
{
g =x %10;
s =x /10 %10;
b =x /100 %10;
if ( x == g*g*g +s*s*s +b*b*b)
{
printf("%5d", x); /*输出满足水仙花条件的数*/
}
x++;
}
printf(“\n”);
}
3、
#include <stdio.h>
void main( )
{
double s=0.0;
int n, i=1;
printf(“请输入n:”);
scanf(“%d”, &n);
s=s+1.0/(i*(i-1));
i++;
}
printf(“前%d项之和=%.2lf\n”, n, s);
}
4、
#include <stdio.h>
void main( )
{
int i=1, n;
long p=1, s=0;
printf(“请输入n(1~10):”);
scanf("%d", &n);
if(n<1 || n>10)
{
printf(“%d超出本程序的求解范围!\n”, n); }
else
{
while ( i <=n )
{
s=s+p;
i++;
p=p*i;
}
printf(“1!~%d!之和=%ld\n”, s);
}
5、
#include <stdio.h>
void main( )
{
int x, g;
x=106;
while(x<=999)
{
g=x%10;
if(g==6 && x%3==0)
{
printf("%4d", x);
}
x++;
}
附加1:
方法1:
#include <stdio.h>
void main( )
{
int a, b; /*a--总头数,b总脚数*/
int j=1,t; /*j 鸡数,t兔数*/
printf("请输入鸡和兔的总头数和总脚数:");
scanf("%d %d", &a, &b);
while(j<=a)
{
t=a-j;
if( 2*j+4*t==b )
{
printf("当%d个头,%d只脚时:鸡%d只,兔%d只\n", a,b,j,t);
}
j++;
}
}
方法2:
#include <stdio.h>
void main( )
{
int a, b; /*a--总头数,b总脚数*/
int j,t; /*j 鸡数,t兔数*/
printf("请输入鸡和兔的总头数和总脚数:");
scanf("%d %d", &a, &b);
t= (b-2*a)/2;
j=a-t;
printf("当%d个头,%d只脚时:鸡%d只,兔%d只\n", a,b,j,t);
}。

相关主题