南昌大学C++实验5 函数

合集下载

c语言实验报告 函数

c语言实验报告 函数

c语言实验报告函数C语言实验报告:函数引言:C语言是一种广泛应用于软件开发领域的高级编程语言,其强大的功能和灵活性使得它成为许多程序员的首选。

在C语言中,函数是一种非常重要的概念和工具,它可以帮助我们更好地组织和管理代码,提高代码的可读性和可维护性。

本实验报告将深入探讨C语言中函数的使用方法和特性。

一、函数的定义和声明函数是C语言中的一个基本概念,它由一组语句组成,用于完成特定的任务。

在使用函数之前,我们需要先进行函数的定义和声明。

函数的定义包括函数的名称、参数列表和函数体,而函数的声明则是告诉编译器函数的名称和参数列表。

函数的定义和声明通常放在程序的开头部分或者头文件中,以便其他部分的代码可以调用这些函数。

二、函数的参数传递在C语言中,函数的参数传递可以通过值传递和引用传递两种方式进行。

值传递是指将实际参数的值复制给形式参数,函数内部对形式参数的修改不会影响到实际参数。

而引用传递则是指将实际参数的地址传递给形式参数,函数内部对形式参数的修改会影响到实际参数。

根据实际需求,我们可以选择不同的参数传递方式。

三、函数的返回值函数的返回值是指函数执行完毕后返回给调用者的值。

在C语言中,函数的返回值可以是任意类型的数据,包括整型、浮点型、字符型等。

通过使用return语句,我们可以将需要返回的值传递给调用者。

在函数的声明和定义中,我们需要指定函数的返回类型,以便编译器正确处理函数的返回值。

四、函数的递归调用递归是指函数调用自身的过程,它在解决某些问题时非常有效。

在C语言中,我们可以使用递归来实现一些复杂的算法和数据结构。

递归函数必须包含一个终止条件,以避免无限递归的情况发生。

在编写递归函数时,我们需要仔细考虑递归的边界条件和递归的终止条件,以确保函数能够正确地执行。

五、函数的库C语言提供了许多常用的函数库,可以帮助我们更方便地进行开发和编程。

这些函数库包括数学函数库、字符串函数库、输入输出函数库等。

通过调用这些函数库中的函数,我们可以实现更复杂的功能和算法。

c语言实验报告 函数

c语言实验报告 函数

c语言实验报告函数标题:C语言实验报告函数摘要:本实验报告主要介绍了C语言中函数的概念、定义和使用方法。

通过实验展示了如何在C语言中定义函数、调用函数以及函数的参数传递和返回值。

通过本实验的学习,读者将能够掌握C语言中函数的基本用法,为今后的编程实践奠定基础。

关键词:C语言、函数、参数传递、返回值引言:函数是C语言中的重要概念,它可以将一段代码封装成一个独立的模块,方便代码的复用和维护。

本实验将通过具体的示例来介绍C语言中函数的定义和使用方法,帮助读者更好地理解和掌握函数的概念和用法。

一、函数的定义和声明在C语言中,函数的定义包括函数名、参数列表、返回类型和函数体。

函数的声明包括函数名、参数列表和返回类型,用于告诉编译器函数的存在和类型信息。

下面是一个简单的函数定义和声明的示例:```c// 函数声明int max(int a, int b);// 函数定义int max(int a, int b) {return a > b ? a : b;}```二、函数的调用在C语言中,可以通过函数名和参数列表来调用函数。

例如,我们可以通过max函数来比较两个数的大小:```cint a = 10, b = 20;int result = max(a, b);printf("The max number is %d\n", result);```三、参数传递和返回值函数可以通过参数列表接收外部传入的数据,也可以通过return语句返回计算结果。

例如,下面的函数用于计算两个数的和:```cint add(int a, int b) {return a + b;}```四、实验结果通过本次实验,我们成功掌握了C语言中函数的定义、声明、调用、参数传递和返回值的基本用法。

在今后的编程实践中,我们可以更加灵活地使用函数来组织和管理代码,提高代码的复用性和可维护性。

结论通过本次实验,我们对C语言中函数的概念和用法有了更深入的了解。

南昌大学计算机数值分析实验报告

南昌大学计算机数值分析实验报告

实验报告实验课程:数值分析学生姓名:郑俊学号:6100410235专业班级:计算机科学与技术103班2012年 06 月 6日目录一、用样条插值法差值的方法生成字体T的轮廓 (3)二、用样条插值法差值的方法生成字体5的轮廓 (10)三、用最小二乘法估计原子弹爆炸的能量 (14)南昌大学实验报告一姓名: 郑俊 学 号: 6100410235 专业班级:计算机科学与技术103班 实验类型:□验证 □ 综合■设计 □创新 实验日期:2012-5 实验成绩:一、 实验目的1:用样条插值的方法生成字体T 的轮廓 2:C 语言用Bezier 曲线生成并编写程序二、 实验基本原理和内容P 0x P 0y P 1x P 1y P 2x P 2y P 3x P 3y 237 620 237 620 237 120 237 120 237 120 237 35 226 24 143 19 143 19 143 19 143 0 143 0 143 0 143 0 435 0 435 0 435 0 435 0 435 19 435 19 435 19 353 23 339 36 339 109 339 109 339 108 339 620 339 620 339 620 507 620 529 602 552 492 552 492 552 492 576 492 576 492 576 492 576 492 570 662 570 662 570 662 570 662 6 662 6 662 6 662 6 662 0 492 0 492 0 492 0 492 24 492 24 492 24 492 48 662 71 620 183 620 183620183620237620237620Bezier 曲线生成:1、确定曲线的阶次; 2 计算Bernstein 基函数的表达式:2、生成字体T 共分成15段,每段用了三次的代数方程,用Bezier 曲线生成:当n=3时303333,3212233,2221133,1330033,0)1()()1(3)1()()1(3)1()()1()1()(t t t C t B t t t t C t B t t t t C t B t t t C t B =-=-=-=-=-=-=-=nk t t t k n k n t t C t B kn k k n kk n n k ,,1,0]1,0[)1()!(!!)1()(, =∈--=-=--其中]1,0[∈t)()()()()(3,333,223,113,00t B P t B P t B P t B P t P +++=3、 把Bezier 曲线中的Pk 写成分量坐标的形式4 、确定一合适的步长;控制t 从0到1变化,求出一系列(x,y)坐标点;将其用小线段顺序连接起来。

南昌大学(-C )实验题目及要求

南昌大学(-C  )实验题目及要求

实验报告实验课程:C++ 面向对象程序设计学生姓名:***学号:**********专业班级:计算机软件0812010年11月 11日南昌大学实验报告学生姓名:慎镛日学号:8000608039 专业班级:计算机软件081实验类型:■验证□综合□设计□创新实验日期:2010.11.12 实验成绩:一、实验项目名称:小型公司人员管理二、实验目的:1、理解继承在面向对象程序设计中的重要作用;2、理解继承和派生的概念;3、掌握通过继承派生出一个新类的方法;4、进一步学习简单面向对象程序的编写;5、理解多态的概念;6、理解虚函数的作用;7、掌握虚函数的定义和使用方法;8、学习实现多态;9、了解纯虚函数和抽象类的概念和使用方法;三、实验内容1、题目内容描述2、输入和输出信息描述及数据类型确定;(1)、输入数据序号输入数据描述数据类型12………… ……(2)、输出数据序号输出数据描述数据类型12………… ……(3)、自定义数据类型如果程序中有自定义数据类型,如枚举、结构体、联合体等,请代码方式列出并概要解释其作用。

3、类的解释(1)、类的定义例如:类 Point 成员数据定义成员数据作用描述int m_X 2维坐标点的 X坐标…………成员函数定义成员函数功能描述void SetX(int x); 设置 2 维坐标点 X坐标…………(2)、类之间的关系4、程序调试错误错误信息是否解决方法序号列出你认为最重要的10 个错误信息解决(简要描述)1 ……2 ……3 …………5、测试与结果分析(1)、测试数据与结果(至少两组)源文件名可执行文件名测试序号测试输入数据测试输出结果是否正确结果分析三、实验总结1、问题总结1)结合本次实验目的,熟悉或掌握了那些内容。

