1.3实验案例分析

1.3.1实验项目1-1 数据类型表示与进制转换

1.实验名称:数据类型表示与进制转换

2.实验目的

1)掌握数据类型概念

2)理解基本数据类型的应用

3.实验任务

1 输入以下数,请完成对应的八进制和十六进制转换工作

(int)-10(short)127(short)255(floatdouble)3.14159265358(short)-28654(char)’A’ (short)’A’(int)4100000000(int)2100000001

2 请写出75-3165537三个数在内存中的以下方面的表示:

unsigned charshortintunsigned int

3 要求能对以上数据进行适当改造,并验证结果是否正确。

4.参考程序

 #include <iostream.h>

void main(){

         cout<<dec;

         cout<<"对应的十进制数如下:"<<endl;

         cout<<(int)-1<<endl;

         cout<<0<<endl;

         cout<<(short)127<<endl;

         cout<<(short)255<<endl;

         cout<<(float)3.14159265358<<endl;

         cout<<(double)3.14159265358<<endl;

         cout<<(short)-28654<<endl;

         cout<<(char)'A'<<endl;

         cout<<(short)'A'<<endl;

         cout<<(int)4100000000<<endl;

         cout<<(int)2100000001<<endl<<endl;

        

         cout<<dec;

         cout<<oct;

         cout<<"对应的八进制数如下"<<endl;

         cout<<(int)-1<<endl;

         cout<<0<<endl;

         cout<<(short)127<<endl;

         cout<<(short)255<<endl;

         cout<<(float)3.14159265358<<endl;

         cout<<(double)3.14159265358<<endl;

         cout<<(short)-28654<<endl;

         cout<<(char)'A'<<endl;

         cout<<(short)'A'<<endl;

         cout<<(int)4100000000<<endl;

         cout<<(int)2100000001<<endl<<endl;

        

         cout<<dec;

         cout<<hex;

         cout<<"对应的十六进制数如下"<<endl;

         cout<<(int)-1<<endl;

         cout<<0<<endl;

         cout<<(short)127<<endl;

         cout<<(short)255<<endl;

         cout<<(float)3.14159265358<<endl;

         cout<<(double)3.14159265358<<endl;

         cout<<(short)-28654<<endl;

         cout<<(char)'A'<<endl;

         cout<<(short)'A'<<endl;

         cout<<(int)4100000000<<endl;

         cout<<(int)2100000001<<endl<<endl;

        

         cout<<dec;

        

         cout<<"75"<<"unsigned char值:"<<(unsigned char)75<<endl;

         cout<<"75"<<"short值:"<<(short)75<<endl;

         cout<<"75"<<"int"<<(int)75<<endl;

         cout<<"75"<<"unsigned int值:"<<(unsigned int)75<<endl<<endl;

 

         cout<<"-31"<<"unsigned char值:"<<(unsigned char)-31<<endl;

         cout<<"-31"<<"short值:"<<(short)-31<<endl;

         cout<<"-31"<<"int"<<(int)-31<<endl;

         cout<<"-31"<<"unsigned int值:"<<(unsigned int)-31<<endl<<endl;

 

         cout<<"65537"<<"unsigned char值:"<<(unsigned char)65537<<endl;

         cout<<"65537"<<"short值:"<<(short)65537<<endl;

         cout<<"65537"<<"int"<<(int)65537<<endl;

         cout<<"65537"<<"unsigned int值:"<<(unsigned int)65537<<endl<<endl;

 

}

1.3.2实验项目1-2 数据类型与运算符表达式的求值

1.实验名称:数据类型与运算符表达式的求值

2.实验目的

1)掌握数据类型概念、变量与常量、运算符与表达式。

2)理解基本数据类型、变量、运算符的应用。

3.实验任务

从键盘输入int 型变量ij的值,计算并显示以下变量的值:

int k=++i;

int l=j--;

int m=i++ + --j +1;

j=j++ +j+2;

i=++i-i+1;

从键盘输入float型变量x的值,计算并显示以下变量的值:

不大于x的最大整数、不小于x的最小整数、x的四舍五入值,x的整数值,x的绝对值。

从键盘输入int型变量x的值,计算并显示以下变量的值:

bool a=x<5;

bool b=x==5;

bool c=x!=x;

从键盘输入int型变量xyz的值,计算并显示以下表达式的值:

x>y && y<z--

x<y || y>z--

!(x<y)

x<y ^ y>z

x>y & y>z--

x<y | y>z--

x<y?x+1:y-1

