模块化程序设计实验

合集下载

实验七用函数实现模块化程序设计

实验七用函数实现模块化程序设计

实验七用函数实现模块化程序设计河南工业大学C语言实验报告专业班级:学号:姓名:指导老师:朱红莉评分:实验题目:用函数实现模块化程序设计实验目的:熟练掌握函数的定义、调用、声明实验内容:P218-219 习题1、2、4实验步骤:(具体程序及运行结果)1.写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。

两个整数由键盘输入。

#includeint main(){int hcf(int,int);int lcd(int,int,int);int u,v,h,l;scanf("%d,%d",&u,&v);h=hcf(u,v);printf("H.C.F=%d\n",h);l=lcd(u,v,h);printf("L.C.D=%d\n",l);return 0;}int hcf(int u,int v){int t,r;if(v>u){t=u,u=v;v=t;}while((r=u%v)!=0){u=v;v=r;}return (v);}int lcd(int u,int v,int h){return (u*v/h);}执行结果:2.求方程ax*x+b*x+c=0的根,用3个函数分别求当:b*b-4*a*c大于0、等于0和小鱼0时的根并输出结果。

从主函数输出a,b,c的值。

#include#includefloat x1,x2,disc,p,q;int main(){void greater_than_zero(float,float);void equal_to_zero(float,float);void smaller_than_zero(float,float);float a,b,c;printf("input a,b,c:");scanf("%f,%f,%f",&a,&b,&c);printf("equation:%5.2f*x*x+%5.2f*x+%5.2f=0\n",a,b,c);disc=b*b-4*a*c;printf("root:\n");if(disc>0){greater_than_zero(a,b);printf("x1=%f\t\tx2=%f\n",x1,x2);}else if(disc==0){equal_to_zero(a,b);printf("x1=%f\t\tx2=%f\n",x1,x2);}else{smaller_than_zero(a,b);printf("x1=%f+%fi\tx2=%f-%fi\n",p,q,p,q);}return 0;}void great_than_zero(float a,float b){x1=(-b+sqrt(disc))/(2*a);x2=((-b)-sqrt(disc))/(2*a);}void equal_to_zero(float a,float b){x1=x2=(-b)/(2*a);}void smaller_than_zero(float a,float b){p=-b/(2*a);q=sqrt(-disc)/(2*a);}执行结果:4.写一个函数,是给定的一个3*3的二维整型数组转置,即行列互换。

实验五 模块化的程序设计

实验五 模块化的程序设计

实验五模块化的程序设计实验目的(1)理解自顶向下,逐步细化的模块化设计思想划分子模块;知道模块化程序设计方法。

(2)熟悉函数的定义、函数的声明和函数的调用,理解函数调用的实现过程。

(3)理解函数调用时的数据传送机制,通过参数将主调函数的数据传递到被调函数,运用return语句将被调函数的处理结果返回主调函数。

(4)通过设置断点和单步执行,观察子函数的执行路径,和子函数中变量的值的变化。

实验范例引导任务任务1会变化的三角形任务2 计算生日相差几天任务1会变化的三角形任务描述在屏幕上打印一个三角形,如图5-1所示,运行程序时输入三角形的级别n,可以打印不同大小的三角形。

图5-1 输出可变的三角形任务解决任务解决路径:图5-2 任务1 解决路径第一步:学习无参无返回值函数的定义、声明和调用;第二步:了解函数参数的作用,学习使用带参的函数构建多层模块程序的构建; 第三步:学习带参无返回值函数的设计;1.编写打印三角形的函数(1)问题分析要在屏幕上打印一个三角形,可以直接在main 函数中使用printf 语句完成,如下程序代码所示:在本任务中,要求调整程序的结构,写一个打印三角形的无参无返回值函数,然后在main 函数中调用它实现打印三角形。

程序员编写的函数称为用户自定义函数,相对于系统函数而言,不是系统已写好的代码,需要程序员自己定义函数和编写实现函数的程序代码。

无参无返回值函数通常执行一个具体的操作,无计算结果。

(2)函数的应用使用用户自定义函数分三步:函数定义,函数声明和函数调用。

