实验二 简单的C++程序设计
一、 实验目的
1. 掌握C++程序的基本结构
2. 掌握C++基本数据类型和运算符
3. 熟悉输入、输出方法
二、 实验内容
1、 输入两个数,将它们交换后输出。 【分析】要交换两个整数,一般是使用一个中间变量经过几次赋值实现。
(1) 进入Visual C++开发环境,选择File|New菜单,弹出New对话框,打开Projects选项卡,在列表框中选择Win32 Console Application 工程类型,
在Project Name 文本框中输入工程名Exp2_1,选择合适的路径,单击OK按钮。
(2) 在随后的对话框中选择An empty project ,单击Finish 按钮。
(3) 选择File|New菜单,在New对话框的Files选项卡中选择C++ Source File,,输入文件名Exp2_1.cpp,选中Add to project 复选框,单击OK按钮,
打开源文件编辑窗口,输入以下源代码:
【要求】
(1) 仔细阅读程序,掌握程序的结构,找到程序的数据定义部分和操作部分,辨识各部分功能,注意输入、输出语句的使用。
(2) 运行程序,输入数据观察结果,并进行测试。
(3) 去掉输出语句cout << "a,b = " ; 对程序的功能有影响吗?如果没有,那么该语句在程序中起何作用?请解释。
(4) 将程序中的三个赋值语句换成a=b; b=a; 重新运行修改后的程序,观察并记录结不果。a,b能交换吗?试解释原因。
(5) 输出语句cout<<"a=" << a <<'\t'<<"b="<< b << endl;中,'\t'和endl 的作用分别是什么?还有别的方法能代替它们吗?请尝试修改,并运行之。
(6)" 在输入语句 cin >> a >> b ;可以加入’\t’ 和 endl之类的符号吗?请试之,并解释为什么?
2、 建立简单控制台程序。使用VC开发环境来调试以下源程序。
【程序】
【要求】
(1)根据操作过程填写以下表格。
内容 |
操作 |
说明或结果分析 |
进入VC6 |
||
在D盘建立一个名为“ex2_2.cpp”的控制台程序 |
||
输入代码 |
||
编译连接程序 |
||
运行程序 |
(2)采用以下各组数据输入测试,记录输出结果。分析原因,思考如何解决?
3 4 5
3 4 12
0 6 2
-2 7 9
(3) 修改程序。
a) 把double 改为 int,重新编译程序,会出现什么编译信息?什么原因?
b) 把s和area定义为double可以消除编译错误吗?为什么?
c) 采用以下数据输入测试,记录输出结果,分析原因。
3.45 5.618 4.012
d)增加输出a、b、c变量值的语句,观察不同输入时变量值的变化。
e) 调试程序,在监视窗口分别输入变量a,b,c,s,和area,单步执行(F10),在监视窗口观察所有变量的值的变化情况,分析原因。
3、用sizeof运算符计算C++中char,short,int,long,float,double等基本数据类型所占的字节数,并按以下格式输出:
sizeof(char)=1 byte
sizeof(short)=2 bytes
sizeof(int)=4 bytes
……..
【程序】
【要求】
(1)修改程序, 使计算结果以表格形式输出:
char 1
short 2
int 4
……………
(2)修改程序,将计算结果保存在数组中,再按表格形式输出。
4. 编写满足下列要求的程序:根据输入的球半径,分别计算球的表面积、体积和质量(假设球的密度为7.8kg/dm3),并输出计算结果。
【提示】球的表面积计算公式为 s=4πr2,球体积计算公式为v=4/3∏r3.(红色的为指数)
【要求】
注意输入、输出形式,要求输入前应有提示性输出,如“Please input the radius of the ball ”.注意变量的命名,最好能见文知义,如radius, volume ,weight 等。另外,由于两整数相除取整,注意在计算公式中使用正确的变量数据类型。
★ (选做题)5. 演示C++程序中输入、输出易出错的几个地方。
【分析】
采用cin输入将跳过空白符(包括空格、制表、垂直制表、换页、换行和回车等)。如果要求把从键盘上输入的所有字符(包括空白字符)都作为输入字符赋给字符变量,必须使用函数cin.get(字符变量),但这时如果前面曾有输入,会读入不希望获取的表示输入结束的回车符。
向一个字符数组中输入字符串时,应该使用函数getline(字符数组,字符数量)。这时如果前面曾有输入,会读入代表输入结束的回车符,形成空串。
【程序】
【要求】
读懂程序,理解程序中演示的输入、输出中易出错的情况。理解为什么两次输入It’s a book。所得到的结果不一样。
程序中使用cin.get(a[ ])输入时,为什么需要cin.get(a[12]),能够像cin>>a[9]只输入到a[9]吗?
程序最后两次输入“This is a cat。”,输出结果一样吗?为什么?