四川师范大学数学与软件科学学院程序设计实验报告实验六
- 格式:doc
- 大小:234.00 KB
- 文档页数:11
数学与软件科学学院面向对象程序设计实验报告学期: 2016至 2017 第 2 学期2017年 4 月11日课程名称:面向对象的程序设计专业:信息与计算机科学实验编号: 02 实验项目:函数和作用域指导教师:郭远华 2015 级 5 班学号:2015060536 姓名:谢佳欣 _____ 实验成绩:一、目的要求掌握c++中的static,extern,重载,函数模板,字符串操作,基本算法等知识点;二、实验内容1.P154第三大题第一小题,解释cout的输出。
#include<iostream>#define N 5using namespace std;void fun();void main(){for(int i(1);i<N;i++){fun();}getchar();}void fun(){static int a;int b(2);cout<<(a+=3,a+b)<<endl;}输出结果:分析:内部静态变量定义时有默认值,int型为02.P155第三大题第二小题,体会其中extern的用法。
用以下两种方法修改代码的方法会出错,分别指出编译连接中提示的错误。
(1)在原代码int x(20),y(5)前面加上static;分析:加static说明定义的是外部静态变量,而在main函数当中又声明x,y为外部变量,所以出现错误。
(2)将int x(20),y(5)这一行转移至main()中且在cout之后。
分析:加extern声明的变量为外部变量,外部变量的要求是定义在函数体外。
3.P156第三大题第五、八小题都实现了n!,分别说明两题中使用的主要思路。
分析:第五题使用了循环来求阶乘之和,第八题使用了函数的递归来实现阶乘。
4.P157第三大题第九小题,将函数改为void swap(int &x,int y),观察并解释输出结果。
#include<iostream>using namespace std;void swap(int &,int&);void main(){int a(5),b(8);cout<<"a="<<a<<","<<"b="<<b<<endl;swap(a,b);cout<<"a="<<a<<","<<"b="<<b<<endl; }void swap(int &x,int &y){int temp;temp=x;x=y;y=temp;}输出结果:修改之后:分析:程序对x使用了引用,而对y没有使用引用,所以对y变量来说是使用了传值调用,对形参的改变不影响实参,所以b还是8,而a使用礼物引用,对形参的改变影响了实参,所以a变成了8.5.解释P158第三大题第十小题的输出。
数学与软件科学学院实验报告2015年 5月 16日课程名称:C语言程序设计专业:信息与计算科学 2014 级 6 班实验编号:实验一指导教师:冯山姓名:杨帆学号:2014060634实验得分一、实验目的(1)熟悉所用计算机系统的基本操作方法以及在该系统下安装、编辑、编译、连接和运行一个C语言源程序的基本操作步骤(以Turboc C为基本背景);(2)学习基本的C语言程序设计与调试环境设置方法;(3)通过运行简单的C程序,了解C程序的特点。
二、实验内容(1)在系统安装TC环境;(2)配置好TC环境,熟悉TC编辑器的基本操作命令及其它基本功能;(3)完成并熟悉程序输入、编译、连接、运行过程,直到程序输出结果正确;(4)学习基本的调试程序方法(包含编译、连接错误信息的正确理解)。
三、实验准备(1) 计算机设备;(2) 程序调试环境的准备,如TC环境;(3) 实验源程序准备。
四、实验过程1、进入TC的编辑窗口,进行基本的环境设置;(1)执行TC子文件夹中的TC.EXE文件;(2)通过ALT+O(Options),然后选择D功能(Directories),设置基本寻找路径:1)LIB目录路径;2)INCLUDE目录路径;3)C程序代码所在目录路径;4) 结果输出目录路径;(3)通过ALT+O下的S功能(Save Options),将目录路径信息保存在TC配置文件TCCONFIG.TC中2、掌握基本的TC编辑操作方法和文件创建、保存方法;3、输入一个C源程序,进行编辑、编译、连接、运行。
完成一个简单的程序设计,运行输出正确结果。
五、结果及分析最简单的C语言程序:(1)编辑(2)编译(3)连接(4)运行(5)结果(6)保存(7)查找名字取得太长,被截取了(8)修改名字4、输入其它源程序并进行调试(注意错误提示信息);方法步骤同第三步(这里只列源程序和结果)(1)引用C语言函数库进行计算的程序:因为第一个例子没有换行,所以把上一个例子也显示出来了(2)引用自定义函数的C语言程序:分析:(3)求1+2+3+...+100代码如下:(4)5个数的最大者的代码如下:六、收获1、实验开始前要认真准备程序;2、程序在CT上运行时,要熟悉CT的工作机理,工作的原理和步骤环境。
数学与软件科学学院实验报告一、实验目得(1)掌握C语言环境下指针得声明、定义与使用方法;(2)掌握指针与变量以及指针与数组得关系;(3)掌握指针、数组之间得关系;(4)掌握指针、函数之间得关系。
二、实验内容1、熟悉指针得基本使用方法。
(1)请仔细分析以下程序段,并上机测试运行结果,对测试结果进行分析说明。
1)程序段一:#include 〈stdio、h〉main(){int i=3,j=7,k=9;printf(”i=%d,j=%d,k=%d”,*(&i),*(&j),*(&k));}2)程序段二:#include <stdio、h>main(){inta,*p;float b,*q;ﻩp=&a;ﻩq=&b;ﻩscanf("%d,%f”,p,q);ﻩ*p=a*(*q);printf(”a=%d,p=%d,*p=%d\n”,a,p,*p);printf("b=%f,q=%d,*q=%f\n”,b,q,*q);printf(”p+1=%d,q+1=%d",p+1,q+1);}2、想使指针变量pt1指向变量a与b中得大者,pt2指向其小者,以下程序能否实现此目得?为什么?如果不行,请给出实现得方法。
#include 〈stdio、h>s *p1,int*p2);main(){int a,b;ﻩint*p1,*p2,*p;ﻩscanf("%d,%d",&a,&b);ﻩp1=&a;ﻩp2=&b;if(a<b)ﻩ{ﻩﻩs);}elseﻩﻩprintf("%d,%d",*p1,*p2);}s *p1,int*p2){ﻩint *p;p=p1;ﻩp1=p2;ﻩp2=p;ﻩprintf(”%d,%d”,*p1,*p2);}3、请仔细分析教材例6-8~6-9,上机调试之。
记录并分析程序运行结果。
#include <stdio、h>main(){ﻩint *p1,*p2,*p,a,b;scanf(”%d,%d",&a,&b);p1=&a;p2=&b;if(a<b)ﻩ{ﻩp=p1;ﻩp1=p2;ﻩp2=p;}printf(”a=%d,b=%d\n”,a,b);printf(”max=%d,min=%d\n”,*p1,*p2);}三、实验准备(1) 编写所选实验题目得程序代码与流程图;(2)检查源程序并给出其可能得运行结果说明.四、实验步骤(1)上机验证所选题目,并做相应测试与分析;(2)进行实验分析;(3)总结指针及其程序设计、实现方法与经验;(4)编写实验报告.五、实验结果1、熟悉指针得基本使用方法。
数学与软件科学学院实验报告学期:2016 至2017 第 2 学期 2017 年 4 月24 日课程名称:面向对象的程序设计专业:信息与计算机科学实验编号: 03 实验项目: C++类与对象指导教师:郭远华 2015 级 5 班学号:2015060536姓名:谢佳欣实验成绩:一、目的要求掌握C++中的基本类的定义。
构造函数,静态成员,友元的特点。
二、实验内容分析原因。
1.请说明C++中类和C中的结构体的异同。
类是引用类型在堆上分配,类的实例进行赋值只是复制了引用,都指向同一段实际对象分配的内存类有构造和析构函数类可以继承和被继承结构:结构是值类型在栈上分配(虽然栈的访问速度比较堆要快,但栈的资源有限放),结构的赋值将分配产生一个新的对象。
结构没有构造函数,但可以添加。
结构没有析构函数结构不可以继承自另一个结构或被继承,但和类一样可以继承自接口;结构体和类都是提供了数据的封装和构造结构体主要是c语言的特色类是c++的基本机制结构体中的数据默认方式是public的,而类是private的结构体不提供继承机制,类提供继承机制,实现代码复用类可以实现多态,结构体不支持2.改写下面的类class student{public:void display(){cout<<”num”<<num<<endl;cout<<”name”<<score<<endl;}private:int num; //学号float score; //考分};(1)在类体中添加2个构造函数,一个形参为空,一个带2个形参(2个形参分别对2个私有成员赋值)。
在类中添加一个对数据成员赋值的公有成员函数set_value。
在main()中用2个构造函数分别定义2个对象stu1、stu2。
stu1引用set_value对自身私有成员进行设置。
然后stu1、stu2引用display进行输出。
c程序设计的实验报告C程序设计的实验报告介绍:C程序设计是计算机科学与技术专业中最基础、最重要的一门课程之一。
通过学习C语言,我们可以理解计算机底层的工作原理,培养编程思维和解决问题的能力。
本篇实验报告将介绍我在C程序设计实验中所进行的实验内容、过程和结果。
实验一:基本语法和数据类型在第一次实验中,我们学习了C语言的基本语法和数据类型。
通过编写简单的程序,我了解了C语言中的变量声明、赋值和运算符的使用。
同时,我还学习了整型、浮点型、字符型等不同的数据类型,以及它们在内存中的存储方式。
实验二:控制语句和循环结构在第二次实验中,我们学习了C语言中的控制语句和循环结构。
通过编写条件语句和循环语句,我可以实现程序的分支和循环执行。
这让我能够更好地控制程序的流程,实现不同的功能。
实验三:函数和指针在第三次实验中,我们学习了C语言中的函数和指针。
函数是C语言中的重要概念,通过函数的封装和调用,我们可以提高代码的复用性和可读性。
指针则是C语言中的难点,通过指针的使用,我们可以直接操作内存,实现高效的数据处理。
实验四:数组和字符串在第四次实验中,我们学习了C语言中的数组和字符串。
数组是一种存储相同类型数据的集合,通过数组,我们可以方便地存储和访问大量数据。
字符串则是字符数组的特殊形式,通过字符串的操作,我们可以实现对文本数据的处理。
实验五:文件操作和结构体在第五次实验中,我们学习了C语言中的文件操作和结构体。
通过文件操作,我们可以读写外部文件,实现数据的持久化存储。
结构体则是一种自定义的数据类型,通过结构体,我们可以将不同类型的数据组合在一起,形成更复杂的数据结构。
实验六:动态内存分配和链表在第六次实验中,我们学习了C语言中的动态内存分配和链表。
动态内存分配通过malloc和free函数,我们可以在程序运行过程中动态地申请和释放内存。
链表则是一种非常重要的数据结构,通过链表,我们可以实现高效的数据存储和操作。
实验七:综合实验在最后一次实验中,我们进行了一次综合实验,将之前学习的知识综合运用。
c 程序设计实验报告C程序设计实验报告一、引言C程序设计是计算机科学与技术专业中非常重要的一门课程,通过实验学习,我们可以更好地掌握C语言的基本语法和程序设计思想。
本次实验报告将对我所完成的C程序设计实验进行总结和分析。
二、实验目的本次实验旨在通过编写C程序,加深对C语言的理解,并掌握C语言的基本语法和程序设计方法。
同时,通过实验,我们还可以提高自己的编程能力和解决问题的能力。
三、实验内容本次实验分为两个部分,分别是基本语法练习和小项目实践。
1. 基本语法练习在基本语法练习中,我通过编写一系列小程序来巩固对C语言的掌握。
其中包括变量的定义和使用、运算符的使用、条件语句和循环语句的使用等等。
通过这些练习,我对C语言的基本语法有了更深入的了解,并能够熟练地使用这些语法来解决实际问题。
2. 小项目实践在小项目实践中,我选择了一个简单的学生成绩管理系统作为实践项目。
通过这个项目,我可以更好地理解和应用C语言的各种概念和技巧。
在这个项目中,我需要设计一个程序,能够实现学生成绩的录入、查询和统计功能。
通过这个实践项目,我不仅加深了对C语言的理解,还提高了自己的问题解决能力和编程能力。
四、实验过程在实验过程中,我首先通过学习C语言的相关教材和资料,掌握了C语言的基本语法和程序设计思想。
然后,我根据实验要求,逐步完成了实验中的各个小任务。
在完成每个小任务之后,我会进行测试和调试,确保程序的正确性和稳定性。
在实践项目中,我还进行了一些额外的功能扩展,以提高程序的实用性和用户体验。
五、实验结果通过本次实验,我成功地完成了所有的实验任务,并实现了学生成绩管理系统的基本功能。
在实验过程中,我遇到了一些问题,但通过查阅资料和与同学的讨论,我最终解决了这些问题。
通过实验,我不仅加深了对C语言的理解,还提高了自己的编程能力和解决问题的能力。
六、实验总结通过本次实验,我对C语言的基本语法和程序设计思想有了更深入的了解。
通过实践项目,我不仅掌握了C语言的各种概念和技巧,还提高了自己的问题解决能力和编程能力。
数学与软件科学学院实验报告2015年 6月 9日课程名称:C语言程序设计专业:信息与计算科学 2014级 6班实验编号:实验六指导教师:冯山姓名:杨帆学号:2014060634 实验得分一、实验目的(1)了解和掌握C语言环境下模块化程序设计的基础----基于函数模块的程序设计技术;(2) 复习C语言程序的基本结构特点,了解基于函数模块的程序模块及其调用关系、过程;(3) 函数的声明、定义、使用方法;(4) 对各种变量属性的使用方法;(5) 对C语言中常用的预编译命令的基本掌握。
二、实验内容函数的声明、定义和使用方法。
具体实例如下:(1) 编写一个在屏幕上画一条正弦曲线的函数;(2) 编写一个函数,它可以求出给定数的所有因子,如下形式显示其结果:72=2*2*2*3*3;(3) 分别写出一个求N个数的最大公约数和最小公倍数的递归函数;(4) 试编制n碟片hanoi塔的问题求解函数,并利用它求解4个盘片的结果;(5) 试编写求n!的函数,并求n=7的结果。
2.有关变量的属性实验(静态、动态、全局、局部等方面)。
(1) 仔细分析以下程序的执行结果,然后上机运行如下程序段,并对各个变量的属性及其使用结果进行比较分析:main(){ /******(a)******/int x=1;{/******(b)******/void prt(void);int x=3;prt();printf("The second x is %d\n",x);}/******(c)******/printf("The first x is %d\n",x);}void prt(void){ /******(d)******/int x=5;printf("The third x is %d\n",x);}/******(e)******/(2) 仔细分析下列程序,是否有错误之处?然后分析其执行结果,上机验证并对各个变量的存储属性及其结果进行比较分析:#define LOW 11#define HIGH 23#define CHANGE 12int i=LOW;main(){int workover(int i);int reset(int i);int i=HIGH;reset(i/2.5);printf("i=%d\n",i);reset(i=i/3);printf("i=%d\n",i);reset(i/2);printf("i=%d\n",i);workover(i);printf("i=%d\n",i);}workover(int i);{i=(i%i++)*((i*i)/(2*i)+4);printf("i=%d\n",i);return (i);}reset(int i);{i=i<=CHANGE?LOW:HIGH++;return (i);}(3) 以下程序希望打印5行"*****",能否做到?为什么?int i;main(){void prt();for (i=0;i<5;i++)prt();void prt(){for (i=0;i<5;i++)printf("%c",'*');printf("\n");}(4) 分析、编辑并执行以下程序,如果有错,请指出其错误原因,同时需要指出各个变量的存储属性。
数学与软件科学学院实验报告一、实验目的(1)了解和掌握C语言环境下模块化程序设计的基础----基于函数模块的程序设计技术;(2) 复习C语言程序的基本结构特点,了解基于函数模块的程序模块及其调用关系、过程;(3) 函数的声明、定义、使用方法;(4) 对各种变量属性的使用方法;(5) 对C语言中常用的预编译命令的基本掌握。
二、实验内容1.函数的声明、定义和使用方法。
具体实例如下:(1) 编写一个函数,它可以求出给定数的所有因子,如下形式显示其结果:72=2*2*2*3*3;#include <stdio.h>main(){int i,n;printf("please input:");scanf("%d",&n);while(n>=2){for(i=2;i<=n;i++){if(n%i==0){printf("%d\t",i);n=n/i;break;}}}}(2) 试编写求n!的函数,并求n=7的结果。
#include <stdio.h>main(){int i,j,n,s;printf("please input n:");scanf("%d",&n);s=1;for(i=2;i<=n;i++){s=s*i;}printf("%d",s);}具体要求如下:(1) 编写程序通过调试获得正确结果;(2) 分析函数的声明、定义和使用方法;(3) 分别分析函数调用时的参数传值调用方法。
2.有关变量的属性实验(静态、动态、全局、局部等方面)。
具体实例如下:(1) 仔细分析以下程序的执行结果,然后上机运行如下程序段,并对各个变量的属性及其使用结果进行比较分析:#include <stdio.h>main(){ /******(a)******/int x=1;{/******(b)******/void prt(void);int x=3;prt();printf("The second x id %d\n",x);}/******(c)******/printf("The first x is %d\n",x);}void prt(void){ /******(d)******/int x=5;printf("The third x is %d\n",x);}/******(e)******/(2) 仔细分析下列程序,是否有错误之处?然后分析其执行结果,上机验证并对各个变量的存储属性及其结果进行比较分析:#include <stdio.h>#define LOW 11#define HIGH 23#define CHANGE 12int i=LOW;main(){int workover(int i);int reset(int i);int i=HIGH;reset(i=i/2.5);printf("i=%d\n",i);reset(i=i/3);printf("i=%d\n",i);reset(i/2);printf("i=%d\n",i);workover(i);printf("i=%d\n",i);}workover(int i)i=(i%i++)*(i*i)/(2*i)+4;printf("i=%d\n",i);return(i);}reset(int i){i=i<=CHANGE?LOW:HIGH;return(i);}(3) 以下程序希望打印5行"*****",能否做到?为什么?#include <stdio.h>main(){void prt();int i;for(i=0;i<5;i++){prt();}}void prt(){int j;for(j=0;j<5;j++){printf("%c",'*');}printf("\n");}(4) 分析、编辑并执行以下程序,如果有错,请指出其错误原因,同时需要指出各个变量的存储属性。
#include <stdio.h>/*****file1.c*****/int last(void);int new(int);int reset(void);int i;main(void){int i,j;i=reset();for(j=1;j<=3;j++){printf("i=%d\t,j=%d\n",i,j);printf("next(i)=%d\t",next(i));printf("last(i)=%d\n",last());printf("new(i+j)=%d\n",new(i+j));}}int next(void){return(i++);}/******file2.c******/static int i=10;last(void){return(i=i-1);}new(int i){static int j=-5;return(i=j+=++i);}/*****file3.c*****/int i;reset()return(i);}3.预编译命令实验。
具体实例如下:(1)一般宏替换实验(教材例4.20和4.23);#include <stdio.h>int s(int n);main(){int i=1;while(i<=5)printf("%d\n",s(i++));}int s(int n){return(n*n);}(2) 带参数的宏替换(教材例4.25和习题4.15);#include <stdio.h>#define PI 3.1415926#define R 2.0#define AREA PI*R*Rmain(){printf("The area is:%f\n",AREA); }(3) 文件包含(#include ""和#include <>)。
#include <stdio.h>#define S(n) ((n)*(n))int i;main(){while(i<=5)printf("%d\n",S(i++));}三、实验准备(1) 编写所选实验题目的程序代码和流程图;(2) 检查源程序并给出其可能的运行结果说明。
四、实验步骤(1) 上机验证所选题目,并做相应测试和分析;(2) 进行实验分析;(3) 总结基于函数、宏等技术的模块化程序设计和实现方法及其经验;(4) 编写实验报告。
五、实验结果(1) 编写一个函数,它可以求出给定数的所有因子,如下形式显示其结果:72=2*2*2*3*3;(2) 试编写求n!的函数,并求n=7的结果。
2.有关变量的属性实验(静态、动态、全局、局部等方面)。
具体实例如下:(1) 仔细分析以下程序的执行结果,然后上机运行如下程序段,并对各个变量的属性及其使用结果进行比较分析:(2) 仔细分析下列程序,是否有错误之处?然后分析其执行结果,上机验证并对各个变量的存储属性及其结果进行比较分析:有错误,自定义函数后面不用加; HIGH后面应该加上自增符号.(3) 以下程序希望打印5行"*****",能否做到?为什么?不能,因为i是一个全局变量,当函数调用i后,i执行自定义函数后就直接变成了5,故只能打印一行.(4) 分析、编辑并执行以下程序,如果有错,请指出其错误原因,同时需要指出各个变量的存储属性。
定义i时,i前面不加exter,自定义函数中的fast改为last,自定义函数中的rturn(i-=1_)改为return(i=i-1).3.预编译命令实验。
具体实例如下:(1)一般宏替换实验(教材例4.20和4.23);(2) 带参数的宏替换(教材例4.25和习题4.15);(3) 文件包含(#include ""和#include <>)。