实验4 控制台IO和表达式练习

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验4 控制台I/O和表达式练习
一.实验目的及要求
1. 熟悉C、标准C++和C++/CLI三种方式的控制台I/O编程。

2. 初步学会使用算术表达式和逻辑表达式解决简单的计算问题。

二.实验内容及步骤
1. 关于控制台I/O的知识点和例题
C语言、标准C++和C++/CLI控制台I/O的方式是不同的,我们来针对如下具体问题,平行地使用三种不同的I/O方式,了解一下它们的区别所在。

问题:打印出int和double两种数据类型的长度(byte和bit)、数据表示范围(整型用十六进制和十进制两种方式表示)和精度(对浮点数而言),并分别对一个整型数和浮点数进行输入和输出(从键盘输入一个值到变量中,再将其原封不动地输出到屏幕上)。

⑴C语言控制台I/O
C语言的所有功能(包括控制台I/O)都是靠“函数”来完成的。

C语言的主要控制台I/O函数是printf(输出)和scanf(输入)。

⑵标准C++控制台I/O
标准C++的控制台I/O是靠对象cout(输出)和cin(输入)来完成的。

它们分别来自ostream和istream类。

⑶C++/CLI控制台I/O
C++/CLI的控制台I/O主要是靠System::Console类中的静态成员函数WriteLine(输出)和ReadLine(输入)来完成的。

#include"stdafx.h"// CLR控制台应用必需
#include<stdio.h>// 包含C的I/O函数声明
#include<iostream>// 包含标准C++输入输出类定义
#include<iomanip>// 包含标准C++输出有效位定义
using namespace std; // 包含<iostream>和<iomanip>必需
using namespace System; // 使用C++/CLI系统类必需
int main(array<System::String ^> ^args) {
int idata; double fdata; // 声明一个整型变量和一个浮点变量// C语言:
printf("int:\n");
printf("长度:%dbyte = %dbit\n", sizeof(int), sizeof(int) * 8);
printf("范围:%x~%x\n", int::MinValue, int::MaxValue);
printf("最小值:%d,最大值:%d\n", int::MinValue, int::MaxValue);
printf("double:\n");
printf("长度:%dbyte = %dbit\n", sizeof(double), sizeof(double) * 8);
printf("最小值:%.14le,最大值:%.14le\n", double::MinValue, double::MaxValue);
printf("PI = %.14lf\n",Math::PI);
printf("请输入一个整型数和一个浮点数:");
scanf_s("%d %lf", &idata, &fdata);
printf("idata = %d, fdata = %lf\n\n", idata, fdata);
// 标准C++:
cout << "int:" << endl;
cout << "长度:" << sizeof(int) << "byte = " << sizeof(int) * 8 << "bit" << endl;
cout << "范围:" << hex << int::MinValue << "~" << int::MaxValue << endl;
cout << "最小值:" << dec << int::MinValue << ",最大值:" << int::MaxValue << endl;
cout << "double:" << endl;
cout << "长度:"<< sizeof(double) << "byte = "<< sizeof(double) * 8 << "bit"<< endl;
cout << "最小值:"<< setprecision(15) << double::MinValue << ",最大值:"<< double::MaxValue << endl;
cout << "PI = " << Math::PI << endl;
cout << "请输入一个整型数和一个浮点数:";
cin >> idata >> fdata;
cout << "idata = " << idata << ", fdata = " << fdata << endl << endl;
// C++/CLI:
Console::WriteLine("int:");
Console::WriteLine("长度:{0}byte = {1}bit", sizeof(int), sizeof(int) * 8);
Console::WriteLine("范围:{0:x}~{1:x}", int::MinValue, int::MaxValue);
Console::WriteLine("最小值:{0},最大值:{1}", int::MinValue, int::MaxValue);
Console::WriteLine("double:");
Console::WriteLine("长度:{0}byte = {1}bit", sizeof(double), sizeof(double) * 8);
Console::WriteLine("最小值:{0},最大值:{1}", double::MinValue, double::MaxValue);
Console::WriteLine("PI = {0}", Math::PI);
Console::WriteLine("请输入一个整型数:");
idata = Convert::ToInt32(Console::ReadLine());
Console::WriteLine("请输入一个浮点数:");
fdata = Convert::ToDouble(Console::ReadLine());
Console::WriteLine("idata = {0}, fdata = {1}", idata, fdata);
}
将此程序粘贴到一个新建项目的源代码编辑页面(覆盖原有代码),运行、阅读并努力理解它。

