程序设计
一 设计目的
1.掌握函数的定义和调用方法。
2.掌握函数的类型和返回值、形参与实参及参数值的传递。
3.掌握二维数组的定义及设定初值的方法,学会熟练运用二维数组
4. 进一步加深对C++语言的理解和掌握,加深和巩固所学的理论知识。
二设计要求
5个学生,4门课,要求主函数分别调用函数。实现:
1, 找出成绩最高的学生的序号和课程。
2, 找出不及格课程的学生序号及各门课的全部成绩。
3, 求全部学生各门课程的平均分数,并输出。
三总体设计
2,系统功能分析
(1)题目给出“5个学生,4门课”,所以,首先应定义一个二维数组来表示,即定义float num[5][4]。
(2)要求找出成绩最高的学生的序号和课程。
定义函数float Max(float num[5][4]),找出成绩最高的学生的序号和课程,使用循环语句完成该功能。程序如下:
int h,l,Max=num[0][0];
int k,s;
for(k=0;k<5;k++)
for(s=0;s<4;s++)
if(Max Max=num[k][s]; h=k; l=s; } 如果有两个都是最高成绩,需要把他们都输出,程序如下: int m,n; for(m=0;m<5;m++) for(n=0;n<4;n++) if(num[m][n]==num[h][l]) cout<<\"Max:\"<<\"num[\"< } (3)然后根据上面的设计思路,依次实现下面的要求。 (4)最后用函数调用,分别调用以上的函数,即可完成程序的编制。 (5根据总体设计的思路,程序流程图如下所示: 四详细步骤 1, 函数的定义和调用方法。 (1) 函数的定义 在使用或调用一个函数之前必须先按照c++规定的语法定义函数,函数定义的语法形式如下: 类型标识符 函数名(形式参数表) { 语句序列 } 类型标识符规定了该函数的返回值类型,也规定了该函数的类型。 函数名是一个函数区别与另外函数的标识,也就是函数的名字,函数的命名要求符合标识符的命名规则。 形式参数表是主调函数和被调函数之间联系的纽带,通常用于将主调函数中的数据送到被调函数处理。 两个大括号和包含在其中的语句序列被称为函数体,语句序列是函数功能和处理过程的描述。 (2)函数的调用 函数的调用形式 采用函数调用,当程序执行到调用点时,可以使程序流程跳转至被调用函数的地方去执行,从而实现函数体中代码所描述的功能。函数调用有时也称为函数引用,其形式是 函数名(实参列表) 函数名是被调用函数的名称,实参列表是当时函数被调用时,由主调函数传递给被调函数的数据或者对函数功能施加影响的函数。实参列表的形式如下: <表达式1>,<表达式2>,……<表达式n> 实参列表与定义函数时给出的形参列表应符合以下两条原则: a) 实参列表中实参表达式的个数应等于实参列表中形参的个数; b) 实参列表中每个实参表达式的类型应与形参列表中对应位置上的形参类型相同。 1.打开VC++6.0开发环境。 2.创建项目 在VC6.0的主界面中执行“File”→“New”菜单命令或按【ctrl+N】组合键,进入创建新项目的向导,首先要确定项目的类型、名称和位置等信息。 1>在project选项卡中,选中项目类型为“Win 32 Console Application”。 2>在project name文本框中输入项目名my project,在location文本框输入项目的位置。 3>选中“Create new workspace“单选按钮,表示要创建新的工作空间。 4>单击【OK】按钮,弹出向导对话框,在其中选中“An empty project” 单击【finish】按钮,项目目录和代码创建完毕。 5>“File”→“New”菜单命令,进入向导,在file选项卡中选中文件类型为“C++ Source File”,在file下输入文件名1,点击“OK”。 3.编辑源代码 将程序输入编辑区,程序如下: #include using namespace std; float Max(float num[5][4]); float Failure(float num[5][4]); float Average(float num[5][4]); // 定义函数 void main() //主函数 { cout<<\"请输入5个学生4门课的成绩:\\n\"; //原样输出 float num[5][4]; int i,j; for(i=0;i<5;i++) for(j=0;j<4;j++) { cout<<\"num[\"<cin>>num[i][j]; //输入学生成绩 if(num[i][j]>100||num[i][j]<0) { cout<<\"error!\"< } } Max(num); Failure(num); Average(num); } float Max(float num[5][4]) { int h,l,Max=num[0][0]; int k,s; //调用Max(num) //调用Failure(num) //调用Average(num) for(k=0;k<5;k++) //找出最高的成绩 for(s=0;s<4;s++) if(Max Max=num[k][s]; h=k; l=s; } int m,n; for(m=0;m<5;m++) for(n=0;n<4;n++) if(num[m][n]==num[h][l]) cout<<\"Max:\"<<\"num[\"< } float Failure(float num[5][4]) { int x,y,u,temp=1; for(x=0;x<5;x++) for(y=0;y<4;y++) if(num[x][y]<60.0) //如果成绩小于60,则输出该学生和各门成绩 { cout<<\"不及格学生的序号是:\"< cout< } else continue; if(temp==1) //如果都不小于60.0,则输出没有成绩不及格的学生 cout<<\"没有成绩不及格的学生!\\n\"; return 0; } float Average(float num[5][4]) //计算平均成绩 { float sum=0; int z; for(z=0;z<4;z++) { sum+=num[0][z]; } cout<<\"第一个学生的平均成绩是:\"< for(z=0;z<4;z++) { sum+=num[1][z]; } cout<<\"第二个学生的平均成绩是:\"< for(z=0;z<4;z++) { sum+=num[2][z]; } cout<<\"第三个学生的平均成绩是:\"< for(z=0;z<4;z++) { sum+=num[3][z]; } cout<<\"第四个学生的平均成绩是:\"< for(z=0;z<4;z++) { sum+=num[4][z]; } cout<<\"第五个学生的平均成绩是:\"< } 4.编译源程序 执行“Build“→”compile 1.cpp“菜单命令。如果出现错误要根据提示修改程序,直到编译成功生成1.exe文件为止。 5.创建可执行文件 执行“build“→”build 1.exe“菜单命令,VC6.0自动连接所有的目标文件,生成可执行文件。 6.运行程序 在编辑和连接完成以后,可以执行“build“→”execute“菜单命令,或按组合键【ctrl+F5】 来运行程序 7.调试程序 1>设置断点。将光标移动到某行上按【F9】键,可以在该行上设置断点。被设置了断点的行前面出现一个红色圆点,反复按【F9】键可以在设置断点和取消断点之间的切换。 五.设计体会 通过这次课程设计,加强了我们动手、思考和解决问题的能力。在设计过程中,经常会遇到这样那样的情况,就是心里想老着这样的做法可以行得通,但实际总是实现不了,因此耗费在这上面的时间用去很多。我觉得做课程设计同时也是对课本知识的巩固和加强,由于课本上的知识太多,平时课间的学习并不能很好的理解和运用,而且考试内容有限,所以在这次课程设计过程中,我们了解了更多的认识。平时看课本时,有时问题老是弄不懂,做完课程设计,那些问题就迎刃而解了。而且还可以记住很多东西,认识来源于实践,实践是认识的动力和最终目的,实践是检验真理的唯一标准。所以这个期末测试之后的课程设计对我们的作用是非常大的。 因篇幅问题不能全部显示,请点此查看更多更全内容