从键盘输入int型变量xy的正负值,计算并显示以下表达式的值:

x&yx|yx^y~xx>.2x<<2x>>>2

4.参考程序

#include <iostream.h>

void main() {

         // a)

         {

                   int i,j;

                   cout<<endl<<"请输入i,j的值:"<<endl;

                   cin>>i>>j;

                  

                   int k=++i; cout<<"k="<<k<<endl;

                   int l=j--;cout<<"l="<<l<<endl;

                   int m=i++ + --j +1;cout<<"m="<<m<<endl;

                   j=j++ +j+2;cout<<"j="<<j<<endl;

                   i=++i-i+1;cout<<"i="<<i<<endl;

         }

        

         // b)

         {

                   float x;

                   cout<<endl<<"请输入x的值"<<endl;

                   cin>>x;

                  

                   cout<<"不大于x的最大整数="<<(int)x<<endl;

                   cout<<"不小于x的最小整数="<<((x==(int)x)?(int)x:(int)x+1)<<endl;

                   cout<<"x的四舍五入值="<<(int)(x+.5)<<endl;

                   cout<<"x的整数值="<<(int)(x)<<endl;

                   cout<<"x的绝对值="<<(x>=0?x:-x)<<endl;

         }

                   // c) 

         {

                  

                   int x;

                   cout<<endl<<"请输入x的值"<<endl;

                   cin>>x;

                  

                   bool a=x<5;cout<<"a="<<a<<endl;

                   bool b=x==5;cout<<"b="<<b<<endl;

                  bool c=x!=x;cout<<"c="<<c<<endl;

         }

                   // d)

         {

                   int x,y,z;

                   cout<<endl<<"请输入x,y,z的值:"<<endl;

                   cin>>x>>y>>z;

                  

                   cout<<(x>y && y<z--)<<endl;

                   cout<<(x<y || y>z--)<<endl;

                   cout<<(!(x<y))<<endl;

                   cout<<((x<y)^(y>z))<<endl;

                   cout<<((x>y) & (y>z--))<<endl;

                   cout<<((x<y) | (y>z--))<<endl;

                   cout<<(x<y?x+1:y-1)<<endl;

                  

         }

                   // e)

         {

                   int x,y;

                   cout<<endl<<"请输入x,y的值"<<endl;

                   cin>>x>>y;

                  

                   cout<<(x&y)<<endl;

                   cout<<(x|y)<<endl;

                   cout<<(x^y)<<endl;

                   cout<<(~x)<<endl;

                   cout<<(x>.2)<<endl;

                   cout<<(x<<2)<<endl<<endl;

         }

        

}

1.3.3实验项目1-3 编译与处理的使用

1.实验名称

编译与处理的使用

2.实验目的

掌握编译预处理,理解简单编译预处理的应用。

3.实验任务

a)         从键盘输入int 型变量n,计算

,当通项时停止计算。

b)         设计编译预处理可以有选择地输出中间值。

4.参考程序

#include <iostream.h>

#define DEBUG

void main() {

         double e = 1.0;                  

         double u = 1.0;         

         for(int n=1;u >= 1.0E-6;n++){

                   u = u/n;             

                   e = e+u;            

#ifdef DEBUG

                   cout << "e = " << e << " \t( n = ";

                   cout << n <<", u="<<u<< " )" << endl;

#endif

         }

         cout << "e = " << e << " ( n = " << n << " )" << endl;

}

1.4 实验项目汇编

1.4.1实验项目1-4 找出做好事的人

1.实验名称:找出做好事的人

2.实验目的

1)掌握数据类型、分支和循环结构。

2)理解数据类型的选择以及分支和循环结构的应用。

3.实验任务

有四位同学中的一位做了好事,不留名,表扬信来了之后,班长问这四位是谁做的好事。张三说:不是我。李四说:是王五。王五说:是赵六。赵六说:他胡说。已知三个人说的是真话,而一个人说的是假话。现在要根据这些信息,编程序找出做了好事的人。

4.参考程序

#include <iostream.h>

void main(){

         char*man[]={

                   "张三","李四","王五","赵六"

         };

         for (int k=0; k<4; k=k+1){ // 这里k既为循环控制变量,// 也表示第k个人

                   if (((k!=0)+(k==2)+(k==3)+(k!=3))==3){//如果4句话有3句为真,则是该人

                            cout<<"这个人是:"<<man[k]<<endl;      // 输出

                           

                   }

         }

}

1.4.2实验项目1-5 计算圆周长和面积

1.实验名称:计算圆周长和面积

2.实验目的