程序是否实现并测试通过2)代码是否独立完成3)那些方面的知识理解或掌握的不到位;程序存在什么问题4)对于程序存在的问题如何去改进,写出其方法2、经验总结1)简述你在本题目积累了在开发工具使用、编成程序、调试程序、测试程序方面的实践经验四、列出源代码源文件:employee.cpp#include"employee.h"#include<iostream>using namespace std;employee::employee(char*n,int nu,char *s,int p,int sa,int y,int m,int d){strcpy(name,n);num=nu;strcpy(sex,s);position=p;salary=sa;bdate.setyear(y);bdate.setmonth(m);bdate.setday(d);}int employee::getyear(){return bdate.gety();}int employee::getmonth(){return bdate.getm();}int employee::getday(){return bdate.getd();}char* employee::getname(){return name;}int employee::getnum(){return num;}char* employee::getsex(){return sex;}int employee::getposition(){return position;}int employee::getsalary(){return salary;}inoutdata.cpp:#include"main.h"void inoutdata(int n){ofstream outdata("data.txt",ios::app);char name[20],sex[4];int num,salary,year,month,day,area;cout<<"请输入姓名:";cin>>name;outdata<<"姓名:"<<name<<"\t";cout<<"请输入编号:";cin>>num;outdata<<"编号:"<<num<<"\t";cout<<"请输入性别:";cin>>sex;outdata<<"性别:"<<sex<<"\t";outdata<<"职位:"<<p[n-1]<<"\t";cout<<"请输入工资或销售量:";cin>>salary;cout<<"请输入哪一年出生:";cin>>year;cout<<"请输入出生月份:";cin>>month;cout<<"请输入出生在哪天:";cin>>day;outdata<<"生日:"<<year<<"-"<<month<<"-"<<day<<"\t";if(n==1){manager m(name,num,sex,n-1,salary,year,month,day);outdata<<"薪水:"<<m.getpay()<<"\t";m.display();}if(n==2){cout<<"请选择部门(1、华北,2、华东):"<<endl;cin>>area;salesmanager sm(name,num,sex,n-1,salary,year,month,day,area-1);outdata<<"部门:"<<ar[area-1]<<"\t";outdata<<"薪水:"<<sm.getsmpay()<<"\t";sm.display();}if(n==3){cout<<"请选择部门(1、华北,2、华东):"<<endl;cin>>area;salesman s(name,num,sex,n-1,salary,year,month,day,area-1);outdata<<"部门:"<<ar[area-1]<<"\t";outdata<<"薪水:"<<s.getpay()<<"\t";s.display();}if(n==4){technician t(name,num,sex,n-1,salary,year,month,day);outdata<<"薪水:"<<t.getpay()<<"\t";t.display();}outdata<<"\n";outdata.close();}main.cpp:#include"main.h"void inout(){int i;while(1){cin>>i;if(i!=1&&i!=2&&i!=3&&i!=4)return;inoutdata(i);};}void outf(){char a;cout<<"是否要输出所有数据(y/n)?"<<endl;cin>>a;if(a!='y'&&a!='Y')return;ifstream indata;indata.open("data.txt");while(indata.get(a)){cout<<a;}indata.close();}void main(){cout<<"请选择要输入的数据:\n1、总经理\n2、销售经理\n3、销售员\n4、技术员\n"<<endl;inout();outf();}manager.cpp:#include"manager.h"#include<iostream.h>manager::manager(char*n,int nu,char *s,int p,int sa,int y,int m,int d):employee(n,nu,s,p,sa,y,m,d) {mpay=sa;}manager::getpay(){return mpay;}void manager::pay(){mpay=mpay;}void manager::display(){cout <<"名字:"<<getname()<<endl;cout <<"编号:"<<getnum()<<endl;cout <<"性别:"<<getsex()<<endl;cout <<"职位:"<<p[getposition()]<<endl;cout <<"出生日期:"<<getyear()<<"年"<<getmonth()<<"月"<<getday()<<"日"<<endl;cout <<"工资:"<<getpay()<<endl;cout<<endl;}salesman.cpp:#include"salesman.h"#include<iostream.h>salesman::getsale(){return sale;}salesman::getpay(){pay();return spay;}salesman::salesman(char*n,int nu,char* s,int p,int sa,int y,int m,int d,int a):employee(n,nu,s,p,sa,y,m,d){sale=sa;area=a;}void salesman::setsale(int p){sale=p;}void salesman::pay(){spay=getsale()*4/100;}char *salesman::getarea(){return ar[area];}void salesman::display(){cout <<"名字:"<<getname()<<endl;cout <<"编号:"<<getnum()<<endl;cout <<"性别:"<<getsex()<<endl;cout <<"职位:"<<p[getposition()]<<endl;cout <<"出生日期:"<<getyear()<<"年"<<getmonth()<<"月"<<getday()<<"日"<<endl;cout <<"工资:"<<getpay()<<endl;cout<<"所属部门:"<<getarea()<<endl;cout<<endl;}salesmanager.cpp:#include"salesmanager.h"#include<iostream.h>salesmanager::salesmanager(char*n,int nu,char* s,int p,int sa,int y,int m,int d,int a):salesman(n,nu,s,p,sa,y,m,d,a),manager(n,nu,s,p,sa,y,m,d){sale=sa;}salesmanager::getsmpay(){pay();return smpay;}salesmanager::getmpay(){return manager::getpay();}void salesmanager::setsale(int s){sale=s;}void salesmanager::setpay(int g){gpay=g;}void salesmanager::pay(){smpay=5000+sale*5/1000;}char *salesmanager::getare(){return getarea();}void salesmanager::display(){cout <<"名字:"<<salesman::getname()<<endl;cout <<"编号:"<<salesman::getnum()<<endl;cout <<"性别:"<<salesman::getsex()<<endl;cout <<"职位:"<<p[salesman::getposition()]<<endl;cout <<"出生日期:"<<salesman::getyear()<<"年"<<salesman::getmonth()<<"月"<<salesman::getday()<<"日"<<endl;cout <<"工资:"<<getsmpay()<<endl;cout<<"所属部门:"<<getare()<<endl;cout<<endl;}technician.cpp:#include"technician.h"#include<iostream.h>technician::technician(char*n,int nu,char* s,int p,int sa,int y,int m,int d):employee(n,nu,s,p,sa,y,m,d){time=sa;}technician::gettime(){return time;}technician::getpay(){pay();return tpay;}void technician::pay(){tpay=time*25;}void technician::display(){cout <<"名字:"<<getname()<<endl;cout <<"编号:"<<getnum()<<endl;cout <<"性别:"<<getsex()<<endl;cout <<"职位:"<<p[getposition()]<<endl;cout <<"出生日期:"<<getyear()<<"年"<<getmonth()<<"月"<<getday()<<"日"<<endl;cout <<"工资:"<<getpay()<<endl;cout<<endl;}头文件:empolyee.h:#ifndef empolyee_h#define empolyee_hstatic char p[4][20]={{"总经理"},{"销售经理"},{"销售员"},{"技术人员"}};class date //定义时间类{private:int year,month,day; //定义时间类的年月日public:date(){} //时间类的构造函数void setyear(int y=1988){year=y;}void setmonth(int m=5){month=m;}void setday(int d=16){day=d;}int gety(){return year;}int getm(){return month;}int getd(){return day;}};class employee //基类,被雇佣者{private:char name[20]; //名字int num; //编号char sex[4]; //性别date bdate; //出生时间int position; //职位int salary; //薪水public:employee(){} //基类构造函数employee(char*n,int nu,char* s,int p,int sa,int y,int m,int d);//基类构造函数的重载int getyear();int getmonth();int getday();char* getname();int getnum();char* getsex();int getposition();int getsalary();virtual void promote(){} //虚升职函数virtual void pay()=0; //纯虚的计算工资函数virtual void display()=0; //纯虚的显示函数};#endifmain.h:#include<iostream>#include<fstream>using namespace std;#include"employee.h"#include"salesman.h"#include"manager.h"#include"salesmanager.h"#include"technician.h"void inoutdata(int);manager.h:#include"employee.h"#ifndef manager_h#define manager_hclass manager:public employee //定义经理类,继承employee类{private:int mpay; //定义经理类的工资public:manager(char*n,int nu,char *s,int p,int sa,int y,int m,int d);virtual void promote(){}int getpay();virtual void pay();virtual void display();};#endifsalesman.h#include"employee.h"#ifndef salesman_h#define salesman_hstatic char ar[4][20]={ //定义储存部门的数组,以便后面你用整数来表示部门{"华北地区"},{"华东"}};class salesman:public employee //定义销售员的类,继承employee类{private:int sale,spay; //定义销售量,和销售员的工资变量int area; //定义销售员的部门public:salesman(char*n,int nu,char* s,int p,int sa,int y,int m,int d,int a);int getsale();int getpay();char* getarea();void setsale(int);virtual void promote(){} //虚升职函数virtual void pay(); //虚计算工资的函数virtual void display(); //虚显示函数};#endifsalesmanager.h:#include"salesman.h"#include"manager.h"#ifndef salesmanager_h#define salesmanager_hclass salesmanager:public salesman,public manager //定义销售经理的类,继承销售员类和经理类{private:int smpay,sale,gpay;public:salesmanager(char*n,int nu,char *s,int p,int sa,int y,int m,int d,int a);int getsmpay(); //获得销售经理的工资int getmpay(); //获得销售经理的固定工资void setsale(int); //设置销售经理的总销售量void setpay(int); //设置销售经理的固定工资char* getare(); //获得销售经理的部门virtual void promote(){} //虚升职函数void pay(); //销售经理的计算工资的函数void display(); //销售经理的显示函数};#endiftechnician.h:#include"employee.h"#ifndef technician_h#define technician_hclass technician:public employee //定义技术员的类,继承employee类{private:int time,tpay; //定义技术员的工作时间和工资public:technician(char*n,int nu,char* s,int p,int sa,int y,int m,int d);int gettime(); //获得技术员的工作时间int getpay(); //获得技术员的工资virtual void promote(){} //虚升职函数virtual void pay(); //销售经理的计算工资的函数virtual void display(); //销售经理的显示函数};#endif五、参考文献。