2. 关于表达式的知识点和例题
⑴表达式的概念
在程序规定的一项运算中,常量和变量都是作为数据的载体参加运算的,我们称它们为“操作数”(operand)。

施加到操作数上的运算由运算符或函数来完成,我们称它们为“操作符”(operator)。

由操作数和操作符的有效组合构成的一个有意义的算式(其中可用括号改变运算顺序)称为表达式(expression) ,运算的结果产生一个值。

根据与一个运算符有关的操作数的数目,运算符可分为单目、双目和三目的。

根据操作符和值的类型,表达式可以分为算术(包括增量)表达式、赋值(包括复合)表达式、逻辑(包括关系)表达式、位表达式等。

除此之外还有一个特殊的三目表达式——条件表达式。

⑵表达式的种类
算术运算符:+(加)、-(减)、*(乘)、/(除)、%(取余)
增量运算符:++(增1)、--(减1),全部为单目
赋值运算符:=(双目,将右边表达式赋给左边变量)
复合运算符:+=(加等)、-=(减等)、*=(乘等)、/=(除等)、%=(余等),等等。

关系运算符:<(小于)、<=(小于等于)、>(大于)、>=(大于等于)、==(等于)、!=(不等于)逻辑运算符:!(非)、&&(与)、||(或)
位运算符有:&(按位与)、|(按位或)、^(按位异或)、~(按位取反)、<<(左移位)、>>(右移位)条件运算符:? :,构成的表达式形如:(表达式1)?(表达式2):(表达式3)
另外还有逗号运算符“,”和sizeof运算符。

表达式按如下“优先级”次序进行运算(优先级高的运算符先运算):( ) 优先级最高
++,--,sizeof
*, /, %
+, -
==, !=
<, <=, >, >=
&, |, ^, ~, <<, >>
!
&&
||
? :
=, +=, -=, *=, /=, %=
, 优先级最低
⑶表达式应用实例
// 计算体重指数BMI(Body Mass Index)并给出健康建议
#include"stdafx.h"
using namespace System;
int main(array<System::String ^> ^args) {
double kg, cm;
Console::Write("你的体重(kg) = ");
kg = Convert::ToDouble(Console::ReadLine());
Console::Write("你的身高(cm) = ");
cm = Convert::ToDouble(Console::ReadLine());
double pound = kg * 2.205; // 将千克转换为磅
double inch = cm * 0.3937; // 将厘米转换为英寸
double BMI = Math::Round(pound * 703.0 / (inch * inch), 3); // 计算BMI
Console::WriteLine("体重={0}(磅),身高={1}(英寸),体重指数(BMI)={2}", pound, inch, BMI);
if (BMI < 20) // 如果体重指数小于
Console::WriteLine("你的体型偏瘦,请喝杯奶昔。

");
else if (BMI >=20 && BMI < 25) // 如果体重指数大于等于但小于
Console::WriteLine("你的体型适中,请喝杯牛奶。

");
else if (BMI >=25 && BMI < 30) // 如果体重指数大于等于但小于
Console::WriteLine("你的体型偏胖,请喝杯冰茶。

");
else// 否则(体重指数大于)
Console::WriteLine("你患了肥胖症,请去看医生。

");
return 0;
}
3. 控制台I/O 和表达式编程练习
⑴ 用Stirling 公式计算n!的近似值
求阶乘近似值的Stirling 公式为:
n n e
n n
n
π2!-≈
分别用C 、标准C++、C++/CLI 三种方式输入n 的值和输出计算结果。

⑵ 计算月还贷额
计算月还贷额的公式如下:
1
)
1()
1(-+⨯+⨯=
Np Np
Mi Mi
Mi La Mp
其中:
Mp —— 月还贷额(Monthly payment ) La —— 总贷款额(Loan amount ) Mi —— 月利率(Monthly interest )
Np —— 还贷月数(Number of Payments )
以任何一种方式从键盘输入总贷款额La 、贷款年数Ny 、年利率Yi ,计算出月还贷额并输出到屏幕上。

计算案例:总贷款额La = 50000,贷款年数Ny = 7,年利率Yi = 5.24%,问月还贷额Mp 是多少?
⑶ 位表达式练习
根据课件2.3.6“位表达式”程序实例的描述,求出MODE 、ACCEL 、SUMM 、EXPR.和SAMPLER 的值并以字符串的形式输出到屏幕上。

三. 实验结果及总结
1. 编写程序,解决二.3.中的三个问题,在编译、运行正确的基础上将源代码拷入实验报告的“实验结果”一栏。

2. 总结一下三种不同I/O 方式的异同,并谈谈针对问题独立编写C++程序的体会。

相关文档
最新文档