1)掌握数据类型基础

2)掌握基本控制结构

3.实验任务

从键盘输入一个圆的半径,然后计算并输出该圆的面积和周长。

4.实验分析

圆的半径可以是实数,计算结果也是实数,因此程序中的变量定义为double型,使用关键字const将圆周率定义为常量。

5.参考程序

#include "iostream"

using namespace std;

void main()

{

   const double pi=3.14159;

   double r,area,len;

   cout<<"请输入圆的半径:";

   cin>>r;

   area=pi*r*r;

   len=2*pi*r;

   cout<<"圆面积"<<area<<endl;

   cout<<"圆周长"<<len<<endl;

}

6思考问题

如果要计算球体的表面积和体积程序该如何修改

1.4.3实验项目1-6 分解一个四位整数的各位数字

1.实验名称:分解一个四位整数的各位数字

2.实验目的

1)掌握数据类型基础

2)掌握基本控制结构

3.实验任务

从键盘输入一个四位的整数,然后将该整数各位数字分解并显示。

4.实验分析

分解四位数中的每一位,要正确使用整除和求余运算,例如该数与1000整除结果为千位上的数字,该数除以10的余数为个位数,中间两位采用类似的方法。

5.参考程序

#include "iostream"

using namespace std;

void main()

{

   int n,d1,d2,d3,d4;      //d1,d2,d3,d4分别用来表示各位数字

   cout<<"请输入一个四位的整数:";

cin>>n;

   d1=n/1000;                           // 千位

   d2=n/100%10;                      // 百位

   d3=n/10%10;                        // 十位

   d4=n%10;                              // 个位

   cout<<"该整数的各位数字如下"<<endl;

   cout<<"千位"<<d1<<endl;

cout<<"百位"<<d2<<endl;

   cout<<"十位"<<d3<<endl;

   cout<<"个位:"<<d4<<endl;

}

6.思考问题

    1)如果要分解5位或6位的整数该如何修改程序,如果输入的整数位数事先不确定,程序又如何修改?

    2)除了程序中的写法,计算百位和十位还有没有其它的写法。

1.4.4实验项目1-7 反序输出一个四位整数

1.实验名称:反序输出一个四位整数

2.实验目的

1)掌握数据类型基础

2)掌握基本控制结构

3.实验任务

从键盘输入一个四位的整数,然后将各位上的数字按相反顺序组成一个新的整数,最后输出该数,例如,输入1234,则输出4321

4.实验分析

首先分解四位数中的每一位,然后将各位重新组成一个新的数。

5.参考程序

#include "iostream"

using namespace std;

void main()

{

   int n1,n2,d1,d2,d3,d4;      

// d1,d2,d3,d4分别用来表示各位数字

// n2用来保存组成的新数

   cout<<"请输入一个四位的整数:";

cin>>n1;

   d1=n1/1000;                         // 千位

   d2=n1/100%10;                   // 百位

   d3=n1/10%10;                               // 十位

   d4=n1%10;                                     // 个位

   n2=1000*d4+100*d3+10*d2+d1;

   cout<<"该整数的各位数字反序组成的新整数是"<<endl;

cout<<n2<<endl;

}

6.思考问题

    如果要判断一个四位整数是否是回文数,该如何修改程序?

1.4.5实验项目1-8  ASCII码的查找

1.实验名称:ASCII码的查找

2.实验目的

1)掌握数据类型基础

2)掌握基本控制结构

3.实验任务

从键盘输入一个字符,然后显示该字符的ASCII码。

4.实验分析

定义两个变量分别是字符型和整型,将输入的字符赋值给整型变量,通过类型的自动转换得到ASCII码。

5.参考程序

#include "iostream"

using namespace std;

void main()

{

   int n; 

   char c;

   cout<<"请输入一个字符:";

   cin>>c;

   n=c;            // 赋值时自动进行类型转换

   cout<<"该字符的ASCII码是:"<<endl;

   cout<<n<<endl;

}

1.4.6实验项目1-9 输出英文字母和ASCII码的对照表

1.实验名称:输出英文字母和ASCII码的对照表

2.实验目的

1)掌握数据类型基础

2)掌握基本控制结构

3.实验任务

输出英文字母和ASCII码的对照表

4.实验分析

ASCII码中,大写字母按字母表顺序排列,小写字母也按字表表顺序排列,大写在前小写字母在后,但大写字母“Z”和小写字母“a”并不连续,所以大小写字母要通过两次循环实现,将字符赋值给整型变量,通过类型的自动转换得到ASCII码。