C语言实验报告函数

C语言实验报告函数

实验名:函数的定义及调用一、实验目的1、掌握C语言函数定义及调用的规则。

2、理解参数传递的过程。

二、实验内容(一))题目11、题目内容描述1、上机调试下面的程序,记录系统给出的出错信息,并指出出错原因。

main(){int,y;printf(“%d\n”,sum(x+y));int sum(a,b){int a,b;return(a+b);}}2、编写并调试一个求n!(n为整数)的递归函数,希望能在程序运行过程中动态地显示递归函数被调用的轨迹。

三、分析讨论1、针对以上实验内容写出相应的参数传递过程并分析结果。

2、讨论参数的传递的几种形式。

2、输入和输出信息描述及数据类型确定;、输入数据(1)序号输入数据描述数据类型1 x,y int2 a,b int(2)输出数据序号输出数据描述数据类型1 x+y int3、程序源代码(填写程序调试正确后的代码)#include <stdio.h>int main(){int sum(int a,int b); //对被调用函数sum 的声明int x,y,z;scanf("%d,%d",&x,&y);z=sum(x,y); //调用sum 函数,将其值赋给zprintf("%d\n",z); //输出函数结果zreturn 0;//返回值为0}int sum(int a,int b) //定义sum函数{return(a+b); //将a+b的值作为返回值返回到调用sum的位置}4、程序调试错误序号错误信息(列出出错语句以及出错提示)是否解决解决方法1 In function 'main':|int,y;是改为int x,y;2 error: stray '\241' in program|error: expected expressionbefore '%' token|error: stray '\' in program|printf(“%d\n”,sum(x+y));是将整段改为int sum(int a , int b);int x,y,z;z=sum(x,y);printf("%d\n",z);3 error: 'a' redeclared asdifferent kind of symbol|error: 'b' redeclared asdifferent kind of symbol|int a,b;是去掉整句话4 warning: 'x' is useduninitialized in this function[-Wuninitialized]|是加上scanf("%d,%d",&x,&y);5 error: static declaration of'sum' follows non-staticdeclaration|是将int及后面的语句块都移到main外面5、测试与结果分析(1)、测试数据与结果测试序号测试用例选取原因测试输入数据测试输出结果是否正确结果分析1 测试用例4,5 9 是可运算范围内2 测试用例55555,7933 63488 是可运算范围内3 测试用例-89,-79 -168 是可运算范围内(2)、相关问题回答2、编写并调试一个求n!(n为整数)的递归函数,希望能在程序运行过程中动态地显示递归函数被调用的轨迹。

