C++实验三及参考答案

  • 格式:doc
  • 大小:78.00 KB
  • 文档页数:9

上海电力学院实验报告课程名称高级程序设计C++(1)实验项目实验3 选择结构程序设计姓名学号班级专业信息安全同组人姓名无指导教师姓名实验日期2014年10月30日一、实验目的熟悉和理解C++语言中的内部数据类型、各种运算符和表达式灵活运用各种运算符构造不同含义的表达式,特别是条件表达式的构造观察头文件的作用熟练掌握选择语句if语句和switch的应用应用前面所学,编写简单的应用程序通过本节实验继续熟悉VC++开发环境的使用,特别是单步执行和观察变量值的变化二、实验内容和步骤1、输入并运行下面的程序#include <iostream>using namespace std;void main(){char c1, c2;c1 = 'a';c2 = 'b';cout<<c1<<endl;cout<<c2<<endl;}按以下要求修改运行程序,观察不同情况下是否能正常运行,及分析运行结果。

(1)运行此程序。

●运行结果(将相关的编译错误粘贴在这里)(2)将第2行改为:int c1,c2;再使之运行,并观察结果。

●运行结果(将相关的编译错误粘贴在这里)●输出97 <回车>98<回车>(3)再将第3、4行改为:c1 = a; /* 不用单撇号*/c2 = b;再使之运行,分析其运行结果。

●运行结果(将相关的编译错误粘贴在这里)报错,因为变量a和变量b没有定义.(4)再将第3、4行改为:c1 = ”a”; /* 用双撇号*/c2 = ”b”;再使之运行,分析其运行结果。

●运行结果(将相关的编译错误粘贴在这里)报错,因为不能将字符串”a”和”b”赋给一个char 类型的变量.(5)再将第3、4行改为:c1 = 97+256; /* 用大于255的整数*/c2 = 98+256;再使之运行,分析其运行结果。

●运行结果(将相关的编译错误粘贴在这里)●输出97 <回车>98<回车>, 256超出表示范围,被取模模掉了2.输入并分析如下两个程序,并按要求运行,观察运行时用户输入数据使用cin和getchar的不同情况。

/*程序1*/#include<iostream>using namespace std;void main(){char ch1,ch2,ch3;cout<<"请输入三个字符:";cin>>ch1>>ch2>>ch3;cout<<"您输入的字符为:"<<endl;cout<<ch1<<endl;cout<<ch2<<endl;cout<<ch3<<endl;}1. 输入内容为 abc●运行结果2. 输入内容为a b c●运行结果3. 输入内容为:a<enter键>b<enter键>c<enter键>●运行结果说明: 以上均能正确的将a b c三个字符分别赋值给ch1,ch2,ch3/*程序2*/#include<iostream>using namespace std;void main(){char ch1,ch2,ch3;cout<<"请输入三个字符:";ch1=getchar();ch2=getchar();ch3=getchar();cout<<"您输入的字符为:"<<endl;cout<<ch1<<endl;cout<<ch2<<endl;cout<<ch3<<endl;}1. 输入内容为 abc●运行结果2. 输入内容为a b c●运行结果3. 输入内容为:a<enter键>b<enter键>c<enter键> (程序会等你输入完吗?)●运行结果●说明:用ch=getchar()和cin>>ch接收字符常量的区别在于,cin会将字符之间的分隔符(指空格,回车,或tab键,注意,不包括逗号,逗号不是c++里的分隔符)当成分隔符.而getchar()是比较低级的取输入数据的方式,它会把空格,回车等也当作一个符号接收进来,因此,2中,ch1为a,ch2为空格符,ch3为b,3中,ch1为a,ch2为回车符,ch3为b3. 按要求编写程序并上机运行1)将”China”译成密码,译码规律是:用原来字母后面的第4个字母代替原来的字母。

例如,字母’A’后面第4个字母是’E’,用’E’代替’A’。

因此,”China”应译为”Glmre”。

请编一程序,用赋初值的方法使c1、c2、c3、c4、c5 五个变量的值分别为’C’、’h’、’i’、’n’、’a’,经过运算,使c1、c2、c3、c4、c5分别变为’G’、’l’、’m’、’r’、’e’、,并输出。

(1) 输入并运行程序。

分析是否符合要求。

