C及C++复习与补充、抽象数据类型实现
一、实验目的
1.复习高级程序设计语言的使用方法和编程环境,了解教材关于数据结构的表示和算法描述形式以便能顺利将教材所描述算法上机编程实践;
2.熟悉类C语言的书写规范,特别要注意值调用和引用调用的区别,以及如何转变成C/C++的源程序,熟悉指针变量作函数参数的基本用法,能将类C语言描述的算法转换成C/C++源程序上机调试并通过;
3.加深理解数据的逻辑结构和物理结构,学会分析基本的算法时间复杂度和空间复杂度;
4.了解抽象数据类型的定义、表示方法,实现一个抽象数据类型,并要注意:抽象数据类型需要借助固有的数据类型来表示和实现,即利用高级程序设计语言中已存在的数据类型来说明新的结构,用已经实现的操作来组合新的操作,具体实现的细节则依赖于所用语言的功能;
5.具体地,通过抽象散据类型三元组的表示和实现,掌握抽象数据类型的定义方式和用C语言的一般实现方法、C++的面向对象实现方法,并熟悉如何运用主函数检验各基本操作函数的正确性。
二、实验任务
1.认真阅读教材1.3节内容,并在vc环境调试运行该节全部算法(即算法1-2至算法1-9)对应程序;
2.查阅资料,认真阅读有关抽象数据类型的知识:抽象数据类型的概念,三元组的抽象数据类型定义及表示;
3.在计算机中实现上述三元组抽象数据类型。(选作)
三、实验过程与结果
1.
#include"stdafx.h"
# include<stdio.h>
# include<stdlib.h>
int main() {
//从键盘输人多个非零整数(以输入0时结束) ,求这些数的平均值
int x, count=0; //x用于存放输入的数值,count用于存放输入数的总个数
float aver=0.0; //aver用于存放平均值
scanf("%d",&x);
//cin>>x;
while(x!=0){
aver+=x;
count++;
scanf("%d",&x);}
if (count>0) aver/=count;
printf("aver=%f\n", aver);
system("pause");
}
2.
#include"stdafx.h"
#include<iostream>
using namespace std;
int sum(int n){
int total,i;
total=0;
i=1;
while(i<=n){
total+=i;
i++;
}
return total;
}
int main(){
int n;
cout<<"输入n:";
cin>>n;
cout<<"结果为:"<<sum(n)<<endl;
return 0;
}
3.
#include"stdafx.h"
#include<iostream>
#define MAX 3
using namespace std;
int sum3(int a[][MAX],int n){
int total,i,j;
total=0;
for(i=0;i<n;i++)
for(j=0;j<=i;j++)
total+=a[i][j];
return total;
}
int main(){
int a[MAX][MAX]={{1,2,7},{4,5,6},{9,8,9}}; //初始化矩阵
cout<<"结果为:"<<sum3(a,MAX)<<endl;
return 0;
}
4.
#include"stdafx.h"
#include<iostream>
#include<cmath>
using namespace std;
int isPrime(int n){
int i,k;
k=(int)sqrt((double)n);
for(i=2;i<=k;i++)
if(n%i==0)
break;
if(i>k)
return 1;
else
return 0;
}
int main(){
cout<<"输入要判断的数:";
int n;
cin>>n;
if(isPrime(n))
cout<<"是素数"<<endl;
else
cout<<"不是素数"<<endl;
return 0;
}

浙公网安备 33010602011771号