C_lab5-2_函数(下)

C_lab5-2_函数(下)

实验5-2函数(下)【实验目的】1.正确认识变量的作用域和生存期。

2.掌握变量的动态存储和静态存储3.掌握局部变量和全局变量的作用范围【实验内容】Part1:基础练习(课堂练习)1.以下说法不正确的是 D 。

A.在不同函数中可以使用相同名字的变量B.形式参数是局部变量C.在函数内声明的变量只在本函数范围内有效D.在函数内某语句块中声明的变量在本函数范围内均有效2.关于局部变量,下列说法正确的是C。

A.同一程序中的函数都可以访问B.函数中变量声明处以下的任何语句都可以访问C.复合语句(语句块)中变量声明处以下的任何块内语句都可以访问D.局部变量可用于函数之间传递数据3.关于全局变量,下列说法正确的是D。

A.任何全局变量都可以被任何程序文件中的任何函数访问。

B.任何全局变量都只能被声明它的程序文件中的函数访问。

C.任何全局变量都只能被声明它的函数中的语句访问。

D.全局变量可用于函数之间传递数据。

4.不进行初始化即可自动获得初值0的变量包括D。

A.任何用static修饰的变量。

B.任何在函数外定义的变量。

C.局部变量和用static修饰的全局变量。

D.全局变量和用static修饰的局部变量。

5.关于全局变量,下列说法正确的是D。

A.全局变量必须在文件的首部声明,位于任何函数之前。

B.全局变量可以在函数中声明。

C.全局变量可以在任意位置声明。

D.全局变量的作用范围从声明处开始,到文件尾结束6.如果在一个函数的复合语句中声明了一个变量,则以下关于该变量说法正确的是:A 。

A.只在该复合语句中有效B.在该函数中有效C.在本程序范围内均有效D.为非法变量7.函数中声明有局部变量,若声明中带有static,则该局部变量采用静态存储方式,在静态存储区分配空间,若函数中未显式设定初始值,则系统将其自动初始化,函数被调用结束时,该空间是/否释放;8.若声明时不带有static,则该局部变量采用动态存储方式,在动态存储区(系统堆栈区)分配空间,程序中必须显式设定初始值,当该函数被调用结束时,该变量所占用空间是/否?释放。

C语言实验5-8答案(函数与数组)

C语言实验5-8答案(函数与数组)

