李长河 (教授)

教授 博士生导师 硕士生导师

曾获荣誉:湖北省自然科学三等奖

性别:男

毕业院校:莱斯特大学

学历:研究生(博士)毕业

学位:工学博士学位

所在单位:自动化学院

职务:Professor

学科:自动化

办公地点:中国地质大学(武汉)自动化学院710室,湖北省武汉市洪山区鲁磨路388号

联系方式:027-8717 5083

Email:

实验二  简单的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++程序中输入、输出易出错的几个地方。
   【分析】

 

  1. 采用cin输入将跳过空白符(包括空格、制表、垂直制表、换页、换行和回车等)。如果要求把从键盘上输入的所有字符(包括空白字符)都作为输入字符赋给字符变量,必须使用函数cin.get(字符变量),但这时如果前面曾有输入,会读入不希望获取的表示输入结束的回车符。

  2. 向一个字符数组中输入字符串时,应该使用函数getline(字符数组,字符数量)。这时如果前面曾有输入,会读入代表输入结束的回车符,形成空串。

 

【程序】

 

 

 

【要求】

 

    1. 读懂程序,理解程序中演示的输入、输出中易出错的情况。理解为什么两次输入It’s a book。所得到的结果不一样。

    2. 程序中使用cin.get(a[ ])输入时,为什么需要cin.get(a[12]),能够像cin>>a[9]只输入到a[9]吗?

    3. 程序最后两次输入“This is a cat。”,输出结果一样吗?为什么?