●程序源代码(注意添加注释)#include<iostream>using namespace std;void main(){char c1,c2,c3,c4,c5;c1='C';c2='h';c3='i';c4='n';c5='a';c1=c1+4;c2=c2+4;c3=c3+4;c4=c4+4;c5=c5+4;cout<<c1<<c2<<c3<<c4<<c5<<endl;}●运行结果(直接截取结果图)(2) 改变c1、c2、c3、c4、c5的初值为:’T’、’o’、’d’、’a’、’y’,对译码规律作如下补充:’W’用’A’ 代替,’X’用’B’代替,’Y’用’C’代替,’Z’用’D’代替。

修改程序并运行。

(注意: c5的变化为c5+4-26)●程序源代码(注意添加注释)#include<iostream>using namespace std;void main(){char c1,c2,c3,c4,c5;c1='T';c2='o';c3='d';c4='a';c5='y';c1=c1+4;c2=c2+4;c3=c3+4;c4=c4+4;c5=c5+4-26;cout<<c1<<c2<<c3<<c4<<c5<<endl;}●运行结果(直接截取结果图)(3) 由用户输入5个英文字符。

并将译码规律修改为:将字母用它前面的第4个字母代替,例如:’E’用’A’ 代替,’Z’用’U’代替,’D’用’Z’代替,’C’用’Y’代替,’B’用’X’代替,’A’用’V’代替。

修改程序并运行。

(提示: 使用if 语句进行判断,如果变量为小写字母减去4之后值小于’a’,或者为大写字母且减去4之后值小于’a’,则将其值加上26●程序源代码(注意添加注释)#include<iostream>using namespace std;void main(){char c1,c2,c3,c4,c5;cout<<"请输入五个英文字符:";cin>>c1>>c2>>c3>>c4>>c5;c1=c1-4;c2=c2-4;c3=c3-4;c4=c4-4;c5=c5-4;if(c1+4>='a'&&c1<'a'||c1+4>='A'&&c1<'A')c1=c1+26;if(c2+4>='a'&&c2<'a'||c2+4>='A'&&c2<'A')c2=c2+26;if(c3+4>='a'&&c3<'a'||c3+4>='A'&&c3<'A')c3=c3+26;if(c4+4>='a'&&c4<'a'||c4+4>='A'&&c4<'A')c4=c4+26;cout<<c●运行结果(直接截取结果图)2)编写程序,从键盘输入任意字符,判断该字符是数字字符(’0’…’9’)还是英文字母,若为英文字母,再判断是大写还是小写字母,若不是上述两种情况,则输出是特殊字符,并将其ASCII一起输出。

●程序源代码(注意添加注释)#include<iostream>using namespace std;int main(){char ch;cout<<"请输入一个字符";cin>>ch;if(ch>='0'&&ch<='9')cout<<"是数字字符"<<endl;elseif(ch>='a'&&ch<='z'||ch>='A'&&ch<='Z'){cout<<"是英文字符";if(ch>='a'&&ch<='z')cout<<",且为小写字符"<<endl;elsecout<<",且为大写字符"<<endl;}elsecout<<"是特殊字符,其编码为:"<<(int)ch<<endl;return 0;}●运行结果(直接截取结果图)3)输入三个整数,再将这三个整数按从小到大的顺序输出,要求使用if或if-else语句实现.●程序源代码(注意添加注释)#include<iostream>using namespace std;int main(){int a,b,c;cout<<"请输入三个整数:";cin>>a>>b>>c;if(a<b){if(b<c)cout<<a<<','<<b<<','<<c<<endl;else{if(a<c)cout<<a<<','<<c<<','<<b<<endl;elsecout<<c<<','<<a<<','<<b<<endl;}}else{if(a<c)cout<<b<<','<<a<<','<<c<<endl;else{if(b<c)cout<<b<<','<<c<<','<<a<<endl;elsecout<<c<<','<<b<<','<<a<<endl;}}return 0;}●运行结果(直接截取结果图)4)模拟剪刀,石头,布游戏,用s表示剪刀,r表示石头,p表示布,游戏规则为:剪刀剪布,石头杂剪刀,布包石头.两名游戏者分别输入s,r或p,按照游戏规则输出“平局”,“前者胜”,“后者胜”三种结果。