①无参无返回值函数的定义无参无返回值函数定义的一般形式为:一个打印三角形的函数的定义可以为:#include <stdio.h> int main() {printf("打印一个三角形\n ");printf(" *\n");printf(" ***\n");printf("*****\n");printf("打印结束\n"); return 0; }void 函数名(void ) { ...... }void triangle(void){printf(" *\n");printf(" ***\n");printf("*****\n");}triangle是函数名,函数名应能体现函数的功能,以增强程序的可读性,这个函数的功能是打印一个固定的三角形。

实验三 模块化程序设计

实验三 模块化程序设计

实验三模块化程序设计【实验目的】1.理解和掌握多模块的程序设计与调试的方法;2.掌握函数的定义和调用的方法;3.学会使用递归方法进行程序设计。

【实验内容】1.编写一个函数,判断一个数是不是素数。

在主函数中输入一个整数,输出是否是素数的信息。

实验步骤与要求:(1) 编写一个函数isprime(n),如果n是素数返回1,否则返回0。

(2) 编写一个主函数,输入一个整数,调用isprime( )函数,判断此整数是否为素数,并输出结果。

函数isprime(n)算法说明:(1) k = sqrt(n)(2) i = 2(3) 当i <= k时,执行(3.1)(3.2),否则转(4)(3.1) if ( m % i == 0 ) return 0(3.2) i=i+1(4) return 1#include<stdio.h>#include<math.h>int isprime(int n){int i;double k;i=2;k = sqrt(n);while(i<=k){if(n%i==0) return 0;i++;}return 1;}main(){int a;int t=1;printf("请输入一个整数\n");scanf("%d",&a);t=isprime(a);printf("%d",a);if(t==0) printf("不是素数\n");else printf("不是素数\n");}2.编写函数Celsius返回华氏温度对应的摄氏温度,函数Fahrenheit返回摄氏温度对应的华氏温度。

用这些函数编写程序,打印从0到100的所有摄氏温度及对应的华氏温度,32到212度的所有华氏温度及对应的摄氏温度。

实验步骤与要求:(1)用整齐的表格形式输出。

实验二模块化程序设计

实验二模块化程序设计

实验二模块化程序设计模块化程序设计实验目的(1) 体验结构化程序设计方法要点,理解模块化设计的思想,划分子模块的原则(2) 掌握is函数的定义和调用实验内容任务一输出m-n之间所有的素数(ex02_06.cpp)改写(sample02_07.cpp )保存为ex02_06.cpp:输出m-n 之间所有的素数,调用int isprime(int n)函数,每行输出10个素数。

sample02_07.cpp/*求100以内的全部素数,每行输出10个。

素数就是只能被1和自身整除的正整数,1不是素数,2是素数。

*/ /* 使用嵌套循环求100以内的全部素数*/ #include #include /* 调用求平方根函数,需要包含数学库*/ int main(void) {int count, i, m, n;count = 0; /* count记录素数的个数,用于控制输出格式*/ for(m = 2; m = 100; m++){ n = sqrt(m);for(i = 2; i i++)if(m % i == 0) break; if(i n){ /* 如果m是素数*/ printf(\ /* 输出m */count++; /* 累加已经输出的素数个数*/ if(count % 10 == 0) /* 如果count是10的倍数,换行*/ printf(\ } }printf(\return 0; }学号:姓名:专业班级:()()班1.源程序清单:ex02_06.cpp 3。

实现算法(自然语言描述)2.运行结果学号:姓名:专业班级:(()班)任务二打印表格ex02_07.cpp改写ex02_03.cpp,保存为ex02_07.cpp(1)增加函数void PrtLine(int bottom,int height),已知底长和高,输出一行表格数据。

(2)增加函数void PrtBody(void) 打印表格除表头和标题以外的主体内容部分,调用PrtLine实现。

c语言用函数实现模块化程序设计实验报告

c语言用函数实现模块化程序设计实验报告

