资源描述
一、 实验项目名称
Visual C++实验环境熟悉及C++语言初步
二、 实验目的
1.了解Visual C++的安装与使用
2.熟悉Visual C++程序的编辑、编译、运行及调试
3.熟悉简单 C/C++ 程序的基本组成。
4.掌握 C/C++ 程序中输入输出数据的基本方法。
5.掌握编译预处理命令的使用。
6.写出实验步骤 ,分析调试中出现的问题及解决方法,给出改进方案,写出程序文档和调试数据。
三、实验基本原理
四、主要仪器设备及耗材
PC微机
Windows 操作系统
Microsoft Visual C++6.0 程序集成环境
五、实验步骤、源程序及实验结果
1.下列程序是从键盘输入一个整数,然后计算它的平方并以十六进制的形式输出。请在 Visual C++ 输出、调试该程序。
#include "iostream.h"
void main( )
{ int x;
cin>>x;
int y=x*x;
cout<<"x*x=="<<hex<<y<<endl;
}
程序运行结果:
2.编写一个计算梯形面积的程序。 要求 梯形的上底、下底和高在变量初始化时直接赋值。
源程序:#include <iostream.h>
void main( )
{
float a,b,c,s;
a=3.0;
b=4.0;
c=5.0;
s=0.5*(a+b)*c;
cout<<"s="<<s<<endl;
}
程序运行结果:
3.编写 一个计算一个学生三门课平均成绩的程序。要求学生成绩从键盘输入。
源程序:#include <iostream.h>
void main( )
{
int a,b,c,d;
cin>>a>>b>>c;
d=(a+b+c)/3;
cout<<"d=="<<d<<endl;
}
程序运行结果
:
4.编写一个计算和估计地球重量的程序,并测试它。地球的半径为 6356.91 千 米,平均密度为每立方 米 5.52 吨。要求地球半径从键盘输入,地球密度定义成符号常量。
源程序:#include <iostream.h>
#define PI 3.14159
#define P 5.52e3
void main( )
{
float r,m;
cin>>r;
m=P*4/3*PI*r*r*r;
cout<<"m="<<m<<endl;
}
程序运行结果:
七、思考讨论题或体会或对改进实验的建议
八、参考资料
《C++程序设计》 杨长兴、刘卫国主编 中国铁道出版社
一、 实验项目名称
顺序结构程序
二、 实验目的
1.掌握Visual C++中的基本数据类型及常量、变量、运算符和表达式的使用;
2.学会运用已经学过的内容,设计简单的程序;
3.能阅读、分析、调试简单的程序。
4.写出实验步骤 ,分析调试中出现的问题及解决方法,给出改进方案,写出程序文档和调试数据。
三、实验基本原理
四、主要仪器设备及耗材
PC微机
Windows 操作系统
Microsoft Visual C++6.0 程序集成环境
五、实验步骤、源程序及实验结果
1.分析、调试下面的程序,并体会强制数据类型转换的意义。 本程序求 3位学生的平均成绩,并对第三位小数四舍五入后保留二位小数。
程序:
#include"iostream.h"
void main()
{ float s1,s2,s3;
double aver;
cout<<" 输入三个数据: :"<<endl;
cin>>s1>>s2>>s3;
aver=(s1+s2+s3)/3;
aver=aver*100+0.5;
aver=(int)aver;
aver=aver/100;
cout<<" 平均值 ="<<aver<<endl;
}
程序运行结果:
2.输入直角三角形的两条直角边长,调用平方根库函数sqrt求斜边的长度。
源程序:#include <iostream.h>
#include <math.h>
void main ()
{
float a,b,c;
cin>>a>>b;
c=sqrt(a*a+b*b);
cout<<"c="<<c<<endl;
}
程序运行结果:
3.输入直角坐标系中点P的坐标(x,y),若P点落在图2.2.2中的阴影区域内,输出阴影部分面积,否则输出数据0。
源程序:#include <iostream>
#include <cmath>
#define PI 3.14159
using namespace std;
int main ()
{
float x,y,z,s;
z=sqrt(x*x+y*y);
cout<<"请输入x,y:";
cin>>x>>y;
s=PI*4*4-PI*2*2;
if(z>2)
cout<<"s="<<s<<endl;
else
cout<<"s=0"<<endl;
return 0;
}
程序运行结果:
4.任意输入 3 个数据,输出它们的平均值和最小的一个数。
源程序:#include <iostream>
using namespace std;
int main ()
{
float s1,s2,s3;
double aver,min;
cout<<"请输入s1,s2,s3:";
cin>>s1>>s2>>s3;
aver=(s1+s2+s3)/3;
cout<<aver<<endl;
if(s1>s2&&s1>s3)
if(s2>s3)
cout<<"min="<<s3<<endl;
else
cout<<"min="<<s2<<endl;
else
cout<<"不存在"<<endl;
return 0;
}
程序运行结果:
5.将 " fly " 译成密码 " iob " 。编码规律:将字母 a变成字母d,即变成其后的第3个字母,x变成a,y变成b, z变成c。
(提示:用赋初值的方法使 c1、c2、c3的值分别为 ' f ' 、 ' l ' 、 ' y ' ,按编码规则改变 c1、c2、c3后,将结果输出。)
源程序:#include <iostream>
using namespace std;
void main()
{
char c1,c2,c3;
c1='f';c2='l';c3='y';
c1=c1+3;
c2=c2+3;
c3=c3-23;
cout<<c1<<c2<<c3<<endl;
}
程序运行结果:
七、思考讨论题或体会或对改进实验的建议
八、参考资料
《C++程序设计》 杨长兴、刘卫国主编 中国铁道出版社
一、 实验项目名称
分支结构程序
二、 实验目的
1.熟练掌握关系及逻辑表达式在程序设计中的灵活运用。
2.熟悉利用if语句的各种形式实现不同分支选择的方法。
3.掌握使用switch语句实现多分支选择的方法。
4.写出实验步骤 ,分析调试中出现的问题及解决方法,给出改进方案,写出程序文档和调试数据
三、实验基本原理
四、主要仪器设备及耗材
PC微机
Windows 操作系统
Microsoft Visual C++6.0 程序集成环境
五、实验步骤、源程序及实验结果
1.修改下面程序中的错误:
以下程序的功能是求两个非 0整数相除的商和余数。程序有五处错误(包括warning警告性错误),试找出它们加以修改,并上机验证修改结果。
#include "iostream.h"
main()
{ int x,y,r1,r2;
cin>>x>>y;
if(x=0||y=0)
cout<< ” input error ” <<endl;
else
{ if(x>y)
r1=x/y;
r2=x%y;
else
r1=y/x;
r2=y%x;
}
cout<< ” 商 = ” <<r1<< ” 余数= ” <<r2<<endl;
}
修改后的源程序:
#include "iostream.h"
int main()
{ int x,y,r1,r2;
cin>>x>>y;
if(x==0||y==0)
cout<< " input error " <<endl;
else
if(x>y)
{r1=x/y;
r2=x%y;}
else
{r1=y/x;
r2=y%x;}
cout<< " 商 =" <<r1<< "余数=" <<r2<<endl;
return 0;
}
程序运行结果:
2.编一程序输入上网的时间计算上网费用,计算的方法如下:
同时为了鼓励多上网,每月收费最多不超过 130 元。
提示: 先按照上述公式求,然后判断求得的钱若超出 130元,就按130元计算。
源程序:#include <iostream>
using namespace std;
int main()
{
float x,y;
cout<<"请输入x:";
cin>>x;
if(x<10)
cout<< " y=30 " <<endl;
else if(x<50)
y=2.5*x;
else if(x>=50)
y=2*x;
if(y<=130)
cout<<"y="<<y<<endl;
else
cout<<"y=130"<<endl;
return 0;
}
程序运行结果:
3.在购买某物品时,若所花的的钱 x 在下述范围内,所付钱 y 按对应折扣支付:
分别利用 if 和 switch 两种多分支结构来完成。
提示: 注意计算公式和条件表达式的正确书写。
源程序:#include <iostream>
using namespace std;
int main()
{
float x,m;
cout<<"请输入所花的钱:";
cin>>x;
if(x<100)
m=x;
else if(x<500)
m=0.8*x;
else if(x>=500)
m=0.7*x;
cout<<"m="<<m<<endl;
return 0;
}
程序运行结果:
七、思考讨论题或体会或对改进实验的建议
八、参考资料
《C++程序设计》 杨长兴、刘卫国主编 中国铁道出版社
一、 实验项目名称
循环控制结构
二、 实验目的
1.了解for循环、当型循环和直到型循环的执行机理。
2.熟练掌握三种循环语句:while语句、do_while语句和for语句的使用。
3.了解break和continue语句在循环中的辅助控制作用。
4.掌握利用循环语句求解一些常用算法的方法
5.写出实验步骤 ,分析调试中出现的问题及解决方法,给出改进方案,写出程序文档
三、实验基本原理
四、主要仪器设备及耗材
PC微机
Windows 操作系统
Microsoft Visual C++6.0 程序集成环境
五、实验步骤、源程序及实验结果
1.以下程序求20以内的奇数和。程序有几处错误,试找出它们加以修改,并上机验证修改结果。
#include “ iostream.h ”
void main()
{ int n,sum;
for(n=1; ;n+=2);
if(n==20) break;
cout<< ” sum= ” <<sum<<endl;
}
修改后源程序:#include <iostream.h>
void main()
{
int n,sum=0;
for(n=1;n<20 ;n+=2)
sum+=n;
cout<< " sum= " <<sum<<endl;
}
程序运行结果:
2.编写程序将一个十进制整数按倒序形式输出。即若输入156,则输出651。
提示:实现的方法是将一个十进制数不断除以十取余,并马上输出该余数。
源程序:#include <iostream.h>
void main()
{
int n,r;
cout<<"请输入一个十进制整数: ";
cin>>n;
do
{
r=n%10;
n/=10;cout<<r;
}while(n>0);
cout<<endl;
}
程序运行结果:
3.计算 的近似值, 的计算公式为:
源程序:#include <iostream>
using namespace std;
int main()
{
int n=2;
double t(4.00000/3),pi(2);
while(t>=1.000000000000001)
{
pi=pi*t;
t=((2*n)*(2*n))*1.0/((2*n-1)*(2*n+1));
n++;
}
cout<<"pi:"<<pi<<endl;
return 0;
}
程序运行结果:
七、思考讨论题或体会或对改进实验的建议
八、参考资料
《C++程序设计》 杨长兴、刘卫国主编 中国铁道出版社
一、 实验项目名称
函数
二、 实验目的
1.掌握函数声明、定义和使用的方法;
2.掌握函数递归调用的方法;
3.掌握“传值调用”、“传址调用”和“引用调用”的区别;
4.掌握重载函数、内联函数、带有默认参数的函数及模板函数的定义和使用。
5.掌握自动变量、静态局部变量与全局变量之间的联系与区别。
6.学习使用指针和引用给函数传递参数;
7.掌握给函数传递数组参数的方法;
8.掌握定义头文件的方法,学会建立和调试多文件程序;
9.写出实验步骤,分析调试中出现的问题及解决方法,给出改进方案,写出程序文档和调试数据。
三、实验基本原理
四、主要仪器设备及耗材
PC微机
Windows 操作系统
Microsoft Visual C++6.0 程序集成环境
五、实验步骤、源程序及实验结果
1.编一函数,求级数
的部分和,当第 n 项的精度小于 eps 时结束。设 eps 的默认值为 10 -6 。 函数形式为:double fun(doubl x, double eps=1e-6);
源程序: #include <iostream>
#include <cmath>
using namespace std;
double fun(double x, double eps=1e-6);
void main()
{
double x,s;
cout<<"请输入x的值: ";
cin>>x;
s=fun(x);
cout<<"x="<<x<<" "<<"s="<<" "<<s<<endl;
}
double fun(double x,double eps)
{
int n=1;
double t,s(0);
t=x;
while(fabs(t)>=eps)
{
s+=t;
t=-t*x*x/((n+1)*(n+2));
n+=2;
}
return(s);
}
程序运行结果:
2.编一判断 m 是否为素数的函数,在主函数中输出十对最小的孪生素数。所谓孪生素数是指两个相差为 2 的素数,如 3 和 5 、 11 和 13 。函数形式为:bool isprime(int m)
源程序:#include <iostream>
using namespace std;
bool isprime(int m)
{
int i;
for(i=2;m%i!=0;i++);
return(i==m);
}
void main()
{
int x,count=0;
x=2;
while(1)
{
if(isprime(x)&&isprime(x+2))
{
count++;
cout<<"("<<x<<","<<x+2<<")"<<endl;
if(count>=10)break;
}
x++;
}
}
程序运行结果
七、思考讨论题或体会或对改进实验的建议
八、参考资料
《C++程序设计》 杨长兴、刘卫国主编 中国铁道出版社
一、 实验项目名称
数组
二、 实验目的
1.掌握一维数组和二维数组的定义、赋值和输入输出方法;
2.掌握字符数组和字符串的使用;
3.掌握给函数传递数组参数的方法;
4.掌握与数组有关的简单数据结构和算法;
5.写出实验步骤,分析调试中出现的问题及解决方法,给出改进方案,写出程序文档和调试数据。
三、实验基本原理
四、主要仪器设备及耗材
PC微机
Windows 操作系统
Microsoft Visual C++6.0 程序集成环境
五、实验步骤、源程序及实验结果
1.编一个程序,将一串字符倒序存放后输出。例如原数组 a的内容为“VISUAL C++PROGRAM ” ,倒许序后数组 a中的内容为“MAGORP++C LASUIV”。
源程序:
#include <iostream>
#include <iomanip>
#define N 10
using namespace std;
int main()
{
int i,j=0;
char a[N],b[N];
for(i=0;i<N;i++)
cin>>a[i];
for(i=0;i<N;i++)
{
b[j]=a[N-i-1];j++;
}
for(j=0;j<N;j++)
cout<<setw(2)<<b[j];
cout<<endl;
return 0;
}
程序运行结果:
2.输出输入一个小于 10的正整数n,显示具有n行的杨辉三角形,见图2.5.1。 提示:解该题有两个关键:
① 形成满足杨辉三角形各项值的数组。首先定义二维数组 a[10][10],杨辉三角形的形成特点是第1列(下标为0)和主对角线均为1,其余各项有如下关系:
a[i][j]= a[i-1][j-1]+ a[i-1][j] i=2,3…,n-1 j=1,2…,i-1
② 按规定的形式显示,用到 setw(n),表示每一个元素占n位,使用setw(n)函数,必须加#include “ iomanip.h ” 。
进一步要求,若要显示图 2.5.2结果,程序要进行如何改进?
提示:只要在输出每一行元素前,利用如下语句确定每行的起始位:
cout<<setw(n-i)*3<< ” “ ; //3表示每个元素占6位
源程序;#include <iostream>
#include <iomanip>
using namespace std;
void main()
{
int a[10][10],i,j,n;
cin>>n;
for(i=0;i<n;i++)
{
a[i][0]=1;
a[i][i]=1;
}
for(i=2;i<n;i++)
for(j=1;j<i;j++)
a[i][j]=a[i-1][j]+a[i-1][j-1];
for(i=0;i<n;i++)
{
for(j=0;j<=i;j++)
cout<<setw(6)<<a[i][j];
cout<<endl;}
}
程序运行结果:
源程序:#include <iostream>
#include <iomanip>
using namespace std;
void main()
{
int a[10][10],i,j,n;
cin>>n;
for(i=0;i<n;i++)
{ a[i][0]=1;
a[i][i]=1;
}
for(i=2;i<n;i++)
for(j=1;j<i;j++)
a[i][j]=a[i-1][j]+a[i-1][j-1];
for(i=0;i<n;i++)
{
cout<<setw((n-i)*3)<<" ";
for(j=0;j<=i;j++)
cout<<a[i][j]<<setw(6);
cout<<endl;}
}
程序运行结果:
七、思考讨论题或体会或对改进实验的建议
八、参考资料
《C++程序设计》 杨长兴、刘卫国主编 中国铁道出版社
一、 实验项目名称
指针和排序
二、 实验目的
1.掌握指针的概念、学会定义和使用指针变量;
2.掌握引用型变量的概念、学会定义和使用引用型变量;
3.学习使用指针数组和指向数组的指针;
4.学习使用指向字符串的指针变量;
5. 掌握常用的排序算法
6.写出实验步骤,分析调试中出现的问题及解决方法,给出改进方案,写出程序文档和调试数据。
三、实验基本原理
四、主要仪器设备及耗材
PC微机
Windows 操作系统
Microsoft Visual C++6.0 程序集成环境
五、实验步骤、源程序及实验结果
1.输入一串字符,分别利用字符数组、指针变量两种种方式,将字符串中的大写字母转换成小写字母,并分别显示。
源程序1(字符数组方式):
#include<iostream>
#include<string>
using namespace std;
void main()
{
char a[100];
int i,j;
cout<<"please input chars:";
cin.getline(a,100);
for(j=0;j<=strlen(a)-1;j++)
{
i=a[j];
if(i<97&&i>=65)
a[j]=(char)i+32;
}
for(j=0;j<=strlen(a);j++)
cout<<a[j];
cout<<endl;
}
程序运行结果:
源程序2(指针变量):
#include<iostream>
#include<string>
using namespace std;
void main()
{
char a[100];
char *p=a;
int i,j;
cout<<"please input chars:";
cin.getline(a,100);
for(j=0;j<=strlen(a)-1;j++)
{
i=a[j];
if(i<97&&i>=65)
a[j]=(char)i+32;
}
for(j=0;j<=strlen(a);j++)
cout<<*(a+j);
cout<<endl;
}
程序运行结果:
2.输入20个学生的计算机课程的成绩(0~100),按照从大到小的顺序排序,分别显示排序前和排序后的结果。
源程序:
#include <iostream>
#include <iomanip>
using namespace std;
#define N 20
void px(int *p,int n)
{
int i,j,t;
for(i=0;i<n-1;i++)
{
for(j=0;j<n-i-1;j++)
{
if(*(p+j)<*(p+j+1))
{
t=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=t;
}
}
}
}
void main()
{
int i;
int a[N];
cout<<"please input numbers";
for(i=0;i<N;i++)
cin>>a[i];
px(a,N);
for(i=0;i<N;i++)
cout<<setw(6)<<a[i];
cout<<'\n';
}
程序运行结果:
七、思考讨论题或体会或对改进实验的建议
八、参考资料
《C++程序设计》 杨长兴、刘卫国主编 中国铁道出版社
一、 实验项目名称
自定义数据类型
二、 实验目的
1.掌握结构体变量的定义和使用;
2.掌握结构体数组的定义和使用;
三、实验基本原理
四、主要仪器设备及耗材
PC微机
Windows 操作系统
Microsoft Visual C++6.0 程序集成环境
五、实验步骤、源程序及实验结果
1.定义学生档案结构体类型,描述的数据包括:学号、姓名、性别、出生年月、入学总分和籍贯。输入5个学生档案的内容,并输出学生档案。
源程序: #include <iostream>
using namespace std;
#include <string>
struct date
{
int year;
int month;
};
struct student
{
char id[8];
char name[10];
char sex;
date birthday;
float score;
char add[10];
};
student stu[5];
void main ()
{
int n;
cin>>n;
cout<<"从键盘上输入"<<n<<"个学生档案:"<<endl;
int i;
student x;
for(i=0;i<n;i++)
{
cin>>x.id;
cin>>x.name;
cin>>x.sex;
cin>>x.birthday.year;
cin>>x.birthday.month;
cin>>x.score;
cin>>x.add;
stu[i]=x;
}
cout<<"输出"<<n<<"个同学记录:"<<endl;
int j;
for(j=0;j<n;j++)
{
cout<<stu[j].id<<' '<<stu[j].name<<' '<<stu[j].sex<<' ';
cout<<stu[j].birthday.year<<' '<<stu[j].birthday.month<<' ';
cout<<stu[j].score<<' ';
cout<<stu[j].add<<endl;
}
}
程序运行结果:
七、思考讨论题或体会或对改进实验的建议
八、参考资料
《C++程序设计》 杨长兴、刘卫国主编 中国铁道出版社
展开阅读全文