C语言实验三循环结构程序设计解答.docx
- 文档编号:6153579
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:13
- 大小:25.79KB
C语言实验三循环结构程序设计解答.docx
《C语言实验三循环结构程序设计解答.docx》由会员分享,可在线阅读,更多相关《C语言实验三循环结构程序设计解答.docx(13页珍藏版)》请在冰豆网上搜索。
C语言实验三循环结构程序设计解答
实验三循环结构程序设计
一、实验目的
1.熟练掌握三种循环语句的应用。
2.熟练掌握循环结构的嵌套。
3.掌握break和continue语句的使用。
4.练习调试与修改程序。
5.掌握一组数据求和、求平均值、求最大值最小值的计算方法。
6.掌握循环次数已知、未知的处理方法(精度的控制、结束标志的使用等)
7.掌握简单图形的打印输出处理。
二、实验内容
1.[目的]掌握循环次数已知的循环控制处理方法。
[题目内容]编写一个程序,其功能为:
计算并输出1~10的平方值。
[输入]无
[输出]如下形式
1squaredis1
2squaredis4
3squaredis9
4squaredis16
5squaredis25
6squaredis36
7squaredis49
8squaredis64
9squaredis81
10squaredis100
[提示]使用三种循环语句均可。
#include"stdio.h"
voidmain()
{
inti;
for(i=1;i<=10;i++)
printf("\n%dsquaredis%d\n",i,i*i);
printf("\n");
}
2.[目的]掌握循环次数已知的循环控制处理方法。
[题目内容]编写一个程序,其功能为:
计算并输出
。
[输入]键盘输入x值
[输出]计算结果
[提示]使用三种循环语句均可。
#include"stdio.h"
voidmain()
{
intn,x,sum=0;
printf("请输入x:
");
scanf("%d",&x);
for(n=1;n<=100;n++)
sum=sum+x*x;
printf("sum=%d\n",sum);
}
如果程序功能为:
计算并输出
,要求从键盘输入n、x值,程序应如何修改?
3.[目的]掌握循环次数已知的循环控制处理方法。
[题目内容]编写一个程序,其功能为:
求1-100之间的奇数之和。
[输入]无
[输出]计算结果
[提示]使用三种循环语句均可。
#include"stdio.h"
voidmain()
{
inti,sum=0;
for(i=1;i<=100;i=i+2)
sum=sum+i;
printf("sum=%d\n",sum);
}
4.[目的]掌握循环次数已知的循环控制处理方法。
[题目内容]编写一个程序,其功能为:
输出100以内能被7整除的数。
[输入]无
[输出]判断结果
[提示]使用三种循环语句均可。
#include"stdio.h"
voidmain()
{
inti,sum=0;
for(i=1;i<=100;i++)
if(i%7==0)printf("%d\t",i);
}
5.[目的]掌握循环次数已知的循环控制处理方法。
[题目内容]编写一个程序,其功能为:
计算并输出一年12个月的总降雨量和平均降雨量。
[输入]12个月的降雨量
[输出]总降雨量和平均降雨量
[提示]使用for循环语句,和值、平均值变量采用双精度类型,和值初值设为零。
#include"stdio.h"
voidmain()
{
inti;
doublex,sum=0,ave;
for(i=1;i<=12;i++)
{
printf("请输入%d月的降雨量:
",i);
scanf("%lf",&x);
sum=sum+x;
}
ave=sum/12;
printf("sum=%lf\tave=%lf\n",sum,ave);
}
6.[目的]掌握循环次数已知的循环控制处理方法。
[题目内容]编写一个程序,其功能为:
在0°到90°之间每隔5°输出一行数据,打印一个表。
每行中包括5个项目:
角度数,以及它所对应的正弦、余弦、正切、余切函数值。
[输入]无
[输出]如下表格
[提示]使用for循环语句和if语句,注意0°、90°时的正切和余切的处理。
#include"stdio.h"
#include"math.h"
#definePI3.1415926
voidmain()
{
inti;
doubleih;
printf("角度数正弦余弦正切余切\n");
for(i=0;i<=90;i=i+5)
{
ih=i*PI/180;
if(i==0)
printf("%d\t%lf\t%lf\t%lf\t%c\n",i,sin(ih),cos(ih),sin(ih)/cos(ih),'-');
elseif(i==90)
printf("%d\t%lf\t%lf\t%c\t%lf\n",i,sin(ih),cos(ih),'-',cos(ih)/sin(ih));
else
printf("%d\t%lf\t%lf\t%lf\t%lf\t\n",i,sin(ih),cos(ih),sin(ih)/cos(ih),cos(ih)/sin(ih));
}
}
7.[目的]掌握循环次数已知的循环控制处理方法。
[题目内容]编写一个程序,其功能为:
输入10个字符,输出各个字符的ASCII编码。
[输入]10个字符
[输出]各个字符的ASCII编码
[提示]使用for循环语句,字符的输入不需要分隔符,可以连续输入10个字符。
#include"stdio.h"
voidmain()
{
inti;
charch;
for(i=1;i<=10;i++)
{
printf("请输入一个字符:
");
scanf("%c",&ch);
printf("\n%c%d\n",ch,ch);
}
}
8.[目的]掌握循环次数未知的循环控制处理方法。
[题目内容]编写一个程序,其功能为:
计算一批货物的总值,输入货物单价和数量。
事先不知道需要统计的货物有多少种。
[输入]货物单价和数量
[输出]货物的总值
[提示]使用while循环语句或do…while语句,设计一个特殊值作为循环结束的标志,例如,单价值为零。
#include"stdio.h"
voidmain()
{
doubleprice,num,sum=0;
printf("请输入货物单价和数量:
");
scanf("%lf%lf",&price,&num);
while(price!
=0)
{
sum=sum+price*num;
printf("请输入货物单价和数量:
");
scanf("%lf%lf",&price,&num);
}
printf("sum=%lf\n",sum);
}
9.[目的]掌握递推法的处理方法。
[题目内容]编写一个程序,其功能为:
输出fibnocci数列的前20项,每行输出5个。
说明:
fibnocci数列的前两项均为1,以后各项等于其前两项之和。
[输入]无
[输出]fibnocci数列的前20项
[提示]使用for循环语句以及递推算法,fibnocci数列的前两项均为1,以后各项等于其前两项之和。
#include"stdio.h"
voidmain()
{
inti,f1,f2,f3,n;
f1=1;f2=1;
printf("\n%8d%8d",f1,f2);
n=2;
for(i=1;i<=18;i++)
{
if(n%5==0)printf("\n");
f3=f1+f2;
printf("%8d",f3);n++;
f1=f2;f2=f3;
}
printf("\n");
}
10.[目的]掌握递推法的处理方法。
[题目内容]编写一个程序,利用递推法计算下列公式:
要求精确到10-6。
[输入]无
[输出]计算结果
[提示]使用do..while循环语句以及递推算法,当计算到n项时,
,当计算到n+1项时,
。
计算到yn+1-yn=
≤10-6为止。
#include"stdio.h"
voidmain()
{
intn=1,m;
doubley1,y=1;
do
{
m=n*(n+1);
y1=1.0/m;
y=y+y1;
n++;
}while(y1>=10e-6);
printf("y=%lf\n",y);
}
11.[目的]掌握递推法的处理方法。
[题目内容]求和值Sn=a+aa+aaa+……+aaaa…aa(n位)。
如n=5,a=3,则是求S5=3+33+333+3333+33333。
编写程序对于任意输入的a和n,求Sn。
[输入]a和n
[输出]Sn
[提示]使用for循环语句以及递推算法。
可设定一个变量m,m的初值为a,将m的值加到初值为0的变量S中;下一个要加的值可如下计算:
m=m*10+a,共加n次。
#include
voidmain()
{
inta,n,i;
longterm,sum;
printf("请输入a,n:
");
scanf("%d,%d",&a,&n);
term=a;
sum=a;
for(i=2;i<=n;i=i+1)
{
term=term*10+a;
sum=sum+term;
}
printf("sum=%ld\n",sum);
}
12.[目的]掌握递推法的处理方法。
[题目内容]编写一个程序,求1+2!
+3!
+...+20!
的和。
[输入]无
[输出]1+2!
+3!
+...+20!
的和
[提示]使用for循环语句以及递推算法。
关键语句longterm=1,sum=0;term=term*i;sum=sum+term;
#include
voidmain()
{
longterm=1,sum=0,i;
for(i=1;i<=20;i++)
{
term=term*i;
sum=sum+term;
}
printf("%ld\n",sum);
}
13.[目的]掌握穷举法的处理方法。
[题目内容]编写一个程序,判断一个整数是否素数。
[输入]无
[输出]是否素数的信息
[提示]使用for循环语句以及穷举算法。
利用素数的定义。
#include"stdio.h"
voidmain()
{
intx,i;
printf("请输入一个整数:
");
scanf("%d",&x);
for(i=2;i { if(x%i==0) { printf("\n%d不是素数。 \n",x); break; } } if(i>=x)printf("\n%d是素数。 \n",x); } 14.[目的]掌握穷举法的处理方法。 [题目内容]编写一个程序,输出9*9乘法口诀表。 [输入]无 [输出]9*9乘法口诀表。 [提示]使用for循环语句以及穷举算法。 算法提示: 分行与列考虑,共9行9列,外循环控制行,内循环控制列。 方阵 #include voidmain() { inti,j; for(i=1;i<=9;i++) {for(j=1;j<=9;j++) printf("%2d*%2d=%2d",i,j,i*j); printf("\n");} } 斜三角 #include voidmain() { inti,j; for(i=1;i<=9;i++) {for(j=1;j<=i;j++) printf("%2d*%2d=%2d",i,j,i*j); printf("\n");} } 15.[目的]掌握穷举法的处理方法。 [题目内容]编写一个程序,打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数。 [输入]无 [输出]所有的“水仙花数” [提示]使用for循环语句以及穷举算法。 算法提示: ①利用单层for循环控制对100—999之间的数,每个数分解出个位,十位,百位。 ②使用3重for循环,循环变量分别取值为1-9,0-9,0-9。 #include voidmain() {inti,a,b,c; for(i=100;i<=999;i++) {a=i/100; b=i%100/10; c=i%10; if(a*a*a+b*b*b+c*c*c==i) printf("%d\n",i); } } #include voidmain() {inti,j,k; for(i=1;i<=9;i++) for(j=0;j<=9;j++) for(k=0;k<=9;k++) {if(i*100+j*10+k==i*i*i+j*j*j+k*k*k) printf("%d\n",i*100+j*10+k); } } 16.[目的]掌握图形输出的处理方法。 [题目内容]一个电子器件的可靠性由下面等式给定: 可靠性(r)=e-λt,其中,λ为器件每小时的失效率,t为运行时间(以小时为单位)。 编写一个程序,画出一个图形,用来确定在0到3000小时内不同运行时间的可靠性。 失效率λ为0.001。 [输入]n=3000,lamda=0.001 [输出]图形 [提示]使用for循环语句,算法提示: t的值由for语句按步长为150生成for(t=0;t<=3000;t=t+150),语句R=(int)(50*r+0.5)中的整数50是一个放大因子,用来把r转换为一个较大的数值,该数值用于描述曲线(r的值总是小于)。 #include #include voidmain() { doubler,lamda; inti,t,n,R; printf("请输入器件的每小时失效率: "); scanf("%lf",&lamda); printf("请输入最大时间: "); scanf("%d",&n); for(i=0;i<=27;i++) printf("--"); printf("\n"); for(t=0;t<=n;t=t+150) { r=exp(-lamda*t); R=(int)(50*r+0.5); printf("|"); for(i=1;i<=R;i++) printf("*"); printf("\n"); } for(i=1;i<3;i++) printf("|\n"); } 17.[目的]运用已学知识解决实际问题。 [题目内容]某物品的现值(通常称为帐面价格)由以下等式给出 P=c(1-d)n 其中: c=原始价值,d=年折旧率,n=已使用年限P=经过y年后的现值。 如果把P看作是该物品经使用年限后的报废价值,编写一个程序,给定原始价值、折旧率、报废价值,计算出可使用的年限。 [输入]原始价值、折旧率、报废价值 [输出]可使用的年限 [提示]使用for循环语句、break语句。 #include #include voidmain() { doublec,d,p,p1; intn; printf("请输入原始价值、折旧率、报废价值: "); scanf("%lf%lf%lf",&c,&d,&p); p1=c; for(n=0;n<=100000;n++) { p1=p1*(1-d); if(p>p1)break; } printf("可使用年限是: %d\n",n-1); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 实验 循环 结构 程序设计 解答