c语言用函数实现模块化程序设计实验报告
1设计思想
1)、设定一个一维数组,可先按员工序号设定每位员工的工资
2)、利用While语句和Print语句完成用户菜单的设计
功能为:第1项设为员工编号和工资数据
第2项设为修改员工工资数据
第3项设为查询员工工资数据
第4项设为结束系统
3)、当用户选择1、2项时,需输入员工编号,所以需要设计编号校正功能,如果出错可输出“The error employ number”
4)、当选择2时,进行工资数据的修改,并将新数据存回该员工的工资数组中
5)、利用for循环中判断语句,将用户工资数与数组中的工资数进行比较,如相同则输出,将计数器加1,如此下去,直到把整个数组遍历一遍
6)、判断计数器是否为0, 是0表示找不到相符的工资,如果不为0,则输出共查出几比相符的工资
以上当然里面也涉及了“函数的模块化”理念,可以避免但需要重复打印头文件时重复编写打印信头的语句。

像这样的程序是多见的,这样不但降低了程序还发效率,而且耗时浪费资源“共用体”的使用简化了程序的“复杂”性,正如(4)中,学号与姓名同时表示一个人,但在函数使用了“共用体”,从而程序的简单可以便于纠错,查找问
题,避免了代码的重复,这样就给编译时带来了一定的难度与“量”的繁杂。

一般不采取这样的做法,力求“简单、明了、清晰”。

C语言函数模块程序设计实验报告

C语言函数模块程序设计实验报告

C语言函数模块程序设计实验报告实验内容:【实验方案设计】(题目及程序清单)1、课本6.3(1)题目:已有变量定义double a=5.0;int n=5;和函数调用语句mypower(a,n);用以求a的n次方。

编写double mypower(double x,int y)函数。

程序:#include <stdio.h>int mypower(double a,int n);int main(){double a=5;int n=5,m;m=mypower(a,n);printf("a的n次方的值为%d/n",m);return 0;}int mypower(double a,int n){int i,m=1;for(i=1;i<=n;i++)m=a*m;return m;}运行结果截图:2、课本6.3(2)题目:写一个函数,求以下数列前N项和。

2/1,3/2,5/3,8/5,13/8,21/13,…程序:#include <stdio.h>float sum(int k);int main(){int n;float m;printf("请输入N的值:\n");scanf("%d",&n);m=sum(n);printf("这个数列的前n项和为%.2f/n",m);return 0;}float sum(int k){int i;float s=0,a,m=1,n=1,p;for(i=1;i<=k;i++){p=n;n=m;m=m+p;a=m/n;s=s+a;}return s;}运行结果截图:3、课本6.3(3)题目:写一个函数,Sn=a+aa+aaa+…+aa…a求多项式的前n项和,其中a是个位数。

例如求2+22+222+2222+22222的和(此时n=5)程序:int main(){float m=1,a=1,sum=1;while(a<10000){a=a*m;m=m+1;sum=sum+1/a;}printf("e的值为%f\n",sum);return 0;}运行结果截图:4、课本6.3(4)题目:将10到20之间的全部偶数分解为两个素数之和程序:#include <stdio.h>#include <math.h>void fj(int n);int ss(int m);int main(){int n;for(n=10;n<=20;n=n+2)fj(n);return 0;}void fj(int n){int i,m,f,w;for(i=1;i<=n/2;i++){m=n-i;f=ss(m);w=ss(i);if(f&&w) printf("%d=%d+%d\n",n,m,i);}}int ss(int m){int a,k;k=sqrt(m);for(a=2;a<=k;a++)if(m%a==0) return 0;return 1;}运行结果截图:5、课本6.3(9)题目:输入两个整数,求他们相除的余数。

汇编语言实验7-模块化程序设计

汇编语言实验7-模块化程序设计

汇编语言实验报告Assembly Language Programming Lab Reports______________________________________________________________________________班级: _________ 姓名:___________ 学号:___________ 实验日期:_____________学院: _____计算机与通信工程学院____ 专业:_______计算机科学与技术___________实验顺序:___实验七____ 实验名称:____________模块化程序设计________________ 实验分数:_______ 考评日期:________ 指导教师:______________________________________________________________________________一.实验目的1、掌握宏定义的相关内容。

