目录
实验目的及要求
- 学会编写简单的C++程序。
- 复习基本数据类型变量和常量的应用。
- 复习运算符与表达式的应用。
- 复习结构化程序设计基本控制结构的运用。
- 复习自定义数据类型的应用。
- 练习使用简单的输入输出。
- 观察头文件的作用
- 学会使用Visual Studio 2008开发环境中的debug调试功能:单步执行、设置断点、观察变量值。
- 学会使用Eclipse IDE for C/C++ Developers 1.2.2 开发环境中的debug调试功能:单步执行、设置断点、观察变量值。
实验环境
Visual Studio 2019
实验内容及要求
任务1:输入并运行例2-7,即:用do-while语句编程,求自然数1~10之和。程序正确运行之后,去掉源程序中的#include语句,重新编译,观察会有什么问题。
任务2:将do-while语句用for语句代替,完成相同的功能。
任务3:编程计算图形的面积。程序可计算圆形、长方形、正方形的面积,运行时先提示用户选择图形的类型,然后,对圆形要求用户输入半径值,对长方形要求用户输入长和宽的值,对正方形要求用户输入边长的值,计算出面积的值后将其显示出来。
任务4:使用debug调试功能观察任务3程序运行中变量值的变化情况。
任务5:声明一个表示时间的结构体,可以精确表示年、月、日、小时、分、秒;提示用户输入年、月、日、小时、分、秒的值,然后完整地显示出来。
实验过程分析
任务1
输入并运行例2-7,即:用do-while语句编程,求自然数1~10之和。程序正确运行之后,去掉源程序中的#include语句,重新编译,观察会有什么问题。
#include <iostream>
using namespace std;
int main() {
int i = 1, sum = 0;
do {
sum += i;
i++;
} while (i <= 10);
cout << "sum=" << sum << endl;
return 0;
}
去掉#include语句,实验运行结果:程序无法运行,出现错误,标识符均显示未定义。
实验总结:预处理头文件必不可少
任务2
将do-while语句用for语句代替,完成相同的功能。
#include<iostream>
using namespace std;
int main() {
int sum = 0;
for (int i = 1; i <= 10; i++)
sum += i;
cout << sum;
return 0;
}
任务3
编程计算图形的面积。程序可计算圆形、长方形、正方形的面积,运行时先提示用户选择图形的类型,然后,对圆形要求用户输入半径值,对长方形要求用户输入长和宽的值,对正方形要求用户输入边长的值,计算出面积的值后将其显示出来。
#include<iostream>
using namespace std;
int main() {
int n; const int PI = 3.141592;
cout << "请输入图形的类型(1-圆形、2-长方形、3-正方形)" << endl;
cin >> n;
for (; n != 1 && n != 2 && n != 3;cin>>n)
cout << "请重新输入图形类型1~3" << endl;
switch (n) {
case 1:
double r;
cout << "请输入圆形的半径" << endl;
cin >> r;
cout << "S=PI*r*r=" << PI * r * r << endl;
break;
case 2:
double a; double b;
weigui: cout << "请输入长方形的一条边。" << endl;
cin >> a;
cout << "再输入另一条边。" << endl;
cin>>b;
for (; a == b;)//判断其是不是长方形
goto weigui;
cout << "S=a*b=" << a * b;
break;
case 3:
double d;
cout << "请输入正方形的边长。" << endl;
cin >> d;
cout << "S=d*d=" << d * d << endl;
break;
}
return 0;
}
实验总结:switch语句的使用。每一个case语句只是一个入口标号,并不能决定执行的终止点,因此每个case分支最后都应该加break语句,用来结束整个switch结构。
任务4
使用debug调试功能观察任务3程序运行中变量值的变化情况。
实验结果:
任务5
声明一个表示时间的结构体,可以精确表示年、月、日、小时、分、秒;提示用户输入年、月、日、小时、分、秒的值,然后完整地显示出来。
#include<iostream>
using namespace std;
struct TIME {
int year;
int month;
int day;
int hour;
int minute;
int second;
};
int main() {
TIME n;
cout << "输入年" << endl;
cin >> n.year;
cout << "输入月" << endl;
cin >> n.month;
cout << "输入日" << endl;
cin >> n.day;
cout << "输入时" << endl;
cin >> n.hour;
cout << "输入分" << endl;
cin >> n.minute;
cout << "输入秒" << endl;
cin >> n.second;
cout << n.year << "年" << n.month << "月" << n.day << "日" << n.hour << "时" << n.minute << "分" << n.second << "秒";
return 0;
}
实验总结:结构体的使用,它与类的区别不大,唯一区别在于,如果未指定任何访问控制属性的成员,其访问控制属性不同,类是private,结构体是public。