实验七答案1.docx
- 文档编号:12872919
- 上传时间:2023-06-08
- 格式:DOCX
- 页数:9
- 大小:16.32KB
实验七答案1.docx
《实验七答案1.docx》由会员分享,可在线阅读,更多相关《实验七答案1.docx(9页珍藏版)》请在冰点文库上搜索。
实验七答案1
实验七答案
实验1:
打印边长为m的平行正方型
要求:
从键盘输入m值,输出m行每行m个*号。
例:
输入m=4,输出的图形如下:
****
****
****
****
#include“stdio.h”
Main()
{intk,i,m;
Scanf(“%d”,&m);
for(k=1;k<=m;k++)
{
for(i=1;i<=m-k;i++)
printf(““);
for(i=1;i<=m;i++)
printf(“*”);
printf(“\n”);
}
}
实验2:
从键盘输入m值,输出m行用*号组成等腰三角形。
例:
输入m=4,输出的图形如下:
*
***
*****
*******
#include“stdio.h”
Main()
{intk,i,m;
Scanf(“%d”,&m);
for(k=1;k<=m;k++)
{
for(i=1;i<=m-k;i++)
printf(““);
for(i=1;i<=2*k-1;i++)
printf(“*”);
printf(“\n”);
}
}
实验三、求s=n!
;n从键盘输入。
(n<=10)
注意:
s用long说明。
#include“stdio.h”
Main()
{intk,n;
Longs=1;
Scanf(“%d”,&n);
For(k=1;k<=n;k++)
s=s*k;
printf(“%ld”,s);
}
三、求s=n的10次方,n从键盘输入。
注意:
s用long说明。
四、从键盘输入一个整数n,判断是素数。
换行。
一、利用下面公式计算圆周率PI。
计算到1/k<=1E-5.
PI/4=1-1/3+1/5-1/7+1/9……1/K.
分析:
先计算数列:
SUM=1+1/3+1/5+1/7+1/9……1/K.
程序如下:
main()
{intk;
Floatsum=0;
k=1;
while(1./k>1e-5)
{sum=sum+1./k;
K=k+2;}
printf("\nsum=%f",sum);
}
}
本程序主要解决第一项符号位的问题.设t=1开始为正号.
则每一项为:
t*1./k,t=-1*t.符号改变.因此,本程序为:
main()
{intk,t,;
floatpi=0;
k=1;t=1;
while(1./k>1e-5)
{pi=pi+t*1./k;
t=-1*t;符号改变
k=k+2;}
pi=pi*4;
printf("\npi=%f",pi);
}
}
二、打印出1—100之间被3和5整除的数字。
main()
{inti;
for(i=1;i<=100;i++)
if(i%3==0&&i%5==0)
printf("\ni=%d",i);
}
三、求出1—100之间被5整除的数之和。
main()
{inti,sum=0;
for(i=1;i<=100;i++)
if(i%5==0)
sum=sum+i;
printf("\nsum=%d",sum);
}
四、求出1—100之间被5整除的数之和的平均数。
分析:
要计算出满足被5整除的个数cnt.方法是:
if(i%5==0)cnt++.
main()
{inti,sum=0,cnt=0;
for(i=1;i<=100;i++)
if(i%5==0)
{sum=sum+i;cnt++;}
sum=sum/cnt;
printf("\nsum=%d",sum);
}
五、从键盘输入一个整数n,判断是否素数。
1、如何判断一个整数m是素数?
用2,3…m/2之间的整数除m,如果都不能整除,则m素数。
l例:
11,用2,3…5来除。
因为:
11%2!
=0,11%3!
=0…
11%5!
=0.
所以11是素数。
算法:
我们用ch作为记号,如果
m%i!
=0,ch='y',否则ch='n'.
例:
25是否素数?
因为:
25%2!
=0ch='y'
25%3!
=0y
25%4!
=0y
25%5==0ch='n'
因为ch='n',说明有一个i,使m%i==0.故m不是素数.
例:
17是否素数?
因为:
17%2!
=0ch='y'
17%3!
=0y
17%4!
=0y
17%5!
=0y
17%6!
=0y
17%7!
=0y
17%8!
=0y
15%9!
=0y
由于所有的ch='y',说明所有的m%i!
=0,(2<=i<=m/2).故m是素数.
程序如下:
Main()
{
IntI,m;
Intch;
Scanf(“%d”,&m);
For(i=2;i<=m/2;i++)
If(m%i==0)
{ch=0;break;}
elsech=1;
If(ch==1)
printf(“\n%dyes”,m);
Else
printf(“\n%dno”,m);
}
我们用1代替代y,0代替n,上面程序可以改成:
Main()
{
IntI,m,y;
Y=1;
Scanf(“%d”,&m);
For(i=2;i<=m/2;i++)
If(m%i==0){y=0;break;}
If(y==1)
printf(“\n%dyes”,m);
Else
printf(“\n%dno”,m);
}
方法2,用continue语句
Main()
{
Intm,k;
Scanf(“%d”,&m);
For(k=2;k<=m/2;k++)
{If(m%k!
=0)
Continue;如果不等0,下次循环.
Else
Printf(“isanot素数”);
}
If(k>m/2)
Printf(“isa素数”);
}
方法3,一个优秀的方法.请同学思考分析
Main()
{
Intm,k,s;
Scanf(“%d”,&m);
For(k=2;k<=m/2;k++)
{s=m%k;
If(s==0)
{Printf(“isanot素数”);
break;}
}
If(s!
=0)
Printf(“isa素数”);
}
实验5、输出100—999中的“水仙花数”,水仙花数指的是3位数的各位数字的立方等于这个数的本身。
例如:
153=1*1*1+5*5*5+3*3*3。
分析:
设k为要找的整数.(100 将k的个位、十位、百位分离为a,b,c.则有: k=a*a*a+b*b*b+c*c*c. 程序如下: main() {intk,a,b,c; for(k=100;k<=999;k++) {a=k%10;b=k%100/10; c=k/100; if(k==a*a*a+b*b*b+c*c*c) printf("\nk=%d",k); } 实例分析6程序填空。 求出100以内的整数中最大的可被13整除的数是哪一个数。 分析: 由于是最大的可被13整除的数。 因此我们也是从最大数100开始找。 找到第一个就跳出来。 #include"stdio.h" voidmain() { inti; for(i=100;i>=1;i--){if(i%13==0)break;} printf("%d\n",i); } 将填空好的完整程序以文件名保存为aliquot.c保存在你刚才新建好的文件夹里。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 答案