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算法描述流程图
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 实验心得
编写一个程序必须按部就班,先想好算法,再进行编译,如果图快,则只会给自己带来麻烦。
石家庄铁道大学
面向对象程序设计上机实验报告
学 院 信息科学与技术学院
年 级 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.通过指针或引用可以指向并访问派生类的对象。
C++程序设计实验报告学号:姓名:班级:指导老师:实验一、字符和格式的输出实验一,实验目的1、重点把握各种内部数据类型、数值和逻辑…
C语言程序设计实验报告1实验目的(1)掌握函数的定义方法、调用方法、参数说明以及返回值;(2)掌握实参与形参的对应关系,以及参数之…
学生实验报告册(理工类)课程名称:JAVA程序设计实验专业班级:M11计算机科学与技术II学生学号:学生姓名:所属院部:XX学院指…
西南交通大学程序设计综合实验实验地点实验学期学生班级学生学号学生姓名任课教师龚勋信息科学与技术学院20xx年4月实验一ATM机用户…
C语言程序设计实验报告学号不告诉你哦班级信管一班姓名你猜猜哈哈一实验题目一编程实验猜数问题输入两个整数并求这两个整数的和输入所猜的…
《课程设计报告》的格式要求撰写课程设计报告参考格式:题目(居中,小三号黑体字)学生姓名(学号)(学生姓名之间两格)(一律采用五号宋…
信息科学与工程学院高级语言程序设计课程设计报告学生成绩管理系统学科专业计算机科学与技术班级1301学号指导教师唐郑熠讲师学生二零年…
课程设计报告C课程设计简单计算器学院专业名称班级学号学生姓名指导教师计算机与通信工程物联网工程敬茂华20xx年月日东北大学秦皇岛分…
苏州科技学院天平学院模拟电子技术课程设计报告课设名称正弦波方波三角波信号发生器设计专业班级电子信息工程物联网1221学号姓名张琪梁…
课程名称课程设计题目院别矿业与安全工程学院专业安全技术及管理姓名学号同组人员指导教师段汉文目录第一章系统设计分析311设计要求31…
华中科技大学电子科学与技术系课程设计报告(20--xx年度第学期)名称:软件课程设计题目:院系:班级:学号:学生姓名:指导教师:设…