5.参考程序

#include "iostream"

using namespace std;

void main()

{

   char c;

   int n;

   cout<<"英文字母和ASCII码对照表"<<endl;

   cout<<"大写字母"<<endl;

   for(c='A';c<='Z';c++)

   {

            n=c;// 赋值时自动进行类型转换

       cout<<c<<"\t"<<n<<endl;

   }

   cout<<"小写字母"<<endl;

   for(c='a';c<='z';c++)

   {

            n=c;

       cout<<c<<"\t"<<n<<endl;

   }

}

6.思考问题

如果要输出数字字符'0'~'9'ASCII,如何修改程序?

1.4.7实验项目1-10 输出大写字母ASCII码的不同进制对照

1.实验名称

输出大写字母ASCII码的不同进制对照

2.实验目的

1)掌握数据类型基础

2)掌握基本控制结构

3.实验任务

输出大写字母的ASCII码,输出时分别使用十进制、八进制和十六进制。

4.实验分析

ASCII码中,大写字母按字母表顺序排列,所以通过循环实现,将字符赋值给整型变量,通过类型的自动转换得到ASCII码。

一个整数可以分别按十进制、八进制和十六进制输出,方法是分别使用操作符decocthex

5.参考程序

#include "iostream"

using namespace std;

void main()

{

   char c;

   int n;

   cout<<"大写字母和ASCII码对照表"<<endl;

   cout<<"================================"<<endl;

   cout<<"字母"<<'\t'<<"十进制"<<'\t'<<"八进制"<<'\t'<<"十六进制"<<endl;

   for(c='A';c<='Z';c++)

{

            n=c;

       cout<<c;

cout<<'\t'<<dec<<n;

         cout<<'\t'<<oct<<n;

            cout<<'\t'<<hex<<n<<endl;

   }

   cout<<"================================"<<endl;

}

6思考问题

    十进制输出使用的操作符dec是默认使用的本程序中可否省略该操作符

 

1.4.8实验项目1-11 计算通话时间

1.实验名称:计算通话时间

2.实验目的

1)掌握数据类型基础

2)掌握基本控制结构

3.实验任务

输入通话的开始时间和结束时间,然后计算通话的秒数。

4.实验分析

通话时间分别输入时、分和秒,为简化问题,假定开始时间和结束时间都在同一天内。计算时先分别计算开始时间和结束时间相对该天零点零分零秒的总秒数,然后再相减。

5.参考程序

#include "iostream"

using namespace std;

void main()

{

   int h1,m1,s1,t1;                            // 开始时间

   int h2,m2,s2,t2;                            // 结束时间

   int t;                                        // 通话时间

   cout<<"请输入开始通话的时间,时分秒之间使用空格、回车键或Tab"<<endl;

   cin>>h1>>m1>>s1;

   cout<<"请输入结束通话的时间,时分秒之间使用空格、回车键或Tab"<<endl;

cin>>h2>>m2>>s2;

   t1=h1*3600+m1*60+s1;

t2=h2*3600+m2*60+s2;

   t=t2-t1;

   cout<<"通话时间为"<<t<<"";

}

6思考问题

如果开始时间和结束时间在连续的两天该如何修改程序

1.4.9实验项目1-12 输出一个实数的整数部分和小数部分

1.实验名称:输出一个实数的整数部分和小数部分

2.实验目的

1)掌握数据类型基础

2)掌握基本控制结构

3.实验任务

从键盘输入一个实数,然后分解并输出该实数的整数部分和小数部分,要求通过强制黯然转换实现。

4.实验分析

如果将一个实型数据通过强制方法转换为整数,可以赋给一个整型变量,该实数与整数部分之差就是小数部分。

5.参考程序

#include "iostream"

using namespace std;

void main()

{

   double d1,d2;    

   int n;

   cout<<"请输入一个实数"<<endl;

   cin>>d1;

   n=(int)d1;                                        // 强制类型转换

   d2=d1-n;                                                   // 小数部分

   cout<<"该实数的整数部分为:";

   cout<<n<<endl;

   cout<<"该实数的小数部分为:";

   cout<<d2<<endl;

}

6.思考问题

    本题可否使用自动类型转换?

1.4.10实验项目1-13 将十进制整数按其它进制输出

1.实验名称:将十进制整数按其它进制输出

2.实验目的

1)掌握数据类型基础

2)掌握基本控制结构

3.实验任务

从键盘输入一个十进制的整数,然后分别输出该数对应的八进制和十六进制。

4.实验分析

