程序设计实验报告模板

C语言程序设计实验报告

 1 实验目的

(1) 掌握函数的定义方法、调用方法、参数说明以及返回值;

(2) 掌握实参与形参的对应关系,以及参数之间的“值传递”的方式;

(3) 掌握函数的嵌套调用及递归调用的设计方法;

(4) 在编程过程中加深理解函数调用的程序设计思想。

2 实验内容

(1) 编辑、编译、运行实验指导中给出的程序,并分析输出结果。

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

(3) 输入3个整数,求最大值和最小值。

(4) 编写函数mulNum(int a,int b),它的功能是用来确定a和b是否是整数倍的关系。如果a是b的整数倍,则函数返回值为1,否则函数返回值为0。

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

3算法描述流程图

https://upload.fanwen118.com/wk-img/img100/2321681_1.jpg

4 源程序

(1)

#include<stdio.h>

#include<math.h>

int computernum(int x)

{

int a,b,c,d,e,sum;

sum=0;

x=abs(x);

a=x/10000;

b=(x%10000)/1000;

c=(x%1000)/100;

d=(x%100)/10;

e=x%10;

sum=a+b+c+d+e;

return sum;

}

main()

{

int a,b;

printf("please a number :");

scanf("%d",&a);

b=computernum(a);

printf("the sum of all digits is %d",b);

}

(2)

#include<stdio.h>

#include<math.h>

main()

{

int a,b,i;

printf("please input a number x=");

scanf("%d",&a);

b=(int)sqrt(a);

for(i=2;i<=b;i++)

{

if(a%i==0)

printf("x is not a prime number");

}

if(i>=b)

{

printf("x is prime number");

}

}

(3)

#include<stdio.h>

int zuida(int a,int b,int c)

{

if(a>=b)

a=a;

if(a<=b)

a=b;

if(a>=c)

a=a;

if(a<=c)

a=c;

return a;

}

int zuixiao(int a,int b,int c)

{

if(a>=b)

a=b;

if(a<=b)

a=a;

if(a>=c)

a=c;

if(a<=c)

a=a;

return a;

}

main()

{

int a,b,c,e,f;

printf("please input three number:");

scanf("%d%d%d",&a,&b,&c);

e=zuida(a,b,c);

f=zuixiao(a,b,c);

printf("zuidashu is %d zuixiaoshu is %d",e,f);

}

(4)

#include<stdio.h>

int mulnum(int a,int b)

{

if(a%b==0)

printf("%d is a multiple of %d\n",a,b);

else

printf("%d is not a multipiple of %d\n",a,b);

}

main()

{

int a,b;

printf("please input two number:");

scanf("%d%d",&a,&b);

mulnum(a,b);

}

(5)

#include<stdio.h>

int gcd(int a,int b)

{

int i,c,d;

if(a>=b)

c=b;

else

c=a;

for(i=c;i>=1;i--)

{

if(a%i==0&&b%i==0)

return i;

}

}

int mul(int a,int b)

{

int i,c,d;

if(a>b)

c=a;

else

c=b;

for(i=c; ;i++)

{

if(i%a==0&&i%b==0)

return i;

}

}

main()

{

int a,b,c,d;

printf("please input two number:");

scanf("%d,%d",&a,&b);

c=gcd(a,b);

d=mul(a,b);

printf("beishu is %d yueshu is %d",d,c);

}

5 测试数据

(1)12345

(2)13

(3)1,2,3

(4)12,5

(5)12,15

6 运行结果

(1)15

(2)13 is a prime number

(3)三个数中最大的是3,最小的是1

(4)12和5不是整数倍关系,函数返回值是0

(5)12和15的最大公约数为3,最小公倍数为60

7 出现问题及解决方法

8 实验心得

编写一个程序必须按部就班,先想好算法,再进行编译,如果图快,则只会给自己带来麻烦。

 

第二篇:C语言程序设计实验报告模板

石家庄铁道大学

面向对象程序设计上机实验报告

学 院 信息科学与技术学院

年 级 20XX 级

班 级

姓 名

学 号

20XX年5月7日

5、多态编程

一 实验名称:多态编程

二.实验环境:windows XP系统,VC++6.0软件

三.实验目的:1、了解多态性实现的方法。

2、熟练掌握运算符重载的方法。

3、掌握虚函数和纯虚函数的概念。

4、掌握抽象类的概念及使用方法。

四.实验内容:

1、定义一个抽象类几何图形类Geometric_shape,包含三个成员函数:计算周长perimeter、计算面积area、绘制draw,圆类Circle、矩形类Rectangle和三角形类Triangle都继承于Geometric_shape,在主函数中,定义一个几何图形类Geometric_shape的指针分别定义指向圆类Circle、矩形类Rectangle和三角形类Triangle的对象,并调用其成员函数完成计算周长、计算面积和绘制图形的功能。

2、输入下面的程序,观察程序的执行结果,体会纯虚函数和抽象类的概念。

#include <iostream.h>

class number

{ protected:

int value;

public:

number(int i ) { value=i; }

virtual void show()=0;

};

class hextype: public number

{ public:

hextype (int x ):number(x) { }

void show() { cout <<hex<<value<<endl; }

};

class octtype: public number

{ public:

octtype (int x ):number(x) { }

void show() { cout <<oct<<value<<endl; }

};

3、比较下面两个程序的执行结果,掌握多态性。

//程序1

#include <iostream.h>

class A

{ int x,y;

public :

A(int i,int j) { x=i; y=j; }

void disp()

{ cout <<"x="<<x<<" y="<<y<<endl; }

};

class B:public A

{ int z;

public:

B(int i,int j,int k): A(i,j)

{ z=k; }

void disp()

{ cout <<"z="<<z<<endl; }

};

void main()

{ A a(50,100),*pa; B b(1,2,3);

a.disp();

b.disp();

pa=&a; pa->disp();

pa=&b; pa->disp();

}

//程序2

#include <iostream.h>

class A

{ int x,y;

public :

A(int i,int j)

{ x=i; y=j; }

virtual void disp()

{ cout <<"x="<<x<<" y="<<y<<endl; }

};

class B:public A

{ int z;

public:

B(int i,int j,int k): A(i,j) { z=k; }

virtual void disp() //此处的virtual 可不写

{ cout <<"z="<<z<<endl; }

};

void main()

{ A a(50,100),*pa;

B b(1,2,3);

a.disp();

b.disp();

pa=&a; pa->disp();

pa=&b; pa->disp();

}

五.实验步骤:

1.#include<iostream>

#include<cmath.>

#define double PI 3.1415926

using namespace std;

class Geometric_shape{

public:

virtual double perimeter()=0;

virtual double area()=0;

virtual void draw()=0;

};

class Circle:public Geometric_shape{

public:

double perimeter();

double area();

void draw();

private:

double r;

double zc;

double mj;

};

class Rectangle:public Geometric_shape{

public:

double perimeter();

double area();

void draw();

private:

double h,w;

double zc;

double mj;

};

class Triangle:public Geometric_shape{

public:

double perimeter();

double area();

void draw();

private:

double a,b,c;

double zc;

double mj;

};

Circle::Circle(double r1)

{

r=r1;

}

double circle::perimeter(){

zc=2*PI*r;

}

double circle::area(){

mj=PI*r*r;

}

//

void circle::draw(){

Rectagle::Rectagle(double h1,double w1){

h=h1;

w=w1;

}

double Rectagle::perimeter(){

zc=2*(h+w);

}

double Rectagle::area(){

mj=h*w;

}

Triangle::Triangle(double a1,double b1,double c1){

a=a1;

b=b1;

c=c1;

}

double Triangle::perimeter(){

zc=a+b+c;

}

double Triangle::area(){

mj=sqrt(zc/2*(zc-a)(zc-b)(zc-c));

}

void main(){

Geometric shape *Gs;

Gs=○

Gs=&rec;

Gs=&tria;

circle cir;

Gs->perimeter();

Gs->area();

Gs->draw();

cout<<"圆周长为:"<<zc<<endl;

cout<<"圆面积为:"<<mj<<endl;

Rectagle rec;

Gs->perimeter();

Gs->area();

Gs->draw();

cout<<"矩形周长为:"<<zc<<endl;

cout<<"矩形面积为:"<<mj<<endl;

Triangle tria;

Gs->perimeter();

Gs->area();

Gs->draw();

cout<<"三角形周长为:"<<zc<<endl;

cout<<"三角形面积为:"<<mj<<endl;

}

2.概念:纯虚函数:是在一个基类中声明的的虚函数,他在该基类中没有定义具体的操作内容,要求各派生类根据实际需要给出各自的定义。

抽象类:带有纯虚函数的类。

3.程序1运行结果:x=50 y=100

z=3

x=50 y=100

x=1 y=2

程序2运行结果:x=50 y=100

z=3

x=50 y=100

z=3

六.心得体会:

1.虚函数的作用是实现运行时的多态性。

2.抽象类不能实例化。

3.通过指针或引用可以指向并访问派生类的对象。

相关推荐