计算机程序设计基础
(C++)
实验报告
计算机基础教育中心
二O##年三月
实验__1__实验报告
教学班级:_______ 学生学号:__________ 学生姓名:___________
实验日期:___________ 实验地点:_________(机房)
指导教师签名:__________ 实验成绩:___________
一、实验目的
1.熟悉Visual studio 6.0集成开发环境;
2.学习新建和打开控制台应用程序的方法;
3.通过运行示例程序了解程序开发过程;
二、实验任务
1. 输出下面图形:
####
####
####
2.输入一摄氏温度,输出显示所转换的华氏温度。
(提示:摄氏温度=(华氏温度-32)×5/9)
三、实验结果(源程序 + 注释)
#include<iostream>
using namespace std;
void main()
{
cout<<"####\n"
<<"####\n"
<<"####\n"<<endl;
}
#include <iostream>
using namespace std;
void main()
{
double a,b;
cout<<"请输入摄氏温度:";
cin>>a;
b=5/9*a+32;
cout<<"华氏温度为:"<<b<<endl;
}
实验__2__实验报告
教学班级:_______ 学生学号:__________ 学生姓名:___________
实验日期:___________ 实验地点:_________(机房)
指导教师签名:__________ 实验成绩:___________
一、实验目的
1.掌握对一般数据的输入和输出格式控制方法;
2.掌握对实型数据输出形式的设置和小数位数的控制方法;
3.了解数据输入的相关注意事项。
二、实验任务
1. 输入一台计算机的编号和该计算机的价格,并输出这些信息。(如编号为10987654321,价格为5 998.00元,注意此处计算机的编号作为一个整数而言超出了int所定义的变量的存储范围,因此只能用double型变量来存储,但输出时要求看见的是整数形式的编号)
2. 已知圆半径r、圆柱高h, 要求输入圆半径、圆柱高,输出圆面积、圆柱体表面积、圆柱体体积,输入有提示信息、输出有文字说明(每项输出结果占一行)。
三、实验结果(源程序 + 注释)
#include<iostream>
#include<iomanip>;
using namespace std;
void main()
{
double a,b;
cin>>a>>b;
cout<<setiosflags(ios::fixed)<<setprecision(0)<<a<<endl;
cout<<setiosflags(ios::fixed)<<setprecision(2)<<b<<endl;
}
#include<iostream>
using namespace std;
void main ()
{ double r,h,area,surface,column;
const double PI=3.14;
cout<<"请输入半径:"<<endl;
cin>>r;
cout<<"请输入圆柱高:"<<endl;
cin>>h;
area=PI*r*r;
surface=2*PI*r*h+2*PI*r*r;
column=PI*r*r*h;
cout<<"圆面积为:"<<area<<endl;
cout<<"圆柱体表面积为:"<<surface<<endl;
cout<<"圆柱体体积为:"<<column<<endl;
}
实验__3__实验报告
教学班级:_______ 学生学号:__________ 学生姓名:___________
实验日期:___________ 实验地点:_________(机房)
指导教师签名:__________ 实验成绩:___________
一、实验目的
1. 掌握“处理某一或某些操作只有在特定条件成立的情况下才会被执行”的编程思路
和方法;
2. 掌握“一路分支选择结构”算法的实现语句,if语句的使用方法;
3. 掌握“二路分支选择结构”算法的实现语句,if-else语句的使用方法;
二、实验任务
1. 输入a,b,c,d四个整数,输出其中的最大数。
2.已知一函数,输入x的值,求解并输出相应的y值。
(提示:该题根据x的取值范围采用不同公式来计算y的值。显然采用if选择结构可实现该程序。)
三、实验结果(源程序 + 注释)
#include <iostream>
using namespace std;
void main()
{
int a,b,c,d,max;
cout<<"请输入a,b,c,d:";
cin>>a>>b>>c>>d;
if(a>b&&a>c&&a>d)
max=a;
else
if(b>c&&b>d)
max=b;
else
if(c>d)
max=c;
else
max=d;
cout<<"max="<<max<<endl;
}
#include<iostream>
using namespace std;
void main()
{
double x,y;
cout<<"请输入x的值:"<<endl;
cin>>x;
if(x<1)
y=x;
if(x>=1&&x<=10)
y=2*x-1;
if(x>=10)
y=3*x-11;
cout<<"y="<<y<<endl;
}
实验__4__实验报告
教学班级:_______ 学生学号:__________ 学生姓名:___________
实验日期:___________ 实验地点:_________(机房)
指导教师签名:__________ 实验成绩:___________
一、实验目的
1.掌握“多路分支选择结构”算法的实现语句,switch语句的使用方法;
2.学习通过程序调试来跟踪程序运行过程,查看程序运行过程中各个变量的取值变化
情况。
二、实验任务
1. 实现一个简单的菜单程序,运行时显示
Menu:
A(dd)
D(elete)
S(ort)
Q(uit)
Select one:
要求用户提供相应的输入,并在用户输入A,D,S时分别提示“数据已经增加、删除、排序”,输入为Q时程序结束。
(提示:该程序要求用户输入特定的A,D,S,Q字符显示相应信息,所以适合采用switch结构。)
2. 某公司进行产品销售,既零售也批发,零售的价格与批发的价格不同,购买产品数量的多与少其价格也不同。具体标准见下表:
要求输入所购商品数量,输出购买总价。
三、实验结果(源程序 + 注释)#include <iostream>
using namespace std;
void main()
{
char op;
cout<<"menu:"<<endl;
cout<<"A(dd)"<<endl;
cout<<"D(elect)"<<endl;
cout<<"S(ort)"<<endl;
cout<<"Q(uit)"<<endl;
cin>>op;
switch(op)
{
case'A':
cout<<"数据已经增加"<<endl;break;
case 'D':
cout<<"数据已经减少"<<endl;break;
case 'S':
cout<<"数据已经排序"<<endl;break;
case 'Q':
break;}
}
#include <iostream>
using namespace std;
void main()
{double x,y;
cout<<"请输入购买数量:"<<endl;
cin>>x;
if(1<=x<=20)
y=18*x;
else
if(20<x<=50)
y=15*x;
else
if(50<x<=200)
y=10*x;
else
if(200<x<=1000)
y=8*x;
else
if(x>1000)
y=6*x;
cout<<"y="<<y<<endl;
}
实验__5__实验报告
教学班级:_______ 学生学号:__________ 学生姓名:___________
实验日期:___________ 实验地点:_________(机房)
指导教师签名:__________ 实验成绩:___________
一、实验目的
1.掌握“处理某一或某些操作需要被有条件地重复执行”的编程思路和方法;
2.掌握“当型型循环结构”算法的实现语句之一while循环语句的使用方法;
3.掌握“直到型循环结构”算法的实现语句do-while循环语句的使用方法;
4.掌握“当型型循环结构”算法的实现语句之一for循环语句的使用方法。
二、实验任务
1.计算。
2.输出100以内所有能被7整除且个位是4的整数。
三、实验结果(源程序 + 注释)
实验__6__实验报告
教学班级:_______ 学生学号:__________ 学生姓名:___________
实验日期:___________ 实验地点:_________(机房)
指导教师签名:__________ 实验成绩:___________
一、实验目的
1.掌握循环与选择结构的嵌套的使用方法;
2.掌握嵌套循环的使用方法;
3.练习continue和break语句的使用方法。
二、实验任务
1. 计算1+3+32+33+……+310。
2. 用循环结构语句编程并输出下图:
*
* *
* *
* *
* *
* *
*
三、实验结果(源程序 + 注释)
实验__7__实验报告
教学班级:_______ 学生学号:__________ 学生姓名:___________
实验日期:___________ 实验地点:_________(机房)
指导教师签名:__________ 实验成绩:___________
一、实验目的
1.掌握对一组同类型的数据进行插入、删除、排序和查找等的常用算法;
2.掌握数值型一维数组的使用方法;
二、实验任务
1. 输入n个数,输出其中的最大数,并将所有小于n个数平均值的那些数输出。
2. 设有有序(值从大到小)的两组数据,将这两组数据有序合并(合并过程数据始终保持有序)。
(提示:两组原始数据用一维数组a,b表示,合并后的数据用一维数组c表示,ia,ib分别代表当前待放入到数组c中去的数组a,b的下标,ic指向数组c中当前存放数据的下标,如下图所示。)
三、实验结果(源程序 + 注释)
#include<iostream>
using namespace std;
void main(void)
{ const int N=2,M=3,Y=5;
int a[N],b[M],c[Y],i=0,j=0,t=0;
cout<<"请从大到小输入a[0]~a[1]:";
for(i=0;i<N;i++)
{
cin>>a[i];
}
for(i=0;i<N;i++)
{
cout<<a[i];
}
cout<<"请从大到小输入b[0]~b[2]:";
for(i=0;i<M;i++)
cin>>b[i];
for(i=0;i<Y;i++)
{ if(i<N)
c[i]=a[i];
else
c[i]=b[i-2];
cout<<c[i];
}
for(i=0;i<Y-1;i++)
{ for(j=i+1;j<Y;j++)
if(c[j]>=c[i])
{t=c[i];c[i]=c[j];c[j]=t;}
}
cout<<"c组数据从大到小的顺序为:"<<endl;
for(i=0;i<=4;i++)
cout<<"c["<<i<<"]="<<c[i]<<endl;
}
#include <iostream>
using namespace std;
void main()
{
int n = 3,i;
float a[3],sum=0,ave,max;
cout<<"请输入3个数"<<endl;
for(i=0;i<n;i++)
cin>>a[i];
max=a[0];
for(i=0;i<5;i++)
{if(a[i]>max)
max=a[i];}
cout<<"最大数为:"<<max<<endl;
for(i=0;i<n;i++)
sum=sum+a[i];
ave=sum/n;
for(i=0;i<n;i++)
if(a[i]<ave)
{cout<<"小于平均值的数有"<<endl;
cout<<a[i]<<','<<endl;}
}
实验__8__实验报告
教学班级:_______ 学生学号:__________ 学生姓名:___________
实验日期:___________ 实验地点:_________(机房)
指导教师签名:__________ 实验成绩:___________
一、实验目的
1.掌握对一组同类型的数据进行插入、删除、排序和查找等的常用算法;
2.掌握二维数值型数组的使用方法;
二、实验任务
1. 从键盘输入一个四行四列的实数矩阵到一个二维数组中,求出主对角线上元素之和。
2. 输出以下杨辉三角形。
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
三、实验结果(源程序 + 注释)
实验__9__实验报告
教学班级:_______ 学生学号:__________ 学生姓名:___________
实验日期:___________ 实验地点:_________(机房)
指导教师签名:__________ 实验成绩:___________
一、实验目的
1.熟练指针变量的使用,了解其编程技巧;
2.熟练指针变量做函数参数,了解其传递过程;
3.熟练指向数组元素的指针,了解指针引用数组元素的编程技巧。
二、实验任务
1. 使用指针法在的一组数据中,找出其中最小值所在的位置并输出。
2. 使用指针法对一维数组a中的数据按升序排列。
三、实验结果(源程序 + 注释)
#include<iostream>
using namespace std;
void main()
{ int a[4]={4,3,2,1},*p,*min;
min=a;
cout<<"数组a的数值为:"<<endl;
for(p=a;p-a<4;p++)
{cout<<*p<<" ";
if(*p<*min)min=p;}
cout<<endl;
cout<<"最小值为"<<*min<<"位于第"<<min-a+1<<"个数据"<<endl;
}
#include<iostream>
using namespace std;
void main()
{ int a[7]={10,52,69,25,23,62,85},*p,t,i;
cout<<"排序前数组顺序:"<<endl;
for(p=a;p-a<7;p++)
cout<<*p<<" ";
for(i=0;i<7;i++)
{
for(p=a;p-a<7-1-i;p++)
{
if(*p>*(p+1))
{t=*p;*p=*(p+1);*(p+1)=t;}
}
}
cout<<"排序后数组顺序:"<<endl;
for(p=a;p-a<7;p++)
cout<<*p<<" ";
}
实验__10__实验报告
教学班级:_______ 学生学号:__________ 学生姓名:___________
实验日期:___________ 实验地点:_________(机房)
指导教师签名:__________ 实验成绩:___________
一、实验目的
1.了解存放常用的系统函数的头文件;
2.掌握常用系统函数的功能和使用方法;
3.掌握返回值的概念和运用。
二、实验任务
1. 接受用户输入的数值,计算该数的绝对值和该绝对值以10为底的对数值,并输出计算结果。
(提示:使用内置的绝对值函数和对数函数。)
2. 编写两个子函数,分别求两个整数的最大公约数和最小公倍数,并编写主函数调用这两个子函数,输出结果,两个整数由键盘输入。
三、实验结果(源程序 + 注释)
#include <iostream>
#include <cmath>
using namespace std;
void main()
{
double a,b,c;
cout<<"请输入a的值"<<endl;
cin>>a;
b=fabs(a);
c=log10(b);
cout<<"a的绝对值是"<<b<<endl;
cout<<"b以10为底的对数值是"<<c<<endl;
}
#include <iostream>
using namespace std;
void main()
{
int a,b,m,n;
int swap1(int,int);
int swap2(int,int);
cout<<"请输入a,b的值"<<endl;
cin>>a>>b;
swap1(a,b);
m=swap1(a,b);
cout<<"a,b的最大公约数为"<<m<<endl;
swap2(a,b);
n=swap2(a,b);
cout<<"a,b的最小公倍数为"<<n<<endl;
}
int swap1(int a,int b)
{int m;
for(m=a;m>0;m--)
if(a%m==0&&b%m==0)
break;
return m;
}
int swap2(int a,int b)
{int n;
for(n=a;n<=a*b;n++)
if(n%b==0&&n%a==0)
break;
return n;
}
实验__11__实验报告
教学班级:_______ 学生学号:__________ 学生姓名:___________
实验日期:___________ 实验地点:_________(机房)
指导教师签名:__________ 实验成绩:___________
一、实验目的
1.掌握自定义有返回值函数的概念、定义及使用;
2.掌握自定义void函数的概念、定义及使用;
3.掌握自定义有返回值函数与自定义void函数在定义及使用上的区别;
4.掌握函数参数间的数据传递。
二、实验任务
1. 设计一个程序,用来计算输入的两个整数的加、减、乘、除,每一个计算要单独用一个用户自定义的void函数来实现,接收输入数据也要用void函数来实现,输入数据中不包含0。
2. 将键盘输入的10个整数按从小到大的顺序排序(选择法),要求排序功能用自定义函数实现。
三、实验结果(源程序 + 注释)#include <iostream>
#include<iostream>
using namespace std;
void main()
{int a=0,b=0;
void add(int,int);
void sub(int,int);
void mul(int,int);
void divide(double,double);
cout<<"input a,b:";
cin>>a>>b;
if(a==0||b==0)
{cout<<"数据不符合要求,重新输入:"<<endl;
cout<<"input a,b:";
cin>>a>>b;}
add(a,b);
sub(a,b);
mul(a,b);
divide(a,b);
}
void add(int a,int b)
{cout<<a<<"+"<<b<<"="<<a+b<<endl;}
void sub(int a,int b)
{cout<<a<<"-"<<b<<"="<<a-b<<endl;}
void mul(int a,int b)
{cout<<a<<"*"<<b<<"="<<a*b<<endl;}
void divide(double a,double b)
{cout<<a<<"/"<<b<<"="<<a/b<<endl;}
#include<iostream>
using namespace std;
void main()
{
void xx();
xx();
}
void xx()
{int const N=20;
int i,j,t,n,a[N];
cout<<"请输入n:";
cin>>n;
cout<<"请输入"<<10<<"个数"<<endl;
for(i=0;i<n;i++)
cin>>a[i];
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(a[i]>a[j])
{t=a[i];a[i]=a[j];a[j]=t;}
cout<<"已知数从小到大排序为"<<endl;
for(j=0;j<n;j++)
cout<<a[j]<<" ";
cout<<endl;
}
实验__12__实验报告
教学班级:_______ 学生学号:__________ 学生姓名:___________
实验日期:___________ 实验地点:_________(机房)
指导教师签名:__________ 实验成绩:___________
一、实验目的
1.建立文件、读写文件的操作;
2.文件指针的定位操作。
二、实验任务
1.编写一个程序,用来从键盘读取本班同学的期末成绩,并把该成绩保存在score.dat文件中。Score.dat文件内容如下:
number Chinese English C
1 87 76 67
2 67 87 65
3 76 88 87
4 46 89 88
2.编写一个程序,用来读取上题创建的score.dat数据文件,并计算其平均成绩和期末总成绩。把计算的结果存在statistics.dat文件中,并输出成绩有不及格的学生的学号。其格式如下:
number Chinese English C total average
1 87 76 67 230 76.67
2 67 87 65 219 73
3 76 88 87 251 83.67
4 46 89 88 223 74.3
三、实验结果(源程序 + 注释)