一个整数默认的是按十进制输出,如果要指定分别按十进制、八进制和十六进制输出,方法是分别使用操作符decocthex

5.参考程序

#include "iostream"

using namespace std;

void main()

{

   int n;

   cout<<"请输入一个整数"<<endl;

   cin>>n;

   cout<<"该数对应的八进制为:"<<oct<<n<<endl;

   cout<<"该数对应的十六进制:"<<hex<<n<<endl;

}

6.思考问题

    本题使用的方法可否用于实数的输出?

1.4.11实验项目1-14 时分秒的换算

1.实验名称:时分秒的换算

2.实验目的

1)掌握数据类型基础

2)掌握基本控制结构

3.实验任务

输入一个总的秒数,将该秒数换算为相应的时、分、秒。

4.实验分析

输入3600秒,则输出结果为1小时,输入3610秒,则结果为1小时10秒,通过除法和求余运算完成。

5.参考程序

#include "iostream"

using namespace std;

void main()

{

   int ss,h,m,s;

   cout<<"请输入总的秒数"<<endl;

   cin>>ss;

   h=ss/3600;

   m=(ss-h*3600)/60;

   s=ss-h*3600-m*60;

   cout<<"换算结果为"<<'\t';

   cout<<h<<"小时"<<'\t';

   cout<<m<<"分钟"<<'\t';

   cout<<s<<""<<endl;

}

6思考问题

如果分别输入时、分、秒要计算总秒数如何修改程序

1.4.12实验项目1-15 判断整数的奇偶性

1.实验名称:判断整数的奇偶性

2.实验目的

1)掌握数据类型基础

2)掌握基本控制结构

3.实验任务

从键盘输入一个整数,然后判断该数的奇偶性并显示相应的判断结果,要求不使用if语句。

4.实验分析

判断一个整数的奇偶性根据该数能否被2整除来进行,即余数是否为零,在某些情况下条件运算符可以代替if语句的使用,该运算符构成的表达式为:

n%2==0?"偶数":"奇数"

5.参考程序

#include "iostream"

using namespace std;

void main()

{

   int n;

   cout<<"请输入一个整数"<<endl;

   cin>>n;

   cout<<"该数是"<<(n%2==0?"偶数":"奇数")<<endl;

}

6.思考问题

    最后一条语句中的括号可否省略,如果省略结果如何?

1.4.13实验项目1-16 求出三个实数中的最大值

1.实验名称:求出三个实数中的最大值

2.实验目的

1)掌握数据类型基础

2)掌握基本控制结构

3.实验任务

从键盘输入三个实数,求出其中的最大值,要求不使用if语句。

4.实验分析

在某些情况下条件运算符可以代替if语句的使用,条件运算符实现的是两个分支的运算,对于三个数,要使用两次该运算符。

5.参考程序

#include "iostream"

using namespace std;

void main()

{

   double n1,n2,n3,max;

   cout<<"请输入三个实数"<<endl;

cin>>n1>>n2>>n3;

   max=n1>n2?n1:n2;

   max=max>n3?max:n3;

cout<<"这三个数中的最大值是 "<<max<<endl;

}

6.思考问题

    程序中的两条赋值语句能否合并为一条?

1.4.14实验项目1-17 基本类型数据占用的空间

1.实验名称:基本类型数据占用的空间

2.实验目的

1)掌握数据类型基础

2)掌握基本控制结构

3.实验任务

显示基本类型数据占用空间的字节数。

4.实验分析

数据占用空间的字节数可以使用运算符sizeof来计算。

5.参考程序

#include "iostream"

using namespace std;

void main()

{

   cout<<"各类型数据占用的空间如下: "<<endl;

   cout<<"字符型 "<<sizeof(char)<<" 字节"<<endl;

   cout<<"短整型 "<<sizeof(short)<<" 字节"<<endl;

   cout<<"整型 "<<sizeof(int )<<" 字节"<<endl;  

   cout<<"长整型 "<<sizeof(long)<<" 字节"<<endl;  

   cout<<"无符号整型 "<<sizeof(unsigned int)<<" 字节"<<endl;

   cout<<"无符号短整型 "<<sizeof(unsigned short)<<" 字节"<<endl;

   cout<<"无符号长整型 "<<sizeof(unsigned long)<<" 字节"<<endl;

   cout<<"实型 "<<sizeof(float)<<" 字节"<<endl;

   cout<<"双精度 "<<sizeof(double)<<" 字节"<<endl;

   cout<<"布尔型 "<<sizeof(bool)<<" 字节"<<endl;

}