任务
1.fact(j-1)*j
2.gcd(n,m%n)
m<n
3.//for(j=0;j<=n-i;j++)
//printf("");//删除这两行,因为顶格输出,不要空行了。
y==1||y==x
z=c(x-1,y-1)+c(x-1,y)
4.程序代码如下:
#include<stdio.h>
fib(int n)
#include <stdio.h>
main( )
{double fun(int m);//先调用再定义,且不是能缺省的int型,请加上函数说明。
int m;
printf("\n input m:");
scanf("%d",&m);
printf("\n t= %12.10lf \n",fun(m));
j=2
j—
i+j==2
输出为:a=13,b=14
4.i=1
x[i-1]
5.m<1000
m/10%10或m/10-x*10
a[i]=m
m<i
输出结果为:153 370 371 407
6.a
a
sum/n
x[i]<ave
任务
1.‘\0’
str1[i]-str2[i]
2.c[k]=a[i++];
c[k]=b[j++];
return yes;
}
main( )
{
int n;
scanf("%d",&n);

C语言在线实验第5次(第七章函数)-题目与答案

C语言在线实验第5次(第七章函数)-题目与答案

第五次实验题目-第七章函数教学目标31.一元二次方程的系数:a、b、c由主函数输入,编写函数求方程的根。

#include <stdio.h>#include <math.h>void root(double a, double b, double c){ double delta,x1,x2,m,n;if (fabs(a) <= 1e-6){if (fabs(b) <= 1e-6)puts("Not an equation");elseprintf("x=%.2lf",-c/b);return;}else{delta=b*b - 4*a*c;m = -b / (2*a);n = sqrt(fabs(delta)) / (2*a);x1 = m + n;x2 = m - n;if (fabs(delta) <= 1e-6)printf("x1=%.2lf, x2=%.2lf", x1, x1);else if (delta < 0)printf("x1=%.2lf+%.2lfi, x2=%.2lf-%.2lfi",m,n,m,n);elseprintf("x1=%.2lf, x2=%.2lf", x1, x2);}}int main( ){ double a,b,c;scanf("%lf%lf%lf",&a,&b,&c);root(a,b,c);return 0;}教学目标32.输入一串字符,统计其中英文字母的个数,编写统计英文字母个数的函数。

#include<stdio.h>int numberOfLetter(char str[]) {int i=0;int num = 0;//统计字母个数while (str[i]!=’\0’) {if ((str[i]>='A'&& str[i]<='Z')||( str[i]>='a'&& str[i]<='z')) num++;i++;}return num;}int main( ) {char str[100];int letterNum;printf("Enter a string: ");gets(str);letterNum = numberOfLetter(str);printf("Number of letters is %d.\n", letterNum);return 0;}教学目标33. 求100以内所有素数的和。

南昌大学C++高级语言程序设计实验报告

南昌大学C++高级语言程序设计实验报告

实验报告实验课程:学生姓名:学号:专业班级:2016 年9 月 1 日目录实验一. C++的开发环境和简单程序的调试 (2)实验二. 函数的应用和类的基本构造 (5)实验三. 数组、指针、字符串 (8)实验四. 继承与派生 (10)实验五. 多态与模板 (15)实验六. 异常处理 (21)实验七. 输入输出 (25)实验八. 文件 (28)南昌大学实验报告、实验项目名称实验一 . C++的开发环境和简单程序的调试二、实验目的1. 熟悉 C++程序的风格,熟悉实验环境。

2. 练习 C++ 程序的输入、修改、编译、连接与运行的全过程三、实验基本原理C++程序设计语言四、主要仪器设备及耗材PC 微机DOS 操作系统或 Windows 操作系统 C++程序设计语言开发环境 五、实验步骤 (要求给出运行结果的屏幕截图,源程序电子打包提交 ) 1. 分析下面程序的输出结果:2.建立一个被称为 sroot( ) 的函数,返回其参数的二次根。

重载 sroot( ) 三次,让它分别返回整数、长整数与双精度数的二次根(为了实际计算二次根,可以使用标准库函数 sqrt( ) )。

3. 编写 C++风格的程序,解决百钱问题,将 1 元人民币兑换成 1,2,5 分的硬币,有多少种换 法六、实验数据及处理结果1. 分析下面程序的输出结果:#include <iostream.h> int &f(int &i) { i+=10; return i;}void main() { int k=0; int &m=f(k); cout<<k<<endl; m=20; cout<<k<<endl;}2. 建立一个被称为 sroot( ) 的函数,返回其参数的二次根。

重载 sroot( ) 三次,让它分别返学生姓名:实验类型:□ 验证 □ 综合 学 号: □ 设计 □ 创新 实验日期: 专业班级:2016-9-9实验成绩:回整数、长整数与双精度数的二次根(为了实际计算二次根,可以使用标准库函数sqrt( ) )。

C语言程序设计实验五 参考答案

C语言程序设计实验五  参考答案
5-2、以下程序的功能:输出3—1000之间的素数。选择合适的内容填入空白处,并调试运行程序。
答案:
#include<stdio.h>
void main()
{
int i,j,num=0;
for(i=3;i<=1000;i++)
{
for(j=2;j<=1000;j++)
if(i%2==0)
break;
5-4从键盘输入一个整数n,计算2n+1与++n之和。要求计算两数之和用函数实现。
答案:
#include<stdio.h>
void main()
{
int a;
int sum(int n);
printf("input n:\n");
scanf("%d",&a);
sum(a);
}
int sum(int n)
if(i%2!=0)
{
printf("%5d",i);
num++;
if(num%10==0)
printf("\n");
}
}
printf("\n");
}
*************************************************************************************************************实验三*******************************************
c语言程序设计实验五参考答案实验解答实验五参考答案编程语言c语言吧c语言答案

C语言程序设计实验五:函数(5篇范例)

C语言程序设计实验五:函数(5篇范例)

C语言程序设计实验五:函数(5篇范例)第一篇:C语言程序设计实验五:函数C语言程序设计实验五:函数1、定义函数返回两个数中较大的数,在主函数中通过调用该函数求三个数中较大的数并输出,编写主函数调用该函数。

说明:(1)请大家按学号来坐,便于考勤和管理。

(2)请珍惜宝贵的实验时间!不要做与实验无关的事情,比如聊QQ、上网或打游戏。

(3)直接把C语言代码粘贴到相应的实验题目下方,上交实验报告时只交word文档。

(4)文档名称:班级+学号后2位+姓名+实验编号,例如12通1班12张山实验五.doc。

第二篇:C语言程序设计实验七:函数、数组、指针C语言程序设计实验七:函数、数组、指针1、程序运行后,用户任意输入一个字符串,求出字符串长度,然后输出字符串内容及个数。

不能使用strlen函数。

求字符串长度函数的函数原型必须如下:int MyStrLenPt(char *str)若输入:nihao123!则输出:nihao123!:9 chars2、编写一个对一维数组进行排序的程序。

要求:写两个函数,一个主函数,一个sort函数。

在主函数中完成数组的输入和输出,通过调用sort函数对数组进行排序。

sort函数的原型为:voidsort(int*p, intn);说明:(1)请大家按学号来坐,便于考勤和管理。

(2)请珍惜宝贵的实验时间!不要做与实验无关的事情,比如聊QQ、上网或打游戏。

(3)直接把C语言代码粘贴到相应的实验题目下方,上交实验报告时只交word文档。

(4)文档名称:班级+学号后2位+姓名+实验编号,例如11电1班12张山实验七.doc。

第三篇:C语言程序设计—函数—实验报告实验报告专业软件工程班级X班学号_ XXXXXXXXXXX_姓名实验日期:201X年X月X日报告退发(订正、重做)课程C程序设计实验实验名称函数一、实验目的① 熟练掌握C程序中函数的定义;② 掌握函数的调用,函数参数的传递;③ 熟练掌握函数的嵌套调用和递归调用;二、实验环境(描述实验的软件、硬件环境)① 软件环境:windows xp/win7等操作系统,Microsoft Visual C++ 6.0编译器;② 硬件环境:PC机一台三、实验内容、步骤和结果分析题目一:编写一个用来判断质数(素数)的函数。

c语言实验报告函数总结心得

c语言实验报告函数总结心得
姓名:郑旸学号: 20XX****** 实验成绩:___
一、实验目的及要求
(1) 掌握C的数据类型的声明、定义、赋值及引用;
(2) 掌握变量和常量之间的关系,以及各种常见的常量表示方法; (3)
掌握C的有关运算。算术运算中的自反、自增、自减运算符的使用;关系表达式和逻辑表达式的逻辑值表示方法和基本运算规律;学会在C语言环境下表示条件表达式;
二、实验内容
完成并熟悉程序输入、编译、连接、运行过程,直到程序输出结果正确;
学习基本的调试程序方法(包含编译、连接错误信息的正确理解)。 程序实例如下:计算 sum=a+b int main(void) {
int nA,nB,nSum; nA=10; nB=20; nSum=nA+nB;
printf("Sum is %d\n",nSum); return 0;
putchar是字符显示函数,只能显示单个字符。
实验内容2:
一)用if语句编写该程序
原理:1) 用scanf函数从计算机终端输入成绩g; 2) 用if语句的嵌套结构选择相应成绩的等级; 3) 用printf函数输出该成绩等级。
源程序:
在visual c++ 环境下运行程序
调试结果:
(4) 运行结果:
int wanshu(int num); /*函数声明*/
void main { int i;
for(i=1;i #include
//判断一个整数是否为素数 int prime(int num) {int i;
if(num==1 || num==0)return 0;for(i=2;i='a' && c = 'A' && c ='0'&&c<='9' {}

C语言实验报告(函数应用)

C语言实验报告(函数应用)

C语言程序设计II实验报告题目:实验五函数应用院系名称:计算机学院专业名称:计算机科学与技术班级:学号:学生姓名:指导教师:实验日期:2017年4月1日报告提交截止日期:2017年4月11日一、实验目的1、掌握C语言函数的定义方法、函数的声明及函数的调用方法及调用过程;2、掌握主调函数和被调函数之间的参数传递方式;二、实验内容与要求:1、求两个整数的最大公约数和最小公倍数。

用一个函数求最大公约数,用另一个函数根据求出的最大公约数求最小公倍数。

(提示:设两个整数是a,b,最大公约数是p,最小公倍数是q,那么ab=pq)2、用牛顿迭代法求方程f(x)=ax3+bx2+cx+d=0的根。

系数a、b、c、d由主函数输入。

求根过程写成函数。

(提示:牛顿迭代法是先给定方程f(x)=0的一个较好的初始近似根x0,然后重复使用迭代公式:求x的近似解,直至相邻两次的近似解相差很小为止,如差值的绝对值小于1e-07。

x0可以从键盘输入或直接设定。

)3、定义一个函数,功能是计算n个学生的成绩中高于平均成绩的人数,并作为函数返回值。

用主函数来调用它。

统计30个学生成绩中高于平均成绩的有多少人。

4、∑=+++==ninpppipns1)()2()1()()(,!)(iip=5、编写和调用函数,给定圆筒的内径、外径和高,计算该圆筒的体积;给定圆锥的高、底面半径,计算该圆锥的体积和表面积。

6、编写和调用函数,求出10000以内的所有素数、绝对素数、水仙花数、完全数(或称完数)、互满数。

提示:一个素数经过任意次调换位,仍然为素数,则称其为绝对素数,例如13和31就是一个绝对素数。

水仙花数是指一个三位整数,其各位数字立方之和等于该数。

例如,153就是一个水仙花数:153=1*1*1+5*5*5+3*3*3。

完全数是指一个数正好是它的所有约数(本身除外)之和。

例如,6就是一个完全数,因为6的因子有1、2、3,并且6=1+2+3。

如果有两个数,每一个数的所有约数(除它本身以外)之和正好等于对方,则称这两个数为互满数。

函数c语言实验报告

函数c语言实验报告

函数c语言实验报告函数C语言实验报告一、引言函数是C语言中的重要概念之一,它能够将一系列的代码逻辑封装成一个独立的模块,提供给其他代码进行调用,从而实现代码的复用性和可维护性。

本实验旨在通过实际的编程实践,掌握函数的定义、调用和参数传递等基本概念,进一步理解函数的作用和使用方法。

二、实验目的1. 理解函数的定义和调用的基本原理;2. 掌握函数的参数传递方式;3. 熟悉函数的返回值类型和使用方法。

三、实验过程1. 函数的定义和调用在C语言中,函数的定义包括函数的返回值类型、函数名、参数列表和函数体。

函数的调用通过函数名和实参进行,实参的值会传递给形参进行函数运算。

为了更好地理解函数的定义和调用,我们可以通过一个简单的例子进行说明。

```c#include <stdio.h>// 定义一个函数,用于计算两个整数的和int sum(int a, int b) {return a + b;}int main() {int num1 = 10, num2 = 20;int result = sum(num1, num2); // 调用sum函数,将num1和num2作为实参传递给函数printf("The sum of %d and %d is %d\n", num1, num2, result);return 0;}```在上述代码中,我们定义了一个名为sum的函数,它接受两个整数类型的参数a和b,并返回它们的和。

在main函数中,我们声明了两个整数变量num1和num2,并将它们的值分别赋为10和20。

然后,我们调用sum函数,并将num1和num2作为实参传递给函数。

函数执行完毕后,返回的结果会被赋值给result变量,并通过printf函数输出。

2. 函数的参数传递函数的参数传递方式有两种:值传递和指针传递。

值传递是指将实参的值复制给形参,函数内部对形参的修改不会影响实参。

C程序设计_函数_实验报告

C程序设计_函数_实验报告

贵州大学《C程序设计实验》实验报告实验名称:函数专业电子信息科学与技术班级姓名学号教师2010年}else{printf("%d isn't a prime number\n",n);}}bool prime_number(int x){bool flag=true;for(int i=2;i<x/2&&(flag==true);i++){if(x%i==0)flag=0;}return flag;}运行情况:分析:程序开始:bool prime_number(int x);声明一个函数,函数返回值为bool型,函数名为prime_number,函数带一个int型参数。

scanf("%d",&n);从屏幕输入数n。

if(prime_number(n)) 调用函数,传入参数n。

bool prime_number(int x){bool flag=true;for(int i=2;i<x/2&&(flag==true);i++){if(x%i==0)flag= false;}return flag;}把两个函数分别放在两个程序文件中,作为两个文件进行编译、连接和运行。

(3). 用递归法将一个整数n转换成字符串。

例如,输入483,应输出字符串“483”。

n的位#include <stdio.h>void main(){int n;void covert( int n);printf("input n\n");scanf("%ld",&n);if(n<0){putchar('-');n=-n;}covert(n);}void covert(int n){inti;if((i=n/10)!=0)covert(i);printf("%c",n%10+'0');}数不确定,可以是任意的整数。

C语言程序设计实验报告(函数)

C语言程序设计实验报告(函数)

C语言程序设计实验报告(实验名称:函数)1实验目的(1)掌握函数的定义方法、调用方法、参数说明以及返回值;(2)掌握实参与形参的对应关系,以及参数之间的“值传递”的方式;(3)掌握函数的嵌套调用及递归调用的用的设计方法;(4)在编程过程中加深理解函数调用的程序设计思想。

2实验内容(1)编写一个函数primeNum(int x),功能是判别一个数是否为素数。

要求:①在主函数中输入一个整数x(直接赋值或从键盘输入);②函数类型为空值(void),调用primeNum( )函数后,在函数中输出x是否为素数的信息,输出格式为“x is a prime number”或”x is not aprime number”;③分别输入一下数据:0,1,2,5,9,13,59,121,并运行程序,检查结果是否正确。

(2)编写函数 mulNum(int a,int b),它的功能是用来确定a和b是否是整数倍的关系。

如果a是b的整数倍,则函数返回值为1,否则函数返回值为0。

要求:①在主函数中从键盘输入一对整型数据a和b;②调用函数后,根据返回值对a和b的关系进行说明。

例如,在主函数中输入:10,5,则输出“10 is a multiple of 5”;③分别输入下面几组数据进行函数的正确性测试:1与5,5与5,6与2,6与4,20与4,37与9。

3算法描述流程图(1)primeNum(int x)(判别一个数是否是素数)函数流程图①主函数流程图:②判断素数函数流程图:(2)mulNum(int a,int b)(确定a和b是否是整数倍的关系)函数流程图①主函数流程图:②判断倍数流程图:4源程序(1)判断某个数是否是素数#include <stdio.h>int primNum(int x) /*编写函数判断某个数是否是素数*/ {int i;if (x==0||x==1) /*当x等于1或等于0时判断是否为素数*/return 0;for (i=2;i<x;i++) /* 当x大于2时判断不为素数的数*/{if (x%i==0)return 0;}if (x%i) /* 当x等于2或不满足上述条件时时判断出该数是素数*/ return 1;}void main(){int n ;printf("Please input an integer:"); /* 提示从键盘输入一个数x */scanf("%d",&n);if (primNum(n)==1) /* 调用定义的函数*/ printf("%d is a prime number\n",n); /* 由函数得出结论判断是否为素数*/ elseprintf("%d is not a prime number\n",n);}(2)个数是否是整数倍关系#include <stdio.h>int mulNum(int a,int b)/* 定义函数确定两个数是否有整数倍关系*/{if (a%b==0) /* 判断出a是b的整数*/return 1;else /* 判断出a不是b的整数*/return 0;}void main (){int m,n;printf ("please input tow integers:\n"); /*提示从键盘输入两个数*/scanf ("%d%d",&m,&n); /*从键盘输入两个数的值*/if(mulNum(m,n)==1) /*调用定义的函数并判断输出相应的结果*/printf("%d is a multiple of %d\n",m,n);elseprintf("%d is not a multiple of %d\n",m,n);}5测试数据(1)实验(1)测试数据为0,1,2,5,9,13,59,121 运行结果当测试数据0时当测试数据1时当测试数据2时当测试数据5时当测试数据9时当测试数据13时当测试数据59时当测试数据121时(2)实验2测试的数据1与5,5与5,6与2,6与4,20与4,37与9。

南昌大学C++实验5 函数

南昌大学C++实验5 函数

南昌大学实验报告学生姓名:学号:专业班级:实验类型:□验证□综合□√设计□创新实验日期:实验成绩:一、实验名称实验5 函数二、实验目的1.掌握函数的定义方法、函数的调用方法、参数说明以及返回值。

掌握实参与形参的对应关系以及参数之间的“值传递”的方式;掌握函数的嵌套调用及递归调用的设计方法;2.掌握全局变量和局部变量、动态变量与静态变量的概念和使用方法;3.在编程过程中加深理解函数调用的程序设计思想。

二.实验内容1.多模块的程序设计与调试的方法;2.函数的定义和调用的方法;3.用递归方法进行程序设计。

三.实验环境PC微机DOS操作系统或Windows 操作系统Turbo C 程序集成环境四.实验内容1.编写一个函数primeNum(int num),它的功能是判别一个数是否为素数。

如果num 是素数,返回该数;否则返回0值。

要求:(1)在主函数输入一个整数num,调用该函数后,输出num是否是素数的信息。

输出格式为:num is prime或num is not prime。

(2)分别输入以下数据:0,1,2,5,9,13,59,121,运行程序并检查结果是否正确。

2.编写一个计算组合数的函数combinNum(int m,int n)。

计算结果由函数返回。

计算组合数的公式是:c(m,n)=m!/(n!*(m-n)!)要求:(1)从主函数输入m 和n 的值。

对m>n 、m<n 和m=n 的情况作分别处理后调用函数combinNum(m,n),在主函数内输出结果值。

(2)对m>n 、m<n 和m=n 的情况各取一组数据进行测试,检查程序的正确性。

(3)修改程序,把两个函数分别放在两个程序文件中,作为两个文件进行编译、链接和运行。

3.已知xsh x sh shx sh y 32)1(++=,其中,sh 为双曲正弦函数,即2)(tt e e t sh --=,编写一个程序,输入x 的值,求y 的值。

南昌大学C++实验报告

南昌大学C++实验报告

南昌大学实验报告1.熟悉VC的上机环境1)实验目的1.初步了解C++程序的翻译、连接、和运行的过程。

