资源描述
实验2 运算符和表达式
实验目标
编写简单程序完成数学公式的程序表达方法。
实验目的
验证C/C++语言的常用运算符、表达式的作用。
实验内容
按照上次实验课的做法,创建一个空的Win32控制台项目(给它起一个有意义的名字),添加一个源文件(cpp文件)。分别将下面的代码输入到cpp文件中,中编译运行以验证各种运算符的作用。
(1)算术运算符:加:+ 减:- 乘:* 除:/ 模:%
(2)关系与逻辑运算符。
关系运算符:小于‘<’大于‘>’ 小于等于‘<=’大于等于‘>=’不等于‘!=’
逻辑运算符:与‘&&’(条件同时成立) 或‘||’(任一条件成立) 非‘!’(取相反条件)。main函数代码如下:
练习1填空题:
在下划线处补充完整if语句的条件表达式,要求条件表达式能与对应的输出相符。
/*****代码1 比较运算符*****/
#include <iostream>
using namespace std;
int main()
{
int x=9;
if ( )
cout << "x小于10" << endl;
if ( )
cout << "x不小于5" << endl;
if ( )
cout << "x小于10并且x不小于5";
return 0;
}
/*****代码2 加一与减一运算符*****/
#include <iostream>
using namespace std;
int main(int argc, char* argv[])
{
int i,j;
cout << "请输入一个整数i=";
cin >> i;
cout << endl;
cout << "原来i = " << i << endl;
cout << " j = i++ = " << (________) << ",\t要求:j为i加之前的值。\n";
cout << "现在i = " << i << endl;
cout << " j = ++i = " << (________) << ",\t要求:j为i加之后的值。\n";
cout << "现在i = " << i << endl;
cout << " j = i-- = " << (________) << ",\t要求:j为i减之前的值。\n";
cout << "现在i = " << i << endl;
cout << " j = --i = " << (________) << ",\t要求:j为i减之后的值。\n";
cout << "现在i = " << i << endl;
return 0;
}
练习2(code2.cpp):
如果i=2,j=3,请问i+++j的结果是多少?最后i,j各为多少?编程验证。
注意:这是很不好的编程风格,平时编程不要用这样的表达式。其实这涉及到词法分析中的“贪心法”。
赋值运算符与赋值表达式(略)。
I = I + 3 可以简写成 I += 3;
I = I * 3 可以简写成 I *= 3;
I = I - 3 可以简写成 I -= 3;
I = I / 3 可以简写成 I /= 3;
I = I % 3 可以简写成 I %= 3;
编程验证。
练习3(code3.cpp)(选做题):根据下面的数学魔术原理编写一个小游戏。
——数学魔术——
情景:我有五张卡片,上面写着数字。
1:1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31
2:2,3,6,7,10,11,14,15,18,19,22,23,26,27,30,31
3:4,5,6,7,12,13,14,15,20,21,22,23,28,29,30,31
4:8,9,10,11,12,13,14,15,24,25,26,27,28,29,30,31
5:16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31
你心中想一个0-31中的一个数字。告诉我这个数字在那几张卡片上有(不能多也不能少,有的全说上,没有的打死也不能说)。我便会知道你想的是什么数字。
比如观众想到21,查看卡片得知“1、3、5”张卡片上都有这数字,那么此魔术师就可以计算出这个数字为:
原理:可以知道0-31数字可以用5位2进制数;其实,那五张卡片就是各代表一位。每张卡片上的数字就是代表这个数字在表示成二进制时这一位为1。比如数字21表示成5位的二进制是10101,这5位二进制的第1位(最右边一位)和第3位、第5位都是“1”,那么就是在第1、3、5号卡片上都有这个数字。
提示:由于要让用户输入卡片号的话,数字所在卡片的个数不确定;你可改成让他检查“下列数字是否包含你所想的数字(Y/N):”,通过每张卡片的确认来进行计算。另外,乘2也可以通过移位运算符实现(略)。
展开阅读全文