1.4.15实验项目1-18 交换两个变量的值

1.实验名称:交换两个变量的值

2.实验目的

1)掌握数据类型基础

2)掌握基本控制结构

3.实验任务

从键盘输入两个变量的值,然后交换这两个变量的值,分别显示交换前后这两个变量的值,两个变量类型的类型要求一致。

4.实验分析

交换两个变量的值,就像将两瓶不同颜色的墨水进行交换,可以借助于第三个空瓶子,所以这里使用第三个临时变量。

5.参考程序

#include "iostream"

using namespace std;

void main()

{

   int n1,n2,temp;   //t作为临时变量

   cout<<"请输入两个整数"<<endl;

   cin>>n1>>n2;

   cout<<"交换前"<<endl;

   cout<<"n1="<<n1<<'\t'<<"n2="<<n2<<endl;

   temp=n1;

   n1=n2;

   n2=temp;

   cout<<"交换后"<<endl;

   cout<<"n1="<<n1<<'\t'<<"n2="<<n2<<endl;

}

6.思考问题

    1)程序中的三条赋值语句的顺序有无特殊的要求?

    2)如果不借助第三个变量能否实现两个变量值的交换?

1.4.16实验项目1-19 温度单位的换算

1.实验名称温度单位的换算

2.实验目的

1)掌握数据类型基础

2)掌握基本控制结构

3.实验任务

输入一个摄氏温度,然后将其转换为华氏温度。

4.实验分析

摄氏温度C和华氏温度F之间的转换公式为:

  F9*C/5+32

5.参考程序

#include "iostream"

using namespace std;

void main()

{

   double C,F;

   cout<<"请输入摄氏温度"<<endl;

   cin>>C;

   F=9*C/5+32;

   cout<<"转换后的华氏温度为:"<<F<<endl;

}

6.思考问题

    可否将程序中的两个变量定义为整型?

1.4.17实验项目1-20  y是否在xz之间

1.实验名称:y是否在xz之间

2.实验目的

1)掌握数据类型基础

2)掌握基本控制结构

3.实验任务

已知两个变量x=1,z=100,输入第三个数给变量y,判断y的值是否在xz之间,要求不使用if语句关系运算符和条件运算符实现。

4.实验分析

判断y的值是否在xz之间,就是判断关系表达式y>x y<z是否同时成立,因为C++中关系表达式的值为逻辑值01,这两个关系表达式的值同时成立时,两个关系表达式之和为2,可以使用这种方法进行判断,题目要求不使用if语句,判断结果可以使用条件运算符来代替if语句。

5.参考程序

#include "iostream"

using namespace std;

void main()

{

   int x,y,z;

   x=1;

   z=100;

   cout<<"请输入变量y的值"<<endl;

   cin>>y;

   cout<<((y>x)+(y<z)==2?"y的值在xz之间":"y的值不在xz之间");

}

6.思考问题

    1)最后一条语句中最外层括号可否省略?

    2)能否使用表达式 x<y<z来进行判断?

1.4.18实验项目1-21 移位运算符的使用

1.实验名称:移位运算符的使用

2.实验目的

1)掌握数据类型基础

2)掌握基本控制结构

3.实验任务

输入一个整数,对该整数分别进行左移1~4位,右移1~4位,分析输出的结果。

4.实验分析

左移运算符与输出使用的插入运算符<<相同,右移运算符与输入时使用的提取运算符>>相同,依靠运算符左侧的操作数来区分。

5.参考程序

#include "iostream"

using namespace std;

void main()

{

   int n;

   cout<<"请输入一个整数"<<endl;

   cin>>n;

   cout<<"左移1位的结果:";

   cout<<(n<<1)<<endl;

   cout<<"左移2位的结果:";

   cout<<(n<<2)<<endl;

   cout<<"左移3位的结果:";

   cout<<(n<<3)<<endl;

   cout<<"左移4位的结果:";

   cout<<(n<<4)<<endl;

   cout<<"右移1位的结果:";

   cout<<(n>>1)<<endl;

   cout<<"右移2位的结果:";

   cout<<(n>>2)<<endl;

   cout<<"右移3位的结果:";

   cout<<(n>>3)<<endl;

   cout<<"右移4位的结果:";

   cout<<(n>>4)<<endl;

}

6.思考问题

    程序中的圆括号是否可以省略?

1.4.19实验项目1-22 使用异或运算交换两个变量的值

1.实验名称:使用异或运算交换两个变量的值

2.实验目的

1)掌握数据类型基础

2)掌握基本控制结构