2.掌握和理解C++程序的结构。

2)实验要求1.使用VC++6.02.运行一个简单的C++程序3)实验内容源程序:#include<iostream.h>#include<stdio.h>void main(){cout<<"C++上机实验"<<endl;}运行结果:南昌大学实验报告2.构造函数与析构函数1)实验目的1.理解类与对象的区别。

2.学习掌握定义构造函数和析构函数的方法。

3.学习把握默认构造函数的意义。

4.了解类成员初始化,掌握构造与析构类成员的方式2)实验内容源程序:#include<iostream>#include<string>using namespace std;class Student{public:Student(int n,string nam,char s){num=n;name=nam;sex=s;}~Student(){cout<<"The information of "<<num<<" studnet has been collected."<<endl;}void display(){cout<<"num: "<<num<<endl;cout<<"name: "<<name<<endl;cout<<"sex: "<<sex<<endl<<endl;}private:int num;string name;char sex;};int main(){Student stud1(1001,"Jake",'m');stud1.display();Student stud2(1002,"Nancy",'f');stud2.display();return 0;}运行结果:南昌大学实验报告3.常类型与类型转换1)实验目的1.学习定义常对象、常指针、常引用、常成员函数、常数据成员。

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

南昌大学实验报告学生姓名:学号:专业班级:实验类型:□验证□综合□√设计□创新实验日期:实验成绩:一、实验名称实验5 函数二、实验目的1.掌握函数的定义方法、函数的调用方法、参数说明以及返回值。

