中南大学实验报告课程名称c++程序设计实验项目名称实验4实验5实验6指导老师向瑶实验学生班级电子信息工程1503实验学生姓名陶韬学号0903130309实验时间2016.4.1至4.10实验地点校本部科技楼4楼实验成绩评定实验二数据类型与表达式实验2.1输入并运行下面的程序#includeiostreamusingnamespacestd;intmain(){inta,b;charc1,c2;cinab;c1=++a;c2=b++;coutc1=c1,c2=c2endl;return0;}因为连续输入求结果为了省去重复编译运行我们可以加上一个while循环改进后的代码为#includeiostreamusingnamespacestd;intmain(){inta,b,flag;charc1,c2;while(flag!=0){cout请输入2个变量的值和一个控制变量除非控制变量为0\n否则程序将一直运行下去\n;cinab;c1=++a;c2=b++;coutc1=c1,c2=c2endl;}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#includeiostreamusingnamespacestd;intmain(){charc1='c',c2='+',c3='+';coutIsay:\c1c2c3'\';cout\t\tHesays:\C++isveryintersting!\'\n';return0;}实验2.2结果Isay:”C++”Hesays:”C++isveryinteresting”实验2.3#includeiostreamusingnamespacestd;intmain(){inti,j,m,n;i=8;j=10;m=++i+j++;n=(++i)+(++j)+m;couti'\t'j'\t'm'\t'nendl;return0;}输出结果为10121941将第七八行改为m=i+++j++;n=(i++)+(j++)+m;输出结果为10121838将第九行cout语句改为cout++i’\t’++j’\t’++m’\t’++nendl;11131939再将cout语句改为couti++’\t’+j++’\t’m++’\t’n++endl;10121838实验2.4.1代码#includeiostreamusingnamespacestd;main(){charc[5];inti=1;for(i=0;i5;i++)//把密码原文存储在一个字符数组中{cout请输入第i+1个字母endl;cinc[i];}for(i=0;i5;i++)//进行加密{c[i]+=4;}coutPasswordis:;for(i=0;i5;i++)//输出加密后的密码{coutc[i];}coutendl;}输出结果请输入第1个字母C请输入第2个字母h请输入第3个字母i请输入第4个字母n请输入第5个字母aPasswordis:GlmrePressanykeytocontinue实验2.4.2改变c1c2c3c4c5的初值为‘T’,‘o’,‘d’,‘a’,‘y’对译码规律作如下补充:W用A代替,X用B代替,Y用C代替,Z用D代替。修改程序并运行。分析:W的ASCII码为87A为65所以减去22就可以代码#includeiostreamusingnamespacestd;main(){charc[5];inti=1;for(i=0;i5;i++)//把密码原文存储在一个字符数组中{cout请输入第i+1个字母endl;cinc[i];}for(i=0;i5;i++)//进行加密{if(c[i]=90&&c[i]=87)//对WXYZ作特殊处理c[i]-=22;elsec[i]+=4;}coutPasswordis:;for(i=0;i5;i++)//输出加密后的密码{coutc[i];}coutendl;}运行结果请输入第1个字母T请输入第2个字母o请输入第3个字母d请输入第4个字母a请输入第5个字母yPasswordis:Xshe}Pressanykeytocontinue这里应该是题目出错了题目原意应该是将小写的w,x,y,z替换为大写的WXYZ因为大写的WXYZ就算加上4还是在字母表的范围内这里给出了修改后题目的代码以及运行结果望老师批评改正代码#includeiostreamusingnamespacestd;main(){charc[5];inti=1;for(i=0;i5;i++)//把密码原文存储在一个字符数组中{cout请输入第i+1个字母endl;cinc[i];}for(i=0;i5;i++)//进行加密{if(c[i]=122&&c[i]=119)//对WXYZ作特殊处理c[i]-=54;elsec[i]+=4;}coutPasswordis:;for(i=0;i5;i++)//输出加密后的密码{coutc[i];}coutendl;}运行结果#includeiostreamusingnamespacestd;main(){charc[5];inti=1;for(i=0;i5;i++)//把密码原文存储在一个字符数组中{cout请输入第i+1个字母endl;cinc[i];}for(i=0;i5;i++)//进行加密{if(c[i]=122&&c[i]=119)//对WXYZ作特殊处理c[i]-=54;elsec[i]+=4;}coutPasswordis:;for(i=0;i5;i++)//输出加密后的密码{coutc[i];}coutendl;}实验2.4.3将译码规则修改为:将一个字母被它前面第四个字母代替,例如E用A代替,Z用U代替,D用Z代替,C用y代替,B用x代替,A用w代替(这里是我修改后的题目原题应该也是不严谨的)代码#includeiostreamusingnamespacestd;main(){charc[5];inti=1;for(i=0;i5;i++)//把密码原文存储在一个字符数组中{cout请输入第i+1个字母endl;cinc[i];}for(i=0;i5;i++)//进行加密{if(c[i]=68&&c[i]=65)//对WXYZ作特殊处理c[i]+=54;elsec[i]+=4;}coutPasswordis:;for(i=0;i5;i++)//输出加密后的密码{coutc[i];}coutendl;}运行结果请输入第1个字母C请输入第2个字母h请输入第3个字母i请输入第4个字母n请输入第5个字母aPasswordis:ylmrePressanykeytocontinue