3.实验任务

从键盘输入两个变量的值,然后交换这两个变量的值,分别显示交换前后这两个变量的值,两个变量类型的类型要求一致,要求使用异或运算实现。

4.实验分析

位运算中异或运算"^"的规则时,对应的二进制位相同为0,不同为1,可以得出结论,对于两个变量xy,  x=x^y^y;  利用这个关系可以在交换两个变量的值时不借助第三个变量。

5.参考程序

#include "iostream"

using namespace std;

void main()

{

   int n1,n2; 

   cout<<"请输入两个整数"<<endl;

   cin>>n1>>n2;

   cout<<"交换前"<<endl;

   cout<<"n1="<<n1<<'\t'<<"n2="<<n2<<endl;

   n1=n1^n2;

   n2=n1^n2;

   n1=n1^n2;

   cout<<"交换后"<<endl;

   cout<<"n1="<<n1<<'\t'<<"n2="<<n2<<endl;

}

6.思考问题

    如何将表达式x=x^y^y的关系用在信息的加密和解密?

1.4.20实验项目1-23 使用加法运算交换两个变量的值

1.实验名称:使用加法运算交换两个变量的值

2.实验目的

1)掌握数据类型基础

2)掌握基本控制结构

3.实验任务

从键盘输入两个变量的值,然后交换这两个变量的值,分别显示交换前后这两个变量的值,两个变量类型的类型要求一致,要求使用加法和减法运算实现。

4.实验条件

Visual Studio 6.0

5.实验分析

对两个变量n1n2,分别使用以下三条赋值语句实现交换:

   n1=n1+n2;

   n2=n1-n2;

   n1=n1-n2;

6.参考程序

#include "iostream"

using namespace std;

void main()

{

   int n1,n2; 

   cout<<"请输入两个整数"<<endl;

   cin>>n1>>n2;

   cout<<"交换前"<<endl;

   cout<<"n1="<<n1<<'\t'<<"n2="<<n2<<endl;

   n1=n1+n2;

   n2=n1-n2;

   n1=n1-n2;

   cout<<"交换后"<<endl;

   cout<<"n1="<<n1<<'\t'<<"n2="<<n2<<endl;

}

7.思考问题

    程序中三条赋值语句的顺序和加减运算的顺序可否改变?

1.4.21实验项目1-24 使用转义字符实现换行和对齐数据

1.实验名称:使用转义字符实现换行和对齐数据

2.实验目的

1)掌握数据类型基础

2)掌握基本控制结构

3.实验任务

输出1~100之间的偶数,每行输出5个,各列要求对齐,要求换行和对齐都使用转义字符实现。

4.实验分析

转义字符'\t'是制表符,可以将输出放到每个制表区,转义字符'\n'是换行,每行输出5个可以通过计数来实现。

5.参考程序

#include "iostream"

using namespace std;

void main()

{

   int i,count=0;

   for (i=2;i<=100;i+=2)

   {

            cout<<i<<'\t';

       count++;

       if (count==5)

            {

                      cout<<endl;

           count=0;

            }

   }

}

6.思考问题

    如果不使用计数的方法,如何保证每行显示5个数据?

1.4.22实验项目1-25 计算三角形的面积

1.实验名称:计算三角形的面积

2.实验目的

1)掌握数据类型基础

2)掌握基本控制结构

3.实验任务

从键盘输入三角形的三条边,计算该三角形的面积。

4.实验分析

三角形的面积使用如下的公式进行计算:

  其中 s=(a+b+c)/2

其中计算平方根可以使用函数sqrt(),该函数在cmath库中定义,所以要先对该库进行包含。

5.参考程序

#include "iostream"

#include "cmath"

using namespace std;

void main()

{

   double a,b,c,s,area;

   cout<<"请输入三角形的三条边"<<endl;

   cin>>a>>b>>c;

   s=(a+b+c)/2;

   area=sqrt(s*(s-a)*(s-b)*(s-c));

   cout<<"该三角形的面积为:"<<area<<endl;

}

6.思考问题

    当输入的数据不能构成三角形时结果会怎样?

1.4.23实验项目1-26 数据溢出的结果

1.实验名称:数据溢出的结果

2.实验目的

1)掌握数据类型基础

2)掌握基本控制结构

3.实验任务

通过无符号短整型变量验证数据溢出的结果。

4.实验分析

无符号短整型变量容纳的数据范围是0~65535,对该变量赋给不同的数据,包括超出该范围的数据,分析输出的结果。

5.参考程序

#include "iostream"

