C++实验报告
------姓名,班级
实验一 顺序结构程序设计
一,实验名称,顺序结构程序设计
二,实验目的
1,了解和使用 Visual C++6.0的集成开发环境 。
2,学会完整的 C++程序开发过程 ( 编辑, 编译, 链接, 调
试, 运行, 查看结果 ) 。
3,掌握简单的 C++程序结构 。
4,掌握顺序结构程序设计 。
5,掌握基本输入输出的方法 。
三,实验内容
1,输入三角形的三个边长, 求其周长和面积 。
2,输入圆柱体的半径和高, 求其体积;输入球半径, 求
其表面积;输入长方体的长, 宽, 高, 求其体积 。
3,输入一个华氏温度, 要求输出其摄氏温度 。 公式为
C=5/9(F-32),输出要有文字说明, 取两位小数 。
4,从键盘上输入一个字符, 输出其对应的 ASCII值 。
四,实验的原程序,
1,输入三角形的三个边长,求其周长和面积。
#include<iostream.h>
void main()
{
cout<<“输入三角形的三个边长, <<endl;
int a,b,c;
cin>>a>>b>>c;
cout<<“三角形的周长, <<a+b+c<<endl;
cout<<“三角形的面积, <<(a+b+c)/2 <<endl;
}
2,输入圆柱体的半径和高,求其体积;输入球半径,求其表面积;输入长方体的长、宽、高,求其体积。
#include<iostream.h>
void main()
{
cout<<“输入圆柱体的半径和高” <<endl;
int a,b;
cin>>a>>b;
cout<<“圆柱体的体积, <<3.14*a*a*b<<endl;
cout<<“输入球半径, <<endl;
int c;
cin>>c;
cout<<“球的表面积, <<4*3.14*c*c<<endl;
cout<<“输入长方体的长、宽、高, <<endl;
int d,e,f;
cin>>d>>e>>f;
cout<<“长方体的体积, <<d*e*f<<endl;
}
3,输入一个华氏温度, 要求输出其摄氏温度 。 公式为 C=5/9(F-
32),输出要有文字说明, 取两位小数 。
#include<iostream.h>
#include<iomanip.h>
void main()
{
double f,c,b;
cout<<"请输入华氏温度,"<<endl;
cin>>f;
cout<<"对应的摄氏温度为,"<<endl;
c=f-32;
b=5.00/9;
c=b*c;
cout<<setiosflags(ios::fixed)<<setprecision(2)<<"c="<<c<<endl;
}
4,从键盘上输入一个字符,输出其对应的 ASCII值。
#include<iostream.h>
void main()
{
char ch;
cin>>ch;
int a;
a=int(ch);
cout<<a<<endl;
}
五,实验体会
实验二 选择结构程序设计
实验目的
1,理解程序的分支结构 。
2,掌握实现选择结构的几种方法 。
3,了解数据类型在内存中所占的字节数和表示范围 。
4,掌握常用表达式, 尤其是关系表达式和逻辑表达式在条件判断
中的作用 。
5,能恰当利用注释, 修改变量名, 提高程序的可读性 。
6,进一步掌握程序的调试方法 。
实验内容
1,键盘上输入一个数, 判断该数是否为素数 。
2,有一分段函数写一程序, 输入 x的值, 输出相应 y的值 。
x
y= 2x-1 (1≤x< 10),
3x-11 (x≥ 10)
3,输入一百分制成绩, 要求输出成绩等级 。 90分以上 A,80~ 89
分为 B,70~ 79分为 C,60~ 69分为 D,60分以下为 E。
4,输入三个数, 按大小顺序输出 。
原程序,
1,键盘上输入一个数, 判断该数是否为素数
#include<iostream.h>
void main()
{int i,n;
cin>>n;
for(i=2;i<n;++i)
if(n%i==0)
break;
if(i==n)
cout<<n<<"is a prime number"<<endl;
else
cout<<n<<"is not a prime number"<<endl;}
2,有一分段函数写一程序, 输入 x的值, 输出相应 y的值 。
x (x<1)
Y= 2x-1 (1≤x< 10),
3x-11 (x≥ 10)
#include<iostream.h>
void main()
{
int x,y;
cout<<"please input a number:"<<endl;
cin>>x;
if(x>=1&&x<10)
y=2*x-1;
else if(x>=10)
y=3*x-11;
else
y=x;
cout<<"y="<<y<<endl;
}
3.输入一百分制成绩,要求输出成绩等级。 90分以上 A,80~ 89分为 B,70~ 79
分为 C,60~ 69分为 D,60分以下为 E。
#include<iostream.h>
void a()
{ char grade;
cin>>grade;
if(grade>='a'&&grade<='z')
grade-=32;
switch(grade)
{case'A':cout<<"90--100\n";break;
case'B':cout<<"80--89\n";break;
case'C':cout<<"70--79\n";break;
case'D':cout<<"60--69\n";break;
case'E':cout<<"<60\n";break;
default:cout<<"error\n";
}
}
void main()
{
a();
}
4,输入三个数, 按大小顺序输出 。
#include<iostream.h>
void main()
{
int a,b,c,temp;
cin>>a>>b>>c;
if(a>b)
{ temp=a;
a=b;
b=temp;}
if(a>c)
{ temp=a;
a=c;
c=temp;}
if(b>c)
{
temp=b;
b=c;
c=temp;
}
cout<<a<<" "<<b<<" "<<c<<endl;
}
实验三 循环结构程序设计
一 实验目的
1,掌握循环结构实现的几种方法 。
2,进一步学习查找与修改程序错误的方法 。
3,掌握不同数据类型及其变量, 常量的使用方法 。
4,学习程序的书写风格, 循环体, if语句执行体和其它嵌套
语句采用缩进写法, 养成锯齿形书写源程序的习惯 。
实验内容
1,求 n!, n值从键盘输入 。
2,编程求 100以内的偶数之和 。
3,输入一行字符, 分别统计出其中英文字母, 空格, 数字和其它
字符的个数
4,输出 100以内的所有素数 。
原程序,
1,求 n!, n值从键盘输入 。
#include<iostream.h>
void main()
{
int s,n;
s=1;
cout<<"please input a number:"<<endl;
cin>>n;
for(int i=1;i<=n;i++)
s*=i;
cout<<"s="<<s<<endl;
}
2,编程求 100以内的偶数之和 。
#include<iostream.h>
void main()
{
int s,n;
n=2;
s=0;
while(n<=100)
{
s+=n;
n+=2;
}
cout<<s<<endl;
}
3.输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数
include<iostream.h>
void main()
{
char a[100];
cin.get(a,100);
int x=0,y=0,z=0,t=0;
for(int i=0;i<=100;i++)
{
if(a[i]=='\0')
break;
else if(a[i]>='a'&&a[i]<='z')
x++;
else if(a[i]>='0'&&a[i]<='10')
y++;
else if(a[i]==' ')
z++;
else
t++;
}
cout<<"字母数为,"<<x<<endl;
cout<<" 空格数为,"<<z<<endl;
cout<<" 数字为,"<<y<<endl;
cout<<"其他为,"<<t<<endl;
}
4.输出 100以内的所有素数。
#include<iostream.h>
void main()
{ int i,n;
for(n=2;n<100;++n)
{ for(i=2;i<n;++i)
if(n%i==0)
break;
if(i==n)
cout<<n<<endl;}
} 实验四 结构程序设计综合实验
实验目的
选择控制语句和循环控制语句的程序中可以包含任何类型的语句,
因此这些语句之间可以任意嵌套, 从而形成复杂的控制结构 。 通过
本实验, 使学生深入理解解决复杂问题的编程思路, 并掌握一些典
型的设计技巧, 同时也要注重数据输出格式的控制 。
实验内容
1,求出所有的水仙花数 。 所谓水仙花数是指一个三位数, 其各位
数字立方和等于该数本身 。 2,求 1-20的阶乘之和 。
3,求 Fibonacci数列的前 40个数, 并按照 4列一行输出 。
4,利用下面的公式求 π 的近似值, 要求累加到最后一项小于 10-6
为止 。
原程序,
1.求出所有的水仙花数。所谓水仙花数是指一个三位数,其各
位数字立方和等于该数本身。
#include<iostream.h>
void main()
{ int n;
for(n=100;n<1000;n++)
{ int a=n/100;
int b=(n%10)/10;
int c=(n%10)%10;
if(n==a*a*a+b*b*b+c*c*c)
cout<<n<<endl;
}
}
2.求 1~ 20的阶乘之和。
#include<iostream.h>
double function(int n)
{ double t=0;
if(n==0)
t=1;
else
t=n*function(n-1);
return t;}
void main()
{ double sum=0;
for(int i=1;i<=20;i++)
sum+=function(i);
cout<<sum<<endl;}
3.求 Fibonacci数列的前 40个数,并按照 4列一行输出。
#include<iostream.h>
#include<iomanip.h>
void main()
{ int a[40];
a[0]=1;
a[1]=1;
for(int i=2;i<40;i++)
a[i]=a[i-1]+a[i-2];
for(int j=0;j<40;j++)
{ cout<<setw(10)<<a[j]<<" ";
if((j+1)%4==0)
cout<<endl;}
}
4.利用下面的公式求 π 的近似值,要求累加到最后一项小于 10-6为止
#include<iostream.h>
#include<math.h>
void main()
{
double pai=0;
int sign=1;
int n=1;
while(1.0/n>=10e-6)
{
pai+=sign*1.0/n;
n=n+2;
sign=-sign;
}
pai*=4;
cout<<pai<<endl;
}
.,,,,,
7
1
5
1
3
11
4
??????
实验五 数组
实验目的
1,熟练掌握一维数组, 二维数组, 字符数组的定义, 数组元素的使用, 数组
的初始化, 理解数组在内存中的存放形式 。
2,掌握字符常量和字符串常量的区别及使用方法 。
3,掌握字符数组的不同输入输出方法 。
4,掌握常用的字符串处理函数, 注意包含头文件 。
实验内容
1,用冒泡法对 10个整数排序 。
2,打印出以下的杨辉三角形 。 ( 要求 10行 )
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
3.求出 4× 4矩阵中最大和最小元素值及其所在行下标和列下标,求出两条主
对角线元素之和。
4,编写程序, 将字符数组 s2中的全部字符拷贝到字符数组 s1中, 不使用
strcpy()函数, 拷贝时, ’ \0’也要拷贝过去 。 ’ \0’后面的字符不拷贝 。
1,用冒泡法对 10个整数排序。
#include<iostream.h>
#include<iomanip.h>
void main()
{int a[10];
int i,j,t;
cout<<"please input 10 numbers:\n";
for(i=0;i<10;i++)
cin>>a[i]; //输入数组元素
cout<<"the numbers are,";
for(i=0;i<10;i++)
cout<<setw(4)<<a[i];
cout<<endl;
for(i=0;i<9;i++)
for(j=0;j<9-i;j++)
if(a[j]>a[j+1])
{ t=a[j]; a[j]=a[j+1]; a[j+1]=t;}
cout<<"the sorted numbers are, ";
for(i=0;i<10;i++)
cout<<setw(4)<<a[i]; //输出数组元素
cout<<endl;}
2,打印出以下的杨辉三角形。(要求 10行)
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
#include<iostream.h>
void main()
{ int a[10][10];
for(int i=0;i<10;i++)
{ for(int j=0;j<10;j++)
{ if(j==0||j==i)
{ a[i][j]=1;
cout<<a[i][j]<<" ";}
else if(i>j)
{ a[i][j]=a[i-1][j-1]+a[i-1][j];
cout<<a[i][j]<<" ";}
}
cout<<endl;
}
}
3,求出 4× 4矩阵中最大和最小元素值及其所在行下标和列下标,求
出两条主对角线元素之和。
#include<iostream.h>
void main()
{
int a[3][3],i,j,sum1=0,sum2=0;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
cout<<"a["<<i<<"]["<<j<<"]=";
cin>>a[i][j];;
}
int h,l,Max=a[0][0]; //找出该数组的最大元素及其下标
for(i=0;i<3;i++)
for (j=0;j<3;j++)
if(Max<a[i][j]) { Max=a[i][j];h=i;l=j;}
int m,n,Min=a[0][0]; //找出该数组的最小元素及其下标
for(i=0;i<3;i++)
for (j=0;j<3;j++)
if(Min>a[i][j]) { Min=a[i][j];m=i;n=j;}
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{ if(i==j)
sum1+=a[i][j];
if(j==2-i)
sum2+=a[i][j];}
cout<<"Max,"<<"a["<<h<<"]["<<l<<"]="<<a[h][l]<<endl;
cout<<"Min,"<<"a["<<m<<"]["<<n<<"]="<<a[m][n]<<endl;
cout<<"sum1="<<sum1<<endl;
cout<<"sum2="<<sum2<<endl;
}
4,编写程序, 将字符数组 s2中的全部字符拷贝到字符数组 s1中, 不
使用 strcpy()函数, 拷贝时, ’ \0’也要拷贝过去 。 ’ \0’后面的字
符不拷贝 。
#include<iostream.h>
void main()
{
char a[100],b[100];
int i=0,j=0;
cout<<"please input string a,"<<endl;
cin>>a;
cout<<endl;
while(a[i]!='\0')
{b[i]=a[i];
i++;
j++;
}
b[i]='\0';
cout<<b<<endl;
}
实验六 函数
实验目的
1,掌握函数定义, 原型说明和调用的方法 。
2,掌握函数参数传递的机制 。
3,掌握函数递归的编写规则 。
4,了解全局变量, 局部变量, 静态局部变量等概念和使用方法 。
实验内容
1,编写函数 max,它带有 3个 int型参数, 返回这 3个数的最大值 。 在 main
函数中接受 3个数的输入, 调用 max函数获取 3个数的最大值并输出 。
2,两个函数, 分别求两个整数的最大公约数和最小公倍数, 用 main函数
调用这两个函数, 并输出结果, 两个整数由键盘输入 。
3,采用递归和非递归两种方法输出斐波那契数列的第 25项 。
4,有一个一维数组, 内放 10个学生成绩, 写一个函数, 求出平均分, 最
高分和最低分 。 提示:利用全局变量实现 。
原程序,
1,编写函数 max,它带有 3个 int型参数, 返回这 3个数的最大值 。 在 main函数
中接受 3个数的输入, 调用 max函数获取 3个数的最大值并输出 。
#include<iostream.h>
int max(int a,int b,int c)
{ int d;
d=a>b?a:b;
d=d>c?d:c;
return d;}
void main()
{ int x,y,z,n;
cin>>x>>y>>z;
n=max(x,y,z);
cout<<n<<endl;
}
2,两个函数, 分别求两个整数的最大公约数和最小公倍数, 用 main
函数调用这两个函数, 并输出结果, 两个整数由键盘输入 。
#include<iostream.h>
int yueshu(int m,int n)
{
if(m==n)return m;
else
{
while(n!=0)
{ if(m>n)
{ n=m-n;
m=m-n;}
else n=n-m;}
return m;}
}
int beishu(int x,int y)
{ return x*y/yueshu(x,y);
}
void main()
{ int a,b;
cout<<"Please input two numbers:";
cin>>a>>b;
int c=yueshu(a,b);
cout<<"最大公约数是,"<<c<<endl;
int d=beishu(a,b);
cout<<"最大公倍数是,"<<d<<endl;
}
3,采用递归和非递归两种方法输出斐波那契数列的第 25
项 。
//非递归程序,
#include<iostream.h>
void main()
{
int a=1,b=1;
for(int i=3;i<=25;i++)
{
int temp=a;
a=b;
b=a+temp;
}
cout<<"The 25th of Fibonacci is:"<<b<<endl;
}
//递归程序,
#include<iostream.h>
int fibonacci(int n)
{ int temp=0;
if(n==1||n==2)
temp=1;
else
temp=fibonacci(n-1)+fibonacci(n-2);
return temp;
}
void main()
{ int a=25;
cout<<"The 25th fibonacci is:"<<fibonacci(a)<<endl;
}
4.有一个一维数组,内放 10个学生成绩,写一个函数,求出平均分,最高分和
最低分。提示:利用全局变量实现。
#include<iostream.h>
int average=0,min,max;
void function(int a[])
{
max=a[0];min=a[0];
for(int i=0;i<10;i++)
{
average=average+a[i];
if(min>a[i])
min=a[i];
else if(max<a[i])
max=a[i];
}
average=average/10;
}
void main()
{
int a[]={12,23,34,45,56,67,78,89,90,99};
cout<<"Tht score of the ten students are:"<<endl;
for(int j=0;j<10;j++)
cout<<a[j]<<" ";
cout<<endl;
function(a);
cout<<"The average is:"<<average<<endl;
cout<<"The min of the score is:"<<min<<endl;
cout<<"The max of the score is:"<<max<<endl;
}