C++实验四 循环结构的程序设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
解题思路:首先,认真解读题目,该题首先是要用到do while循环结构和Xn+1= (Xn+ ),
因为要求小数点后有5位小数,所以将a定义为float型,定义a,x0,x1,输入a,使x0等于a的一半,再x1等于x0+a/x0的一半,再用dowhile函数,当前后两次求出的x的差的绝对值小于10-5时,进行x0=x1和x1=(x0+a/x0)/2循环,否则,跳出循环,最后输出x1就是x的平方根。
1.输入一个正整数n,求n以内(包括n)的偶数和减奇数和。
解题思路:
首先,认真解读题目,该题首先是要用到for循环结构,因为是要对n以内(包括n)的所有数字进行运算,所以要循环很多次,具体步骤,再输一个n时,由n控制运算到哪一个数为止,再用for语句实现循环,控制循环次数,i由1变到n,共循环n次,接下来用if语句判断i是偶数还是奇数,若是偶数就加上i,反之就减去i,再执行i++,使i的值加1,循环n次,最后输出sum。
n由键盘输入。
解题思路:
首先,认真解读题目,该题首先是要用到for循环结构和pow函数,先输入a和n,n控制加到几位数为止,再用for语句实现循环,控制循环次数,i由1变到n,共循环n次,接下来用pow函数,得出第i次时的i位数k,再把k加到sum上,再执行i++,使i的值加1,循环n次,最后输出sum。
printf("*");
printf("\n");
}
4.求1!+2!+3!+…+n!的值,n由键盘输入。
解题思路:
首先,认真解读题目,该题首先是要用到两个for循环结构,分别控制n!的输出和n个阶乘相加,输入n,由n控制运算到几的阶乘为止,先用for语句实现循环,控制循环次数,i由1变到n,共循环n次,再在for循环中再嵌套一个for循环,控制第i次循环时输出的数,把第i次循环时输出的数加到sum上,再执行i++,使i的值加1,循环n次,最后输出sum。
没有碰到困难,输入5,输出-3,顺利完成。
2.求Sn=a+aa+aaa+…+aa…a的值,其中a是一个数字,n表示a的位数,例如:
2+22+222+2222+22222(此时n=5)pow(10,2) math.h
n由键盘输入。
用pow函数时,遇到了困难,刚开始不知道怎么用,后来看了老师的做法后,受到了启发,后来自己完成了,输入2,5,输出2+22+222+2222+22222=24690。
输入4和6,输出最大公约数为2,最小公倍数为12。
2.用迭代法求x=√a。求平方根的迭代公式为
Xn+1= (Xn+ )
要求前后两次求出的x的差的绝对值小于10-5。
输入9,输出9的平方根3
(五)收获与体会
学了for循环和do while循环结构的程序设计之后,我对C语言有了更深层次的理解,在做这次作业的过程中,我发现了一些我经常会犯的一些小错误,例如“{}”没加,每句话最后的“;”没加,输入时的“%d,%d”中没加逗号,不能灵活运用学到的知识来解决问题,像A3题,书上有一题类似的题目,可是我不能举一反三,还是和同学讨论之后才做出来了,还有B2题,我不会做,还是去网上搜了一下之后才做出来,根据这些,我总结了一些建议给自己:
关键代码:
for(i=1;i<=n;i++)
{
s=1;
for(j=1;j<=i;j++)
{
s=s*j;
}
sum=sum+s;
}
printf("%d\n",sum);
B.do while,while循环结构
1.输入两个正整数m和n,求其最大公约数和最小公倍数。
解题思路:首先,认真解读题目,该题首先是要用到if语句和while循环结构,输入m和n两个正整数,先用if语句使n<m时,m和n两个正整数所赋的值互换,确保n>m,再p=n*m,再用while循环结构,在m不等于0时,用辗转相除法,算出他们的最大公约数,最后输出最大公约数为n,最小公倍数为p/n。
(二)实验内容
A. for循环结构
1.输入一个正整数n,求n以内(包括n)的偶数和减奇数和。
2.求Sn=a+aa+aaa+…+aa…a的值,其中a是一个数字,n表示a的位数,例如:
2+22+222+2222+22222(此时n=5)pow(10,2) math.h
n由键盘输入。
3.输入边长n(n≤20),用‘*’号打印边长为n的菱形。例如,n=5时,图形如下:
3.输入边长n(n≤20),用‘*’号打印边长为n的菱形。例如,n=5时,图形如下:
输入5,输出一个边长为5的菱形
4.(选做)求1!+2!+3!+…+n!的值,n由键盘输入。
输入5,输出1!+2!+3!+4!+5!=153
B.do while,while循环结构
1.输入两个正整数m和n,求其最大公约数和最小公倍数。
关键代码:
ifwenku.baidu.comn<m)
{
t=n;
n=m;
m=t;
}
p=n*m;
while(m!=0)
{
r=n%m;
n=m;
m=r;
}
printf("他们的最大公约数为:%d\n",n);
printf("他们的最小公倍数为:%d\n",p/n);
2.用迭代法求x=√a。求平方根的迭代公式为
Xn+1= (Xn+ )
要求前后两次求出的x的差的绝对值小于10-5。
(1)要把重点放在解题思路上,通过大量的例题来学习怎样设计算法,构造程序。
(2)掌握基本要求,注意打好基础。
(3)重视实践环节。
(4)要举一反三,题目不是一成不变的。
4.(选做)求1!+2!+3!+…+n!的值,n由键盘输入。
B.do while,while循环结构
1.输入两个正整数m和n,求其最大公约数和最小公倍数。
2.用迭代法求x=√a。求平方根的迭代公式为
Xn+1= (Xn+ )
要求前后两次求出的x的差的绝对值小于10-5。
(三)实验具体步骤
A. for循环结构
关键代码:
for(i=1;i<=n;i++)
{
k=(pow(10,i)-1)/9*a;
sum=sum+k;
}
printf("%d\n",sum);
3.输入边长n(n≤20),用‘*’号打印边长为n的菱形。例如,n=5时,图形如下:
解题思路:
首先,认真解读题目,该题首先是要用到多个for循环结构,输入n,由n控制输出的菱形的边长,先用for语句实现循环,控制循环次数,i由1变到n,共循环n次,控制上半部分的输出,再在for循环中用for语句来控制什么时候输出空格,什么时候输出‘*’号,再执行i++,使i的值加1,循环n次,接下来用同样的办法输出下半部分,循环n次后,输出菱形。
关键代码:
for(i=1;i<=n;i++)
{
for(j=1;j<=n-i;j++)
printf(" ");
for(k=1;k<=2*i-1;k++)
printf("*");
printf("\n");
}
for(i=1;i<=n;i++)
{
for(j=1;j<=i;j++)
printf(" ");
for(k=1;k<=2*(n-i)-1;k++)
实验名称:实验四 循环结构的程序设计
班级学号姓名
实验地点完成日期成绩
(一)实验目的与要求
1.练习并掌握实现循环结构的三种方法;
2.掌握在设计条件型循环结构时,如何正确地设定循环条件,以及如何控制循环次数;
3.掌握如何正确地控制计数型循环结构的循环次数;
4.练习并掌握选择结构与循环结构的嵌套;
5.练习调试与修改程序。
关键代码:
for(i=1;i<=n;i++)
{
if((i%2)==0)
{
sum=sum+i;
}
else
{
sum=sum-i;
}
}
printf("%d\n",sum);
2.求Sn=a+aa+aaa+…+aa…a的值,其中a是一个数字,n表示a的位数,例如:
2+22+222+2222+22222(此时n=5)pow(10,2) math.h
关键代码:
float a,x0,x1;
scanf("%f",&a);
x0=a/2;
x1=(x0+a/x0)/2;
do
{
x0=x1;
x1=(x0+a/x0)/2;
}
while(fabs(x0-x1)>1.0e-5);
printf("%.5f",x1);
(四)实验结果
A. for循环结构
1.输入一个正整数n,求n以内(包括n)的偶数和减奇数和。
因为要求小数点后有5位小数,所以将a定义为float型,定义a,x0,x1,输入a,使x0等于a的一半,再x1等于x0+a/x0的一半,再用dowhile函数,当前后两次求出的x的差的绝对值小于10-5时,进行x0=x1和x1=(x0+a/x0)/2循环,否则,跳出循环,最后输出x1就是x的平方根。
1.输入一个正整数n,求n以内(包括n)的偶数和减奇数和。
解题思路:
首先,认真解读题目,该题首先是要用到for循环结构,因为是要对n以内(包括n)的所有数字进行运算,所以要循环很多次,具体步骤,再输一个n时,由n控制运算到哪一个数为止,再用for语句实现循环,控制循环次数,i由1变到n,共循环n次,接下来用if语句判断i是偶数还是奇数,若是偶数就加上i,反之就减去i,再执行i++,使i的值加1,循环n次,最后输出sum。
n由键盘输入。
解题思路:
首先,认真解读题目,该题首先是要用到for循环结构和pow函数,先输入a和n,n控制加到几位数为止,再用for语句实现循环,控制循环次数,i由1变到n,共循环n次,接下来用pow函数,得出第i次时的i位数k,再把k加到sum上,再执行i++,使i的值加1,循环n次,最后输出sum。
printf("*");
printf("\n");
}
4.求1!+2!+3!+…+n!的值,n由键盘输入。
解题思路:
首先,认真解读题目,该题首先是要用到两个for循环结构,分别控制n!的输出和n个阶乘相加,输入n,由n控制运算到几的阶乘为止,先用for语句实现循环,控制循环次数,i由1变到n,共循环n次,再在for循环中再嵌套一个for循环,控制第i次循环时输出的数,把第i次循环时输出的数加到sum上,再执行i++,使i的值加1,循环n次,最后输出sum。
没有碰到困难,输入5,输出-3,顺利完成。
2.求Sn=a+aa+aaa+…+aa…a的值,其中a是一个数字,n表示a的位数,例如:
2+22+222+2222+22222(此时n=5)pow(10,2) math.h
n由键盘输入。
用pow函数时,遇到了困难,刚开始不知道怎么用,后来看了老师的做法后,受到了启发,后来自己完成了,输入2,5,输出2+22+222+2222+22222=24690。
输入4和6,输出最大公约数为2,最小公倍数为12。
2.用迭代法求x=√a。求平方根的迭代公式为
Xn+1= (Xn+ )
要求前后两次求出的x的差的绝对值小于10-5。
输入9,输出9的平方根3
(五)收获与体会
学了for循环和do while循环结构的程序设计之后,我对C语言有了更深层次的理解,在做这次作业的过程中,我发现了一些我经常会犯的一些小错误,例如“{}”没加,每句话最后的“;”没加,输入时的“%d,%d”中没加逗号,不能灵活运用学到的知识来解决问题,像A3题,书上有一题类似的题目,可是我不能举一反三,还是和同学讨论之后才做出来了,还有B2题,我不会做,还是去网上搜了一下之后才做出来,根据这些,我总结了一些建议给自己:
关键代码:
for(i=1;i<=n;i++)
{
s=1;
for(j=1;j<=i;j++)
{
s=s*j;
}
sum=sum+s;
}
printf("%d\n",sum);
B.do while,while循环结构
1.输入两个正整数m和n,求其最大公约数和最小公倍数。
解题思路:首先,认真解读题目,该题首先是要用到if语句和while循环结构,输入m和n两个正整数,先用if语句使n<m时,m和n两个正整数所赋的值互换,确保n>m,再p=n*m,再用while循环结构,在m不等于0时,用辗转相除法,算出他们的最大公约数,最后输出最大公约数为n,最小公倍数为p/n。
(二)实验内容
A. for循环结构
1.输入一个正整数n,求n以内(包括n)的偶数和减奇数和。
2.求Sn=a+aa+aaa+…+aa…a的值,其中a是一个数字,n表示a的位数,例如:
2+22+222+2222+22222(此时n=5)pow(10,2) math.h
n由键盘输入。
3.输入边长n(n≤20),用‘*’号打印边长为n的菱形。例如,n=5时,图形如下:
3.输入边长n(n≤20),用‘*’号打印边长为n的菱形。例如,n=5时,图形如下:
输入5,输出一个边长为5的菱形
4.(选做)求1!+2!+3!+…+n!的值,n由键盘输入。
输入5,输出1!+2!+3!+4!+5!=153
B.do while,while循环结构
1.输入两个正整数m和n,求其最大公约数和最小公倍数。
关键代码:
ifwenku.baidu.comn<m)
{
t=n;
n=m;
m=t;
}
p=n*m;
while(m!=0)
{
r=n%m;
n=m;
m=r;
}
printf("他们的最大公约数为:%d\n",n);
printf("他们的最小公倍数为:%d\n",p/n);
2.用迭代法求x=√a。求平方根的迭代公式为
Xn+1= (Xn+ )
要求前后两次求出的x的差的绝对值小于10-5。
(1)要把重点放在解题思路上,通过大量的例题来学习怎样设计算法,构造程序。
(2)掌握基本要求,注意打好基础。
(3)重视实践环节。
(4)要举一反三,题目不是一成不变的。
4.(选做)求1!+2!+3!+…+n!的值,n由键盘输入。
B.do while,while循环结构
1.输入两个正整数m和n,求其最大公约数和最小公倍数。
2.用迭代法求x=√a。求平方根的迭代公式为
Xn+1= (Xn+ )
要求前后两次求出的x的差的绝对值小于10-5。
(三)实验具体步骤
A. for循环结构
关键代码:
for(i=1;i<=n;i++)
{
k=(pow(10,i)-1)/9*a;
sum=sum+k;
}
printf("%d\n",sum);
3.输入边长n(n≤20),用‘*’号打印边长为n的菱形。例如,n=5时,图形如下:
解题思路:
首先,认真解读题目,该题首先是要用到多个for循环结构,输入n,由n控制输出的菱形的边长,先用for语句实现循环,控制循环次数,i由1变到n,共循环n次,控制上半部分的输出,再在for循环中用for语句来控制什么时候输出空格,什么时候输出‘*’号,再执行i++,使i的值加1,循环n次,接下来用同样的办法输出下半部分,循环n次后,输出菱形。
关键代码:
for(i=1;i<=n;i++)
{
for(j=1;j<=n-i;j++)
printf(" ");
for(k=1;k<=2*i-1;k++)
printf("*");
printf("\n");
}
for(i=1;i<=n;i++)
{
for(j=1;j<=i;j++)
printf(" ");
for(k=1;k<=2*(n-i)-1;k++)
实验名称:实验四 循环结构的程序设计
班级学号姓名
实验地点完成日期成绩
(一)实验目的与要求
1.练习并掌握实现循环结构的三种方法;
2.掌握在设计条件型循环结构时,如何正确地设定循环条件,以及如何控制循环次数;
3.掌握如何正确地控制计数型循环结构的循环次数;
4.练习并掌握选择结构与循环结构的嵌套;
5.练习调试与修改程序。
关键代码:
for(i=1;i<=n;i++)
{
if((i%2)==0)
{
sum=sum+i;
}
else
{
sum=sum-i;
}
}
printf("%d\n",sum);
2.求Sn=a+aa+aaa+…+aa…a的值,其中a是一个数字,n表示a的位数,例如:
2+22+222+2222+22222(此时n=5)pow(10,2) math.h
关键代码:
float a,x0,x1;
scanf("%f",&a);
x0=a/2;
x1=(x0+a/x0)/2;
do
{
x0=x1;
x1=(x0+a/x0)/2;
}
while(fabs(x0-x1)>1.0e-5);
printf("%.5f",x1);
(四)实验结果
A. for循环结构
1.输入一个正整数n,求n以内(包括n)的偶数和减奇数和。