实验2 数据类型与表达式.docx
《实验2 数据类型与表达式.docx》由会员分享,可在线阅读,更多相关《实验2 数据类型与表达式.docx(13页珍藏版)》请在冰豆网上搜索。
实验2数据类型与表达式
中南大学
实验报告
课程名称c++程序设计
实验项目名称实验4实验5实验6
指导老师向瑶
实验学生班级电子信息工程1503
实验学生姓名陶韬
学 号0903130309
实验时间2016.4.1至4.10
实验地点校本部科技楼4楼
实验成绩评定
实验二数据类型与表达式
实验2.1
输入并运行下面的程序
#include
usingnamespacestd;
intmain()
{
inta,b;
charc1,c2;
cin>>a>>b;
c1=++a;
c2=b++;
cout<<"c1="<return0;
}
因为连续输入求结果为了省去重复编译运行我们可以加上一个while循环改进后的代码为
#include
usingnamespacestd;
intmain()
{
inta,b,flag;
charc1,c2;
while(flag!
=0)
{
cout<<"请输入2个变量的值和一个控制变量除非控制变量为0\n否则程序将一直运行下去\n";
cin>>a>>b;
c1=++a;
c2=b++;
cout<<"c1="<}
return0;
}
实验2.1的运行结果
输入9797结果c1=b,c2=a
对于c1而言a先自加再赋给c1对于c2而言b先赋给c2再自加
输入97353结果c1=b,c2=a
因为b的值为353而353的二进制表示为101100001又char类型只占一个字节也就是八位所以截取353的二进制的低八位01100001也就是十进制的97
输入4064结果c1=),c2=@
41对应的ASCII码值对应的字符是‘)’64对应的ASCII码值对应的字符是‘@’
整型和字符型在一定范围内可以转换
输入-212-216结果c1=-,c2=(
分析因为负数在计算机中是以补码的形式存在的
-212+1=-211
-211的原码为1000000000000000000000000000000011010011(最高位为符号位)
原码取反1111111111111111111111111111111100101100
再加11111111111111111111111111111111100101101
因为char类型只占一个字节也就是8位所以只去低八位也就是00101101换算成十进制也就是45而45对应的ASCII码值对应的char为‘-’
-216的原码为10000000000000000000000011011000
原码取反11111111111111111111111100100111
+111111111111111111111111100101000
取低八位00101000——————40——————‘(’
实验2.2
#include
usingnamespacestd;
intmain()
{
charc1='c',c2='+',c3='+';
cout<<"Isay:
\""<cout<<"\t\t"<<"Hesays:
\"C++isveryintersting!
\""<<'\n';
return0;
}
实验2.2结果
Isay:
”C++”Hesays:
”C++isveryinteresting”
实验2.3
#include
usingnamespacestd;
intmain()
{
inti,j,m,n;
i=8;
j=10;
m=++i+j++;
n=(++i)+(++j)+m;
cout<
return0;
}
输出结果为
10121941
将第七八行改为
m=i+++j++;
n=(i++)+(j++)+m;
输出结果为
10121838
将第九行cout语句改为
cout<<++i<<’\t’<<++j<<’\t’<<++m<<’\t’<<++n<11131939
再将cout语句改为
cout<
10121838
实验2.4.1
代码
#include
usingnamespacestd;
main()
{
charc[5];
inti=1;
for(i=0;i<5;i++)//把密码原文存储在一个字符数组中
{
cout<<"请输入第"<
cin>>c[i];
}
for(i=0;i<5;i++)//进行加密
{
c[i]+=4;
}
cout<<"Passwordis:
";
for(i=0;i<5;i++)//输出加密后的密码
{
cout<}
cout<
}
输出结果
请输入第1个字母
C
请输入第2个字母
h
请输入第3个字母
i
请输入第4个字母
n
请输入第5个字母
a
Passwordis:
Glmre
Pressanykeytocontinue
实验2.4.2
改变c1c2c3c4c5的初值为‘T’,‘o’,‘d’,‘a’,‘y’对译码规律作如下补充:
W用A代替,X用B代替,Y用C代替,Z用D代替。
修改程序并运行。
分析:
W的ASCII码为87A为65所以减去22就可以
代码
#include
usingnamespacestd;
main()
{
charc[5];
inti=1;
for(i=0;i<5;i++)//把密码原文存储在一个字符数组中
{
cout<<"请输入第"<
cin>>c[i];
}
for(i=0;i<5;i++)//进行加密
{
if(c[i]<=90&&c[i]>=87)//对WXYZ作特殊处理
c[i]-=22;
else
c[i]+=4;
}
cout<<"Passwordis:
";
for(i=0;i<5;i++)//输出加密后的密码
{
cout<}
cout<
}
运行结果
请输入第1个字母
T
请输入第2个字母
o
请输入第3个字母
d
请输入第4个字母
a
请输入第5个字母
y
Passwordis:
Xshe}
Pressanykeytocontinue
这里应该是题目出错了题目原意应该是将小写的w,x,y,z替换为大写的WXYZ
因为大写的WXYZ就算加上4还是在字母表的范围内
这里给出了修改后题目的代码以及运行结果望老师批评改正
代码
#include
usingnamespacestd;
main()
{
charc[5];
inti=1;
for(i=0;i<5;i++)//把密码原文存储在一个字符数组中
{
cout<<"请输入第"<
cin>>c[i];
}
for(i=0;i<5;i++)//进行加密
{
if(c[i]<=122&&c[i]>=119)//对WXYZ作特殊处理
c[i]-=54;
else
c[i]+=4;
}
cout<<"Passwordis:
";
for(i=0;i<5;i++)//输出加密后的密码
{
cout<}
cout<
}
运行结果
#include
usingnamespacestd;
main()
{
charc[5];
inti=1;
for(i=0;i<5;i++)//把密码原文存储在一个字符数组中
{
cout<<"请输入第"<
cin>>c[i];
}
for(i=0;i<5;i++)//进行加密
{
if(c[i]<=122&&c[i]>=119)//对WXYZ作特殊处理
c[i]-=54;
else
c[i]+=4;
}
cout<<"Passwordis:
";
for(i=0;i<5;i++)//输出加密后的密码
{
cout<}
cout<
}
实验2.4.3
将译码规则修改为:
将一个字母被它前面第四个字母代替,例如E用A代替,Z用U代替,D用Z代替,C用y代替,B用x代替,A用w代替(这里是我修改后的题目原题应该也是不严谨的)
代码#include
usingnamespacestd;
main()
{
charc[5];
inti=1;
for(i=0;i<5;i++)//把密码原文存储在一个字符数组中
{
cout<<"请输入第"<
cin>>c[i];
}
for(i=0;i<5;i++)//进行加密
{
if(c[i]<=68&&c[i]>=65)//对WXYZ作特殊处理
c[i]+=54;
else
c[i]+=4;
}
cout<<"Passwordis:
";
for(i=0;i<5;i++)//输出加密后的密码
{
cout<}
cout<
}
运行结果
请输入第1个字母
C
请输入第2个字母
h
请输入第3个字母
i
请输入第4个字母
n
请输入第5个字母
a
Passwordis:
ylmre
Pressanykeytocontinue