掌握实参与形参的对应关系以及参数之间的“值传递”的方式;掌握函数的嵌套调用及递归调用的设计方法;2.掌握全局变量和局部变量、动态变量与静态变量的概念和使用方法;3.在编程过程中加深理解函数调用的程序设计思想。

二.实验内容1.多模块的程序设计与调试的方法;2.函数的定义和调用的方法;3.用递归方法进行程序设计。

三.实验环境PC微机DOS操作系统或Windows 操作系统Turbo C 程序集成环境四.实验内容1.编写一个函数primeNum(int num),它的功能是判别一个数是否为素数。

如果num 是素数,返回该数;否则返回0值。

要求:(1)在主函数输入一个整数num,调用该函数后,输出num是否是素数的信息。

输出格式为:num is prime或num is not prime。

(2)分别输入以下数据:0,1,2,5,9,13,59,121,运行程序并检查结果是否正确。

2.编写一个计算组合数的函数combinNum(int m,int n)。

计算结果由函数返回。

计算组合数的公式是:c(m,n)=m!/(n!*(m-n)!)要求:(1)从主函数输入m 和n 的值。

对m>n 、m<n 和m=n 的情况作分别处理后调用函数combinNum(m,n),在主函数内输出结果值。

(2)对m>n 、m<n 和m=n 的情况各取一组数据进行测试,检查程序的正确性。