(1)伪指令: MACRO,ENDM。

(2)掌握宏定义时的哑元,变元,&分割符的使用。

变元可以是操作数,操作码,操作码的一部分和&联合使用,存储单元,字符串。

(3)掌握宏调用时的实元和宏的展开。

2.掌握宏运算(1)&替换运算符(2)<>传递运算符(3)!转义运算符号(4)%表达式运算符(5);;宏注释符3、其它宏功能(1)宏标号LOCAL(2)宏删除purge(3)宏嵌套,宏展开中的数字1代表插入的程序是宏定义实体中的。

宏嵌套在展开时里层被嵌套调用的宏会显示嵌套调用的层次,待验证。

(4)宏库的建立和调用______________________________________________________________________________二.实验环境操作系统:windows xp编译程序:masm 5.0______________________________________________________________________________三.实验原理宏库的建立和调用______________________________________________________________________________四.实验步骤及结果分析1、宏库的建立及调用(1)宏库:;8-2.mac 宏库;1input macro ; 宏input,键盘输入一个字符mov ah,01Hint 21hendm;2output macro opr1 ; 宏output,显示一个字符mov dl,opr1mov ah,02hint 21hendm;3retsys macro ; 宏retsys,结束、返回DOSmov ah,4chint 21hendm;4key_str macro opr1 ; 宏key_str,键盘输入一串字符mov dx,offset opr1mov ah,10int 21hendm;5display macro opr1 ; 宏display,显示一串字符lea dx,opr1mov ah,9int 21hendm;6divis macro x ;转换显示为十进制mov cx,x ;x=10000,1000,100,10,1div cx ;ax除以cx,商在ax,余数在dxmov bx,dx ;保存余数mov si,axmov dl,dectab[si] ;查表显示mov ah,2 ;显示ax中部分商int 21hmov ax,bxmov dx,0endm(2)主程序:;8-6.asm 模块化程序。

创意之星模块化机器人实验程序

创意之星模块化机器人实验程序

第一次实验:MultiFLEX控制卡编程实验蜂鸣器实验#include <avr/io.h>#define BEEP_ON PORTG |= _BV(PG3) #define BEEP_OFF PORTG &= ~_BV(PG3) int main(void){inti,j;PORTG = 0;DDRG = 0xff;while(1){for(i=0;i<0xFF;i++){for(j=0;j<0xFF;j++);}BEEP_ON;for(i=0;i<0xFF;i++){for(j=0;j<0xFF;j++);}BEEP_OFF;}}IO口控制实验#include "Public.h"#include "Usertask.h"void user_task(void){uint8 io_in;uint8 io_out;uint8 temp8;uint16 temp16;gpio_mode_set(0x00FF);write_gpio(0xFF00);while(1){temp16 = read_gpio();io_in = (uint8)(temp16>>8);temp8=(io_in&0x80);if(temp8==0){io_out=0x01;while(io_out){write_gpio(~((uint16)io_out));delay(5);//延时5×20MS=0.1sio_out<<=1;write_gpio(~((uint16)io_out));delay(5);}}else write_gpio(0xFF00);}}第二次实验:多自由度串联式机械手#include "Public.h"#include "Usertask.h"void user_task(void){uint8 array_rc[23]={0};//舵机控制数组长度为24,可控制12路舵机,舵机运动函数要求array_rc[偶数]为舵机目标角度值,array_rc[奇数]为舵机运动速度值array_rc[0]=90; //舵机1,中位为0度(对应数值90),目标角度+20度。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

