实验六模块化设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验六模块化设计
实验目的
(1)体验结构化程序设计方法要点,理解模块化设计的思想,划分子模块的原则
(2)掌握is函数的定义和调用
实验内容
任务一改错求PI值error02_02.cpp
打开程序文件error02_02.cpp改正程序中的错误。根据下式求PI值,直到某一项小于10-6 PI/2=1+1!/3 +2!/(3*5)+…… +n!/(3*5*…*(2n-1))
正确运行结果
PI=3.14159
#include
#include
double fact(int n);
double multi(int n);
int main(void)
{
int i;
double sum, item, eps;
eps =1e-6;
sum = 1.0;
item = 1.0;
for(i = 1;item>=1e-6;i++)
{
item = fact(i) / multi(2*i + 1);
sum = sum + item;
} /* 调试时设置断点*/
printf("PI=%0.5lf\n", sum * 2);
system("pause");
return 0;
}
double fact(int n)
{
int i;
double res;
res = 1;
for(i = 1; i <= n; i++)
{
res = res * i;
}
return res; /* 调试时设置断点*/
}
double multi(int n)
{
int i;
double res;
res = 1;
for(i = 3; i <= n; i = i+2)
{
res = res * i;
}
return res; /* 调试时设置断点*/
}
任务二改错输出逆序数error02_03.cpp
打开程序文件error02_03.cpp改正程序中的错误。输入2个整数,分别将其逆向输出,要求定义并调用函数fun(n),它的功能是返回n的逆向值
正确运行结果
123 -910
123的逆向是321
-910的逆向是-19
#include
#include
int fun(int n);
int main(void )
{
int m1,m2;
scanf("%d%d", &m1, &m2);
printf("%d的逆向是%d\t", m1, fun(m1));
printf("%d的逆向是%d\n", m2, fun(m2));
system("pause");
return 0;
}
int fun(int n)
{
int m,y;
y = 0;
if(n<0)
{
m =-n;
}
else
{
m=n;
}
while(m!=0)
{
y = y* 10 + m%10;
m =(m-m%10)/10;
}
if(n>=0)
return y;
else
return -y;
}
任务三改写输出m-n之间所有的素数(ex6_1.cpp)
改写(sample02_07.cpp )保存为ex6_1.cpp:输出m-n之间所有的素数,调用int isprime(int n)函数,每行输出10个素数。
1.源程序清单:ex6_1.cpp
#include
#include
#include
int isprime(int n);
int main(void)
{
int count, a, b,m,n;
printf("输入m=");
scanf("%d",&m);
printf("输入n=");
scanf("%d",&n);
count = 0; /* count记录素数的个数,用于控制输出格式*/
for(a =m; a <=n; a++)
{
b=isprime(a) ;
if(b==1) /* 如果是素数*/
{
printf("%6d", a); /* 输出*/
count++; /* 累加已经输出的素数个数*/
if(count % 10 == 0) /* 如果是10的倍数换行*/
printf("\n");
}
}
printf("\n");
system("pause");
return 0;
}
int isprime(int n)
{
int i;
for(i =2; i <= n-1; i++)
if(n % i == 0) break;
if (i else {return 1;} }