(3)修改程序,把两个函数分别放在两个程序文件中,作为两个文件进行编译、链接和运行。

3.已知xsh x sh shx sh y 32)1(++=,其中,sh 为双曲正弦函数,即2)(tt e e t sh --=,编写一个程序,输入x 的值,求y 的值。

4.整数a,b 的最大公约数是指既能被a 整除又能被b 整除的最大整数。

整数a,b 的最小公倍数是指既是a 的倍数又是b 的倍数的最小整数。

编写两个函数,一个函数gcd()的功能是求两个整数的最大公约数,另一个函数mul()的功能是求两个整数的最小公倍数。

要求:(1)两个整数在主函数中输入,并在主函数中输出求得的最大公约数和最小公倍数。

(2)首先将两个整数a 和b 作为实参传递给函数gcd (),求出的最大公约数后,由函数gcd ()带值返回主函数,然后将最大公约数与两个整数a 、b 一起作为实参传递给函数mul (),以此求出最小公倍数,再由函数mul ()带值返回主函数。

(3)提示:求最大公约数一般采用辗转相除法(Euclid 算法),方法如下:分别让变量m 和n 存储两个数的值(这里是a 和b)。

如果n 为0,那么停止操作,m 中的值就是最大公约数(GCD ),否则计算m 除以n 的余数,把n 保存到m 中,并把余数保存到n 中。

然后重复上述过程,每次都先判断n 是否为0.五、实验数据及处理结果[习题1] 编写一个函数primeNum(int num),它的功能是判别一个数是否为素数。

如果num是素数,返回该数;否则返回0值。

[问题分析或算法设计][数据需求][程序实现]#include <iostream>using namespace std;int primeNum(int num){for(int i=2;i*i<=num;i++)//i 不需要遍历到num{if(!(num%i))//如果能整除则不为素数return 0;}return num;}void main(){int i;cout<<"请输入一个整数:";cin>>i;int a = primeNum(i);if(a)cout<<i<<"是素数"<<endl;elsecout<<i<<"不是素数"<<endl;}[程序测试][习题2] 编写一个计算组合数的函数combinNum(int m,int n)。

计算结果由函数返回。

[问题分析或算法设计][数据需求][程序实现]#include <iostream>using namespace std;int combinNum(int m,int n){int ans=1;for(int i=m;i>=m-n+1;i--)//从m一直乘到m-n+1ans*=i;for(int i=n;i>1;i--)//除以n的阶乘ans/=i;return ans;}void main(){int m,n;cout<<"请输入两个整数m,n:";cin>>m>>n;if(m<n)cout<<"m应该大于n!"<<endl;else if(m>n)cout<<combinNum(m,n)<<endl;elsecout<<1<<endl;}[程序测试][习题3] 已知xsh x sh shx sh y 32)1(++=,其中,sh 为双曲正弦函数,即2)(tt e e t sh --=,编写一个程序,输入x 的值,求y 的值。

[问题分析或算法设计][数据需求][程序实现]#include <iostream>#include <cmath>using namespace std;double fun(int x){return sinh(1+sinh(x))/(sinh(2*x)+sinh(3*x));}//sinh 为库函数中的双曲正弦void main(){int a;cout<<"请输入一个数:";cin>>a;cout<<fun(a)<<endl;}[程序测试][习题4] 整数a,b 的最大公约数是指既能被a 整除又能被b 整除的最大整数。

整数a,b 的最小公倍数是指既是a 的倍数又是b 的倍数的最小整数。

编写两个函数,一个函数gcd()的功能是求两个整数的最大公约数,另一个函数mul()的功能是求两个整数的最小公倍数。

[问题分析或算法设计][数据需求][程序实现]#include <iostream>using namespace std;int gcd(int a,int b){int t;while(b){t=a;a=b;b=t%b;}return a;}int mul(int a,int b,int c){return a*b/c;}void main(){int a,b,c,d;cout<<"请输入两个数:";cin>>a>>b;c=gcd(a,b);d=mul(a,b,c);cout<<"最大公约数为"<<c<<" 最小公倍数为"<<d<<endl;} [程序测试]六.简答题1.小结函数的定义及调用方法;定义一个函数要有返回值和参数。

同时返回值和参数都可以是空void类型。

在返回值不为void的时候,一定要在函数内部出现return语句。

调用的时候,直接写出函数名及其参数就可以。

2.小结函数中形参和实参的结合规则;只需要变量的类型相同,对应的顺序相同。

变量名无需相同。

3.编写和调试包含多模块的程序时,容易出现什么样的错误?根据自己的实践总结一下。

容易出现的错误的,变量或函数命名重复。

还有就是找不到标识符。

七、选做题1.根据实验内容第4题,修改函数gcd(),函数gcd()采用递归调用的编写方法,两个整数a和b的最大公约数的递归公式是:如果b=0,那么gcd(a,b)=x,否则gcd(a,b)= gcd(b,a%b)。

然后将最大公约数与两个整数a、b一起传递给函数mul(),求出最小公倍数,再由函数mul()将最小公倍数返回主函数。

#include <iostream>using namespace std;int gcd(int a,int b){return b?gcd(b,a%b):a;}int mul(int a,int b,int c){return a*b/c;}void main(){int a,b,c,d;cout<<"请输入两个数:";cin>>a>>b;c=gcd(a,b);d=mul(a,b,c);cout<<"最大公约数为"<<c<<" 最小公倍数为"<<d<<endl;}2 .根据实验内容第4题,修改程序,采用全局变量的处理方法,将最大公约数和最小公倍数都设为全局变量,分别用函数gcd()和函数mul()求最大公约数和最小公倍数,但其值不是由函数返回,而是通过全局变量在函数之间传递的特性将结果反映在主函数中。

#include <iostream>using namespace std;int c,d;void gcd(int a,int b){if(b)gcd(b,a%b);elsec=a;}void mul(int a,int b){d = a*b/c;}void main(){int a,b;cout<<"请输入两个数:";cin>>a>>b;gcd(a,b);mul(a,b);cout<<"最大公约数为"<<c<<" 最小公倍数为"<<d<<endl;}七、实验总结通过这个实验,加深了对递归算法、函数返回值以及全局变量的理解。

相关文档
最新文档