int iScoreHigh[SubCount]; //以计算机、数学、英语、语文、体育的顺序存放各科最高分 int iScoreLow[SubCount]; //以计算机、数学、英语、语文、体育的顺序存放各科最低分 int iScoreAve[SubCount]; //以计算机、数学、英语、语文、体育的顺序存放各科平均分 int iHighNo[SubCount]; //以计算机、数学、英语、语文、体育的顺序存放各科最高分学生学号 int iFineCount[SubCount]; //以计算机、数学、英语、语文、体育的顺序存放各科达优秀人数 int iFailCount[SubCount]; //以计算机、数学、英语、语文、体育的顺序存放各科不及格人数 /************************************************** 函数功能:显示菜单并返回选择的菜单项编号 参数说明:无 返回值: 菜单项编号 ****************************************************/ int MenuSelect(void) { int option; int input;
《C 语言程序设计》实验指导书
实验 7 模块化程序设计
一、实验目的
【知识点】
1. 掌握全局变量、 局部变量的作用域和存储类别的区别, 以及它们在程序中的使用方法。 2. 掌握函数间数据传递的 3 种方式:传值、利用返回值、利用全局变量。 【技能】 1. 理解模块化程序设计的思想,掌握模块划分的原则; 2. 利用全局变量和函数实现模块化程序设计; 3. 结合具体的编程环境,掌握多文件编程的方法,为编制实用程序打下基础。
程序编写要求如下: (1)分析程序功能设计要求,按照模块化程序设计的方法,划分各功能模块; 提示 1:程序可划分为录入数据、统计处理、排序处理、显示结果、菜单处理等 模块,其中统计处理还可以细化为统计分数(统计最高分、统计最低分、统计平均分) 和统计人数(统计优秀人数、统计不及格人数) 。 (2)分析程序中所涉及的各种数据,并选择适当的数据类型来表示; 提示 2:因最后排序结果以表格形式,为方便统计结果的排序操作,可将各科最 高分、最低分、平均成绩、最高分学生学号、优秀人数、不及格人数的统计结果分别保 存在大小为 5(5 门课程)的数组中。在按平均分排序处理时,应同时对其它统计结果作 相应处理; 提示 3:科目名称为字符串常量,可用字符指针指示。因题中涉及 5 门课程,应 有 5 个字符指针指示,所以可用字符指针数组表示。 char *cSubject[5]={“计算机”, “数学”, “英语”, “语文”, “体育”}; 提示 4:程序涉及多文件操作,用头文件进行数据声明。 (3)分析各个模块之间的接口,完成函数原型的设计,说明函数完成的功能、所需 参数和返回值。比如: int Menu(void); //显示菜单并返回选择的菜单编号 提示 5:对公共数据的处理可使用全局变量实现,也可用局部变量实现。若使用 全局变量,无需函数参数,函数调用的效率高,但数据安全性差;若使用局部变量,数 据安全性好,但函数设计较复杂,公共数据必须通过函数参数进行传递 , 函数参数可以 是数组或指针。 (4)每个模块用一个单独的 c 文件实现,以多文件方式实现整个设计,每个文件及 函数的参考设计如下表三所示; (5)用菜单的形式组织各功能模块。
二、实验要求
1. 复习函数定义和调用方法; 2. 复习 switch 语句的实现菜单程序用法; 3. 综合编程题,先分别编写头文件和各功能模块,再通过菜单程序调用各功能模块。
三、实验内容
1.函数定义和调用: 完善下面程序,其功能是输入一个 ASCII 码值,输出从该 ASCII 码开始的连续 10 个 字符。在横线处填写正确的语句或表达式,使程序完整。上机调试程序,使程序的运行 结果与给出的结果一致。 #include<stdio.h> void put (____ n) { int i,a; for(i=1;______________;i++) { a=n+i-1; putchar(______________); } } void seven_prog1() { int ascii; /* 变量 ascii 存放输入的 ASCII 码值 */ printf(“输入 ASCII 码值:”); ____________________; put(___________); } 【运行结果一】 输入 ASCII 码值:97↙ abcdefghij 【运行结果二】 输入 ASCII 码值:33↙ !”#$%&’()*
extern int iScoreHigh[]; //以计算机、数学、英语、语文、体育的顺序存放各科最高分 extern int iScoreLow[]; //以计算机、数学、英语、语文、体育的顺序存放各科最低分 extern int iScoreAve[]; //以计算机、数学、英语、语文、体育的顺序存放各科平均分 extern int iHighNo[]; //以计算机、数学、英语、语文、体育的顺序存放各科最高分学生学号 extern int iFineCount[];
sort.c display.c student.h
SortByAve Display 数据结构声明 函数声明
四、参考程序
下面给出的程序,实际上是一个程序框架,可以了解整个程序的结构。请同学们自己 完成部分函数的具体实现和进一步思考。 1.student.h 文件 #include <stdio.h> #include <stdlib.h> #include <conio.h> #define StuCount 5 #define SubCount 5 extern char *cSubject[]; //指示课程名称 extern int iStuNo[]; extern int Computer[]; extern int Math[]; extern int English[]; extern int Chinese[]; extern int Physics[]; //全班学号 //全班计算机课程成绩 //全班数学课程成绩 //全班英语课程成绩 //全班语文课程成绩 //全班体育课程成绩
第 4 页 共 14 页
《C 语言程序设计》实验指导书
源程序 student.c input.c static.c
表三 文件及函数组成 函数名及其它成份 功能描述 main 程序初始化,总控函数 MenuHandle 菜单处理 MenuSelect 显示和选择菜单 InputData 输入原始数据 StaticScore 统计各科成绩信息 GetHigh 统计最高分及对应学生学号 GetLow 统计最低分 GetAve 统计平均分 StaticPerson 统计各科优秀和不及格人数 以平均分为关键字对统计结果进行排序 显示学生成绩统计表 公共数据 引用库函数和函数
第 5 页 共 14 页
《C 语言程序设计》实验指导书
//以计算机、数学、英语、语文、体育的顺序存放各科达优秀人数 extern int iFailCount[]; //以计算机、数学、英语、语文、体育的顺序存放各科不及格人数 int MenuSelect(); //显示和返回选择的菜单项编号 int MenuHandle(int); //菜单处理 int InputData(); //输入原始数据,成功返回 1,否则返回 0 void StaticScore(); //统计最高分、最低分、平均分、最高分学号 int GetHigh(int *Score,int *Highest); //统计最高分及最高分学号 int GetLow(int *Score); //统计最低分 int GetAve(int *Score); //统计平均分 void StaticPerson(); //统计优秀和不及格人数 void SortByAve(); //以平均分为关键字对统计结果进行排序 void Display(); //显示学生成绩统计表 2.student.c 文件 #include "student.h" int iStuNo[StuCount]; int iComputer[StuCount]; int iMath[StuCount]; int iEnglish[StuCount]; int iChinese[StuCount]; int iPhysics[StuCount]; //全班学号 //全班计算机课程成绩 //全班数学课程成绩 //全班英语课程成绩 //全班语文课程成绩 //全班体育课程成绩
第 2 页 共 14 页
《C 语言程序设计》实验指导书
3. 多文件操作: 将下面的代码保存为源程序 file2.c,并添加到 seven 项目文件中。 static int k=10; extern void fan(); void seven_prog3() { fan(6); k=3; fan(3); } 编辑 file1.c,如下: void main() { void seven_prog3(); printf("%4c%4c%4c%4c ", 'k','m','n','l'); seven_prog2(); seven_prog3(); } seven 项目完成结果如下图:
在每个函数的入口处设置断点,并用单步运行的方式运行程序,使用 watch 窗口观察程 序运行过程中观察变量 k 值的变化,进一步理解变量作用域的概念。

请你小结动态局部变量、全局变量、静态全局变量、静态局部变量的作用域和生命 周期。
第 3 页 共 14 页
《C 语言程序设计》实验指导书
4. 综合编程 使用数组编写一个程序完成班级学生成绩统计的工作。 程序功能情况如下: (1) 学生人数为 30 人,成绩包括计算机、数学、英语、语文、体育五门课程的成 绩(用 int 类型表示) ; (2) 录入学生学号及各门课程的成绩; (3) 统计各门课程的最高分、最低分和平均成绩; (4) 统计各门课程达到优秀(>=90)和不及格的人数; (5) 对五门课程以平均成绩从高到低的顺序排序; (6) 按平均成绩从高到低的顺序,以表格的形式输出统计结果。 表二 学生成绩统计表 科 目 最高分 最低分 平均分 优秀人数 不及格人数 最高分学生学号
相关文档
最新文档