#include "cmath"

using namespace std;

void main()

{

   short unsigned n;

   n=65535;

   cout<<"这是正确范围的结果 "<<n<<endl;

   n=65536;

   cout<<"这是溢出的结果 "<<n<<endl;

   n=-1;

   cout<<"这是溢出的结果 "<<n<<endl;

}

6.思考问题

    请分析程序输出的结果?

1.4.24实验项目1-27 字符'A'的不同赋值方法

1.实验名称:字符'A'的不同赋值方法

2.实验目的

1)掌握数据类型基础

2)掌握基本控制结构

3.实验任务

用不同的方法给字符变量赋值,结果都输出字符'A'

4.实验分析

可以直接用字符'A'进行赋值,也可以用其对应的ASCII码赋值,也可以使用表达式。

5.参考程序

#include "iostream"

#include "cmath"

using namespace std;

void main()

{

   char c;

   int n=20;

   c='A';

   cout<<"直接使用字符赋值的结果 "<<c<<endl;

   c=65;

   cout<<"使用字符的ASCII码的结果 "<<c<<endl;

   c='\x41';

   cout<<"使用十六进制ASCII码的结果 "<<c<<endl;

   c='\101';

   cout<<"使用八进制ASCII码的结果 "<<c<<endl;

   c=n+45;

   cout<<"使用表达式的值作为ASCII码的结果 "<<c<<endl;

}

6.思考问题

如果要使用十六进制ASCII码输出所有大写字母,该如何修改程序?

1.4.25实验项目1-28 显示1990~2020年之间的所有闰年年份

1.实验名称:显示1990~2020年之间的所有闰年年份

2.实验目的

1)掌握数据类型基础

2)掌握基本控制结构

3.实验任务

使用循环显示1990~2020年之间的所有闰年年份。

4.实验分析

对于年份year闰年的判断标准为满足以下两个条件之一:

l         年份值能被4整除并且不能被100整除的为闰年;

l         年份能被400整除的是闰年。

5.参考程序

#include "iostream"

#include "cmath"

using namespace std;

void main()

{

   int year;

   cout<<"1990~2020年中的闰年有"<<endl;

   for(year=1990;year<=2020;year++)

            if(year%400==0 || (year%4==0 && year%100!=0))

                      cout<<year<<'\t';

}

6.思考问题

    程序中if语句中的内层圆括号可否省略?

1.4.26实验项目1-29 判断一个四位的整数是否为回文数

1.实验名称:判断一个四位的整数是否为回文数

2.实验目的

1)掌握数据类型基础

2)掌握基本控制结构

3.实验任务

从键盘输入一个四位的整数,然后判断该整数是否是回文数。

4.实验分析

回文数是指由该数各位上数字反序构成的数与原数相同,对于四位整数,可以简单地判断两个条件即千位和个位、百位和十位是否相等,所以先分解出各位数字。

5.参考程序

#include "iostream"

#include "cmath"

using namespace std;

void main()

{

   int n,d1,d2,d3,d4;      //d1,d2,d3,d4分别用来表示各位数字

   cout<<"请输入一个四位的整数:";

   cin>>n;

   d1=n/1000;                           // 千位

   d2=n/100%10;                      // 百位

   d3=n/10%10;                        // 十位

   d4=n%10;                              // 个位

   if(d1==d4 && d2==d3)

       cout<<"该数是回文数"<<endl;

   else

       cout<<"该数不是回文数"<<endl;

}

6.思考问题

    1)分解各位数字是否有其它的表达式?

    2)如果要判断的整数位数事先不确定,程序如何修改?

1.4.27实验项目1-30 &符号的作用

1.实验名称:&符号的作用

2.实验目的

1)掌握数据类型基础

2)掌握基本控制结构

3.实验任务

验证符号&C++中的作用。

4.实验分析

C++中,&的作用有三个,两个连用的&&作为逻辑与运算,使用一个&符号可以是位与运算,也可以是求地址运算,前者作为双目运算,后者作为单目运算。

5.参考程序

#include "iostream"

#include "cmath"

using namespace std;

void main()

{

   int a,b;

   a=3;

   b=4;

   cout<<"作为逻辑与运算的结果: "<<(a&&b)<<endl;

   cout<<"作为位与运算的结果: "<<(a&b)<<endl;

   cout<<"作为取地址运算的结果: "<<&a<<endl;

   cout<<"作为取地址运算的结果: "<<&b<<endl;

}

6.思考问题

    1)分析输出的结果?

    2)和或运算有关的符号|的作用如何区分?