实验六 模块化设计.doc

上传人:苏美尔 文档编号:7209905 上传时间:2020-11-06 格式:DOC 页数:21 大小:80.51KB
返回 下载 相关 举报
实验六 模块化设计.doc_第1页
第1页 / 共21页
实验六 模块化设计.doc_第2页
第2页 / 共21页
实验六 模块化设计.doc_第3页
第3页 / 共21页
实验六 模块化设计.doc_第4页
第4页 / 共21页
实验六 模块化设计.doc_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《实验六 模块化设计.doc》由会员分享,可在线阅读,更多相关《实验六 模块化设计.doc(21页珍藏版)》请在三一文库上搜索。

1、实验六 模块化设计实验目的(1) 体验结构化程序设计方法要点,理解模块化设计的思想,划分子模块的原则(2) 掌握is函数的定义和调用实验内容任务一 改错 求PI值error02_02.cpp 打开程序文件error02_02.cpp改正程序中的错误。根据下式求PI值,直到某一项小于10-6PI/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;

2、 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.5lfn, 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

3、 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-910123的逆向是321-910的逆向是-19#include #include int fun(int n);int main(void ) int m1,m2; scanf(%d%

4、d, &m1, &m2); printf(%d的逆向是%dt, m1, fun(m1); printf(%d的逆向是%dn, m2, fun(m2); system(pause); return 0;int fun(int n) int m,y; y = 0; 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 #

5、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的倍数换行*/

6、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 (in) return 0;else return 1;2。实现算法(自然语言描述)1.输入m,n2.调用函数判断a是否为素数若a是素数:输出a,累加已经输出的素数个数若a不是素数:不做处理3.每输出10个素数换行任务四 改写 打印表格ex6_2.cpp改写实验五任务四ex5_3.cpp,保存为ex02_07.cpp(1)增加函数void PrtLine(int bo

7、ttom,int height),已知底长和高,输出一行表格数据。(2)增加函数void PrtBody(void) 打印表格除表头和标题以外的主体内容部分,调用PrtLine实现。(3)在main函数中输出表头和标题,调用PrtBody打印表格主体。源程序清单:ex6_2.cpp#include #include void PrtLine(double bottom,double height);void PrtBody(void);void main()int i,j ;double F,K,h,l,S; printf(木材尺寸 横截面积 惯性力矩 截面系数n); PrtBody();sy

8、stem(pause);void PrtBody(void) int i,j ;double h,l;for(i=1;i=5;i+) l=i*2; for(j=1;j=6;j+) h=j*2; PrtLine(l,h); void PrtLine(double bottom,double height) double F,K,S; S=bottom*height;F=height*height*height*bottom/12;K=bottom*height*height/6; printf(%2.f*%4.f %5.f %8.2f %8.2fn,bottom,height,S,F,K);任务

9、五 编程 给小学生出加法考试题 ex6_3.cpp编写一个程序,给学生出一道加法运算题,然后判断学生输入的答案对错与否,按下列要求以循序渐进的方式编程。程序1 通过输入两个加数给学生出一道加法运算题,如果输入答案正确,则显示“Right!”,否则显示“Not correct! Try again!”,程序结束。(ex6_3_1.cpp)程序2 通过输入两个加数给学生出一道加法运算题,如果输入答案正确,则显示“Right!”,否则显示“Not correct! Try again!”,直到做对为止。(ex6_3_2.cpp)程序3 通过输入两个加数给学生出一道加法运算题,如果输入答案正确,则显示

10、“Right!”,否则提示重做,显示“Not correct! Try again!”,最多给三次机会,如果三次仍未做对,则显示“Not correct! You have tried three times! Test over!”,程序结束。(ex6_3_3.cpp)程序4 连续做10道题,通过计算机随机产生两个110之间的加数给学生出一道加法运算题,如果输入答案正确,则显示“Right!”,否则显示“Not correct!”,不给机会重做,10道题做完后,按每题10分统计总得分,然后打印出总分和做错的题数。(ex6_3_4.cpp)程序5 通过计算机随机产生10道四则运算题,两个操作数

11、为110之间的随机数,运算类型为随机产生的加、减、乘、整除中的任意一种,如果输入答案正确,则显示“Right!”,否则显示“Not correct!”,不给机会重做,10道题做完后,按每题10分统计总得分,然后打印出总分和做错题数。(ex6_3_5.cpp)【思考题】 如果要求将整数之间的四则运算题改为实数之间的四则运算题,那么程序该如何修改呢?请修改程序,并上机测试程序运行结果。1、将int型修改为double型2、在整数的后面再随机的取2个数!源程序清单:(ex6_3_5.cpp)程序一#include#includeint main()int m,n,y;printf(输入m,n:);s

12、canf(%d,%d,&m,&n);printf(m+n=);scanf(%d,&y);if(y=m+n)printf(Right!);elseprintf(Not correct! Try again!);system(pause);return 0;程序二:#include#includevoid correct(int m,int n );int main()int m,n;printf(输?入?m,n:);scanf(%d,%d,&m,&n);correct(m,n);system(pause);return 0;void correct(int m,int n)int y;print

13、f(m+n=);scanf(%d,&y);if(y=m+n)printf(Right!);elseprintf(Not correct! Try again!n);while(y!=m+n)correct(m,n);程序三:#include#includeint main() int m,n,sum,i=0; printf(输入m,n:);scanf(%d,%d,&m,&n);printf(m+n=); scanf(%d,&sum); for(i=0;i=3) printf(Not correct! You have tried three times! Test over!); system

14、(pause); return 0;程序四:#include#include#includevoid main()int m,n,x,i,k;k=0;for(i=1;i=10;i+) srand(time(0);m=rand()%10+1;n=rand()%10+1;printf(%d+%d=,m,n);scanf(%d,&x);if(x=m+n)printf(Righr!n);k=k+1;elseprintf(Not corret!n);printf(总分=%dn总共10题,做对%d题,做错%d题,k*10,k,10-k);system(pause);任务五:#include#include

15、#includevoid add(void);void red(void);void mul(void);void di(void);void main()int i,mm=10;srand(time(NULL);for(i=0;i10;i+) for(j=0;j2;j+)bij=1+10*rand()/(RAND_MAX+1);while(m) srand(time(NULL);t=1+rand()%3+1;switch(t)case 1:add();n+;break;case 2:red();n+;break;case 3:mul();n+;break;case 4:di();n+;bre

16、ak;m=m-1;printf(总分:%dn做对%d题n做错%d题n,10*k,k,10-k);system(pause);void add(void)int j,s,x;s=0; for(j=0;j2;j+) printf(%d+,bnj); printf(b n);printf(请输入答案:);scanf(%d,&x); for(j=0;j2;j+)s+=bnj;if(x=s)printf(正确!n);k=k+1;elseprintf(不正确!n);void red(void) int j,s,x;s=0; for(j=0;j2;j+) printf(%d-,bnj); printf(b

17、n);printf(请输入答案:);scanf(%d,&x); s=bn0-bn1;if(x=s)printf(正确!n);k=k+1;elseprintf(不正确!n);void mul(void) int j,s,x;s=0;for(j=0;j2;j+) printf(%d*,bnj); printf(b n);printf(请输入答案:);scanf(%d,&x); s=bn0*bn1;if(x=s)printf(正确!n);k=k+1;elseprintf(不正确!n);void di(void) int j,x,s;s=0; for(j=0;j2;j+) printf(%d/,bnj

18、); printf(b n);printf(请输入答案(整数):);scanf(%d,&x); s=bn0/bn1;if(x=s)printf(正确!n);k=k+1;elseprintf(不正确!n); 或者:#include#include#includevoid main()int i,m,n,sum,y,x;sum=0;for(i=0;i10;i+)srand(time(0);m=rand()%10+1;n=rand()%10+1;x=rand()%4;if(x=0)printf(%d+%d=,m,n);scanf(%d,&y);if(y=m+n)printf(Right!n);sum

19、=sum+1;elseprintf(Not corret!n);if(x=1)printf(%d-%d=,m,n);scanf(%d,&y);if(y=m-n)printf(Right!n);sum=sum+1;elseprintf(Not corret!n);if(x=2)printf(%d*%d=,m,n);scanf(%d,&y);if(y=m*n)printf(Right!n);sum=sum+1;elseprintf(Not corret!n);if(x=3)printf(%d/%d(整数)=,m,n);scanf(%d,&y);if(y=m/n)printf(Right!n);su

20、m=sum+1;elseprintf(Not corret!n);printf(总分:%dn做对%d题n做错%d题n,10*m,m,10-m);system(pause);任务六 编程 菜单程序(ex6_4.cpp)1.运行程序,了解程序功能(1)在cmd窗口运行程序graph.exe,在菜单程序中分别输入1、2、3、4、5、6,观察程序的运行结果,输入0程序结束。maindisplayMenuprocessChoiceprintStar_1printStar_2printStar_3printStar_4printStar_5printStar_6index(2)下图为graph.exe的程

21、序模块图,打开ex6_4.cpp,文件给出了程序的框架结构,请根据程序的运行过程,确定每一个模块的功能。2.编写函数,完整程序ex02_10.cpp并上交源程序打开ex02_10.cpp,文件中已给出了函数displayMenu和processChoice的代码。请编写6个打印图案的程序,要求输入n,打印n行如graph.exe运行所示的图形,并在main函数中调用函数displayMenu和processChoice完成菜单程序。2.#include #include#include using namespace std;void processChoice(int index);void

22、 displayMenu();void printStar_1();void printStar_2();void printStar_3();void printStar_4();void printStar_5();void printStar_6();void main()int choice;while(1)system(cls); displayMenu(); scanf(%d,&choice); if(!choice)break; elseprocessChoice(choice);void displayMenu()getch();cout*endl;cout* 1.patter

23、n one *endl;cout* 2.pattern two *endl;cout* 3.pattern three *endl;cout* 4.pattern four *endl;cout* 5.pattern five *endl;cout* 6.pattern six *endl;cout* 0.exit *endl;cout*endl;coutplease choice(0,1,2,3,4,5,6):;void processChoice(int index)switch(index) case 1:printStar_1();break; case 2:printStar_2()

24、;break; case 3:printStar_3();break; case 4:printStar_4();break; case 5:printStar_5();break; case 6:printStar_6();break; void printStar_1() int i,j; int number; coutpattern one0;i-) for(j=number;j=i;j-) cout*; coutendl; getch();void printStar_2() int i,j;int number; coutpattern twoendl; printf(number

25、=); scanf(%d,&number); for(i=1;i=number;i+) for(j=i;j=number;j+) cout*; coutendl; getch();void printStar_3() int i,j;int number; coutpattern threeendl; printf(number=); scanf(%d,&number); for( i=1;i=number;i+) for( j=1;ji;j+) printf( ); for( j=1;j=number-i+1;j+) printf(*); printf(n); getch();void pr

26、intStar_4() int i,j;int number,x; coutpattern fourendl; printf(number=); scanf(%d,&number); for(x=1;x0;i-) printf( ); for(j=1;j=x;j+) printf(*); printf(n); getch();void printStar_5() int i,j;int number; coutpattern fiveendl; printf(number=); scanf(%d,&number); for(i=1;i=number;i+) for(j=1;j=i;j+) pr

27、intf(*); for(j=1;j=number-i;j+) printf( ); printf( ); for(j=1;j=number-i+1;j+) printf(*); for(j=1;j=i-1;j+) printf( ); printf( ); for(j=1;j=i-1;j+) printf( ); for(j=1;j=number-i+1;j+) printf(*); printf( ); for(j=1;j=number-i;j+) printf( ); for(j=1;j=i;j+) printf(*); printf(n); getch();void printStar

28、_6() int i,j;int number; coutpattern sixendl; printf(number=); scanf(%d,&number); for(i=1;i=number/2;i+) for(j=1;j=number/2-i;j+) printf( ); for(j=1;j=2*i-1;j+) printf(*); printf(n); for(i=1;inumber/2;i+) for(j=1;j=i;j+) printf( ); for(j=1;j=2*(number/2-i)-1;j+) printf(*); printf(n); getch(); 3.写出函数

29、printStar_1,printStar_2,printStar_3,printStar_4,printStar_5,printStar_6的算法。printStar_1一、 当i大于等于1,小于等于10,step1,循环1、 当j大于等于1,小于等于i,step1,循环输出“*”2、 换行二、 清屏printStar_2一、 当i等于10,大于0,i-,循环1、 当j大于等于1,小于等于i,step1,循环输出“*”2、 换行二、清屏void printStar_3一、 当i大于等于1,小于等于10,step1,循环1、 当j大于等于1,小于i,step1,循环输出空格2、 当j大于等于1

30、,小于等于10-i+1,step1,循环输出“*”3、 换行三、 清屏 printStar_4一、 当i小于等于10,大于0,i,循环;1、 当j大于等于1,小于i,j+,循环;输出空格2、 当j大于等于i,小于等于10,step1,循环;输出“*“3、 换行二、清屏printStar_5一、 当i大于等于1,小于等于10,step1,循环;1、 当j大于等于1,小于等于i,step1,循环;输出“*“2、 当j大于i,小于等于10,step1,循环;输出空格3、 输出两个空格4、 当j大于等于1,小于等于10-i+1,step1,循环输出“*”5、 当j大于等于i,小于等于10,step1,

31、循环输出空格6、 输出两个空格7、 当j大于等于1,小于i,step1,循环输出空格8、 当j大于等于i,小于等于10,step1,循环输出“*”9、 输出两个空格10、 当j大于等于1,小于等于10-i,step1,循环输出空格11、 当j大于等于i,小于等于10,step1,循环输出“*”12、 换行二、清屏void printStar_6() 一、当i大于等于1,小于等于5,step1,循环1、 当j大于等于1,小于等于5-i,step1,循环输出空格2、 当j大于等于1,小于等于2*i-1,step1,循环输出“*”3、 换行二、当i大于等于1, 小于5,step1,循环 1、当j大于

32、等于1,小于等于i,step1,循环 输出空格2、当j大于等于2,小于等于2*(5-i)1;step1,循环输出“*”4、 换行三、清屏任务七 补充 (选做)编程 计算折线映射面积ex6_5.cpp一对实数可以表示平面上的一个点的坐标,一系列的实数对,当这些数对里的第一个数为递增时,把它们表示的平面点连接起来,可以得到一条与x轴同方向的折线。由一条这种折线、该折线两端引向x轴的垂线,以及x轴本身,能够形成一个封闭区域的边界。请写一个程序,它接受一系列由标准输入得到的数对,最后计算这些数对所确定的区域的面积。规定用一对零(0.0,0.0)表示输入的结束。可先假定输入的数对中x的值总是递增的,y值均不为负。进一步说,(1)输入的数对中x的值不是递增的,也可视为输入结束。 (2)如果y值可以为负,如何修改程序。G创建程序ex02_11.cpp,设计程序的合理模块结构,编写函数,完成程序并上交源程序问题分析:一、 输入n组数对(分别输入x、y)1、 如果有一组数对为(0,0)(即x=0,y=0)则结束输入;2、 如果x为递减的则结束输入二、将该区域分别化为规则的四边形求解面积,将面积汇总三、输出面积之和程序结构模块图:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1