case 13
十进制转十六进制c语言函数
十进制转十六进制c语言函数今天有位朋友在群里面问如何接收串口调试助手发来的十六进制数据,并以十六进制的形式显示在LCD上。
比如串口调试助手上发送十六进制数据3C,单片机带的LCD上也显示3C。
单片机接收到来自电脑串口的数据0x3C后,存储到一个变量中,当我们调用显示数字的函数时,实际上显示出来的是十进制的数据,例如发送0x3C,会显示十进制数据60。
看来要想显示十六进制,还不是那么容易。
十六进制中,包含0~9数字,还包含A~F字母,看来要想显示,必须要用显示字符的函数而不能用显示数字的函数了。
但是不能直接调用显示字符的函数。
因为要想显示3C,实际上是要显示2个字符,你如果直接把数据带进去,实际上他会认为是一个字符的ASCII码。
于是我们要把发过来的数据变换成两个字符,用下面的公式:shi = rece_data/16; // 获取第一位ge = rece_data%16; // 获取第二位然后把数字转换成字符:switch(shi){case 0:shi='0';break;case 1:shi='1';break;case 2:shi='2';break;case 3:shi='3';break;case 4:shi='4';break;case 5:shi='5';break;case 6:shi='6';break;case 7:shi='7';break;case 8:shi='8';break;case 9:shi='9';break;case 10:shi='A';break;case 11:shi='B';break;case 12:shi='C';break;case 13:shi='D';break;case 14:shi='E';break;case 15:shi='F';break;default:break;}switch(ge){case 0:ge='0';break;case 1:ge='1';break;case 2:ge='2';break;case 3:ge='3';break;case 4:ge='4';break;case 5:ge='5';break;case 6:ge='6';break;case 7:ge='7';break;case 8:ge='8';break;case 9:ge='9';break;case 10:ge='A';break;case 11:ge='B';break;case 12:ge='C';break;case 13:ge='D';break;case 14:ge='E';break;case 15:ge='F';break;default:break;}然后就可以显示了:LCD_ShowChar(xpos, ypos, shi); LCD_ShowChar(xpos+8, ypos, ge);实践图片欣赏:总结一下,实际上用到的原理是十进制转十六进制函数。
密码学经典案例
密码学经典案例Case 1初见密码20、8、1、14、11/25、15、21/9/12、15、22、5/25、15、21/这就是在一本香港出版的智力游戏书籍中发现这个密码的。
解密的方法很简单,只要把a=1,b=2,… z=26代入code,就可以非常容易地得到明文:Thank you , I love you。
怎么样,就是不就是很容易?不过如果将四则运算加入译码(比如让a=2等),破译时就有一定的难度了。
这就是一种很典型的古典密码。
Case 2凯撒密钥提到古典密码,就不能不提到著名的凯撒密钥。
基本上每一本密码学方面的基础教材在提到古典密码时,都会举出凯撒密钥的例子。
凯撒密钥的加密公式就是:c≡ m + k mod 26凯撒密钥又称为单表代替法。
其中m为明文的数据,c为加密后的数据,而k就是密钥。
当年凯撒指导军团作战,使用的就就是这套密码体系。
比如让a=d,b=e,c=f……依此类推。
这在密码史上产生了重要的影响,不能不说就是一个经典。
Case 3密码释义使用电脑多了的人,听到“密码”一词总会想到password。
其实在英语中,主要有两种对密码的解释。
一个就就是password,还有一个就是 code。
后者比较不常用一点,不过程序员(coder)对这个词还就是有着比较深的感情的。
其实password与code在含义上就是有着本质的区别的。
对于password,称它为“口令”似乎更贴切一些。
比如Windows 的开机密码,比如FTP的登陆口令,等等。
其特征就是把输入的一个字符串与标准答案进行比对,根据其结果来决定就是否授予通过的权限。
这个比对的工作就是一次性的,而且原理简单。
而code就不同。
对于code,主要体现的就是“翻译”的过程,牵涉到对信息的编码与译码。
比如凯撒密钥,比如RSA算法,等等。
这里面牵涉到很多数学的东西,比如对字符的分解与重组等。
当然,从广义的角度讲,code的编码与译码也可以往数学以外的方面延伸,这又涉及到很多典故,在此按下不表。
转换进制程序C语言,C语言各进制转换源代码
转换进制程序C语⾔,C语⾔各进制转换源代码#include#include#includevoid ten_two(int);void ten_eight(int);void ten_sixten(int);void two_ten(int);void two_eight(int);void two_sixten(int);void eight_two(int);void eight_ten(int);void eight_sixten(int);void sixten_two(char r[], int k);void sixten_ten(char r[], int k);void sixten_eight(char r[], int k);int main(void){int i, j, number = 0;int temp;char change[10];printf("=============================================================\n");printf(" 欢 迎 使 ⽤ 进 制 转 换 程 序 \n");printf(" 作 者:李 研 时 间:2009 年7 ⽉5 ⽇ \n");printf("=============================================================\n");do{temp = 0;//fflush(stdin);printf("\n请选择转换前的进制:\n2⼆进制\n8⼋进制\n10⼗进\n16⼗六进制\n0退出\n");printf("转换前的进制是:");scanf("%d", &i);case 2:printf("\n请选择转换后的进制:\n2⼆进制\n8⼋进制\n10⼗进\n16⼗六进制\n0退出\n"); printf("转换后的进制是:");scanf("%d", &j);switch(j){case 2:printf("\n同进制之间不⽤转化!\n");temp = 1;break;case 8:printf("\n请输⼊您想要转化的数:");scanf("%d", &number);two_eight(number);temp = 1;break;case 10:printf("\n请输⼊您想要转化的数:");scanf("%d", &number);two_ten(number);temp = 1;break;case 16:printf("\n请输⼊您想要转化的数:");scanf("%d", &number);two_sixten(number);temp = 1;break;case 0:printf("谢谢使⽤!!");}break;printf("转换后的进制是:");scanf("%d", &j);switch(j){case 8:printf("\n同进制之间不⽤转化!\n");temp = 1;break;case 2:printf("\n请输⼊您想要转化的数:");scanf("%d", &number);eight_two(number);temp = 1;break;case 10:printf("\n请输⼊您想要转化的数:");scanf("%d", &number);eight_ten(number);temp = 1;break;case 16:printf("\n请输⼊您想要转化的数:");scanf("%d", &number);eight_sixten(number);temp = 1;break;case 0:printf("谢谢使⽤!!");}break;case 10:printf("\n请选择转换后的进制:\n2⼆进制\n8⼋进制\n10⼗进\n16⼗六进制\n0退出\n");{case 10:printf("\n同进制之间不⽤转化!\n");temp = 1;break;case 2:printf("\n请输⼊您想要转化的数:");scanf("%d", &number);ten_two(number);temp = 1;break;case 8:printf("\n请输⼊您想要转化的数:");scanf("%d", &number);ten_eight(number);temp = 1;break;case 16:printf("\n请输⼊您想要转化的数:");scanf("%d", &number);ten_sixten(number);temp = 1;break;case 0:printf("谢谢使⽤!!");}break;case 16:printf("\n请选择转换后的进制:\n2⼆进制\n8⼋进制\n10⼗进\n16⼗六进制\n0退出\n"); printf("转换后的进制是:");scanf("%d", &j);printf("\n同进制之间不⽤转化!\n"); temp = 1;break;case 2:printf("\n请输⼊您想要转化的数:"); fflush(stdin);gets(change);for(number = 0;; number++){if(change[number] == '\0') break;}sixten_two(change, number);temp = 1;break;case 8:printf("\n请输⼊您想要转化的数:"); fflush(stdin);gets(change);for(number = 0;; number++){if(change[number] == '\0') break;}sixten_eight(change, number); temp = 1;break;case 10:printf("\n请输⼊您想要转化的数:"); fflush(stdin);gets(change);if(change[number] == '\0')break;}sixten_ten(change, number);temp = 1;break;case 0:printf("谢谢使⽤!!");}break;case 0:printf("\n谢谢使⽤!\n");}}while(temp == 1);return 0;}/*以下为: ⼆进制转换为⼗进制,⼋进制,⼗六进制.*/ void two_ten(int a){int i, s = 0;int result = 0;for(i = 1; a != 0; i *= 2){if(a % 10 > 1){s = 1;break;}else{result += (a % 10) * i;}if(s == 1)printf("您的输⼊有误!请重新输⼊\n"); elseprintf("\n转换后的数为:%d\n", result); }void two_eight(int a){int i, j, k, s = 0;int p[30];int result = 0;for(i = 1; a != 0; i *= 2){if(a % 10 > 1){s = 1;break;}else{result += (a % 10) * i;a = a / 10;}}for(j = 0; result != 0; j++){p[j] = result % 8;result = result / 8;}if(s == 1)printf("It is wrong\n");elsefor(k = j - 1; k >= 0; k--) {printf("%d", p[k]);}printf("\n");}}void two_sixten(int a){int i, j, k, s = 0;char p[30];int result = 0;for(i = 1; a != 0; i *= 2){if(a % 10 > 1){s = 1;break;}else{result += (a % 10) * i;a = a / 10;}}for(j = 0; result != 0; j++) {p[j] = result % 16;result = result / 16;if (p[j] > 10){switch(p[j])p[j] = 'A';break;case 11:p[j] = 'B';break;case 12:p[j] = 'C';break;case 13:p[j] = 'D';break;case 14:p[j] = 'E';break;case 15:p[j] = 'F';break;}}else p[j] += 48;}if(s == 1)printf("It is wrong\n"); else{printf("\n转换后的数为:"); for(k = j - 1; k >= 0; k--) {printf("%c", p[k]);}printf("\n");}void eight_two(int a){int i, j, k, s = 0;int result = 0;int p[30];for(i = 1; a != 0; i *= 8){if(a % 10 > 7){s = 1;break;}else{result += (a % 10) * i;a = a / 10;}}for(j = 0; result != 0; j++) {p[j] = result % 2;result = result / 2;}if(s == 1)printf("It is wrong\n"); else{printf("\n转换后的数为:"); for(k = j - 1; k >= 0; k--) {printf("%d", p[k]);}}void eight_ten(int a){int i, s = 0;int result = 0;for(i = 1; a != 0; i *= 8){if(a % 10 > 7){s = 1;break;}else{result += (a % 10) * i;a = a / 10;}}if(s == 1)printf("It is wrong\n");else{printf("\n转换后的数为:%d\n", result); }}void eight_sixten(int a){int i, j, k, s = 0;char p[30];int result = 0;for(i = 1; a != 0; i *= 8){}else{result += (a % 10) * i;a = a / 10;}}for(j = 0; result != 0; j++) {p[j] = result % 16;result = result / 16;if(p[j]p[j] += 48;else{switch(p[j]){case 10:p[j] = 'A';break;case 11:p[j] = 'B';break;case 12:p[j] = 'C';break;case 13:p[j] = 'D';break;case 14:}}}if(s == 1)printf("It is wrong\n");else{printf("\n转换后的数为:");for(k = j - 1; k >= 0; k--){printf("%c", p[k]);}printf("\n");}}/*以下为: ⼗六进制转换为⼗进制,⼆进制,⼋进制.*/ void sixten_ten(char a[], int k){int i, j, s = 0;int result = 0;int b[50];for(i = 0; i{if(a[i] <= '9' && a[i] >= '1'){b[i] = a[i] - 48;}else{case 'B': b[i] = 11; break; case 'C': b[i] = 12; break; case 'D': b[i] = 13; break; case 'E': b[i] = 14; break; case 'F': b[i] = 15; break; case 'a': b[i] = 10; break; case 'b': b[i] = 11; break; case 'c': b[i] = 12; break; case 'd': b[i] = 13; break; case 'e': b[i] = 14;s = 1;}}}for(i = 1, j = k - 1; j >= 0; j--, i *= 16) {result += b[j] * i;}if(s == 1)printf("It is wrong\n");else{printf("\n转换后的数为:%d", result); }}void sixten_two(char a[], int k){int i, j, s = 0;int result = 0;int b[50];int p[30];for(i = 0; i{if(a[i] <= '9' && a[i] >= '1')b[i] = a[i] - 48;else{switch(a[i]){break; case 'C': b[i] = 12; break; case 'D': b[i] = 13; break; case 'E': b[i] = 14; break; case 'F': b[i] = 15; break; case 'a': b[i] = 10; break; case 'b': b[i] = 11; break; case 'c': b[i] = 12; break; case 'd': b[i] = 13; break; case 'e': b[i] = 14; break; case 'f':}}}for(j = k - 1, i = 1; j >= 0; j--, i *= 16) {result += b[j] * i;}for(j = 0; result != 0; j++){p[j] = result % 2;result = result / 2;}if(s == 1)printf("It is wrong\n");else{printf("\n转换后的数为:");for(k = j - 1; k >= 0; k--){printf("%d", p[k]);}printf("\n");}}void sixten_eight(char a[], int k){int i, j, s = 0;int result = 0;int b[30];int p[30];if(a[i] <= '9' && a[i] >= '1') b[i] = a[i] - 48;else{switch(a[i]){case 'A':b[i] = 10;break;case 'B':b[i] = 11;break;case 'C':b[i] = 12;break;case 'D':b[i] = 13;break;case 'E':b[i] = 14;break;case 'F':b[i] = 15;break;case 'a':b[i] = 10;break;case 'b':b[i] = 11;break;case 'c':b[i] = 12;b[i] = 13;break;case 'e':b[i] = 14;break;case 'f':b[i] = 15;break;default:s = 1;}}}for(j = k - 1, i = 1; j >= 0; j--, i *= 16) {result += b[j] * i;}for(j = 0; result != 0; j++){p[j] = result % 8;result = result / 8;}if(s == 1)printf("It is wrong\n");else{printf("\n转换后的数为:");for(k = j - 1; k >= 0; k--){printf("%d", p[k]);}printf("\n");/*以下为: ⼗进制转换为⼆进制,⼋进制,⼗六进制.*/ void ten_two(int a){int j, k;int p[30];for(j = 0; a != 0; j++){p[j] = a % 2;a = a / 2;}printf("\n转换后的数为:");for(k = j - 1; k >= 0; k--){printf("%d", p[k]);}printf("\n");}void ten_eight(int a){int j, k;int p[30];for(j = 0; a != 0; j++){p[j] = a % 8;a = a / 8;}printf("\n转换后的数为:");for(k = j - 1; k >= 0; k--){printf("%d", p[k]);}printf("\n");{int j, k;int p[30];for(j = 0; a != 0; j++) {p[j] = a % 16;a = a / 16;if(p[j]p[j] += 48;else{switch(p[j]){case 10:p[j] = 'A';break;case 11:p[j] = 'B';break;case 12:p[j] = 'C';break;case 13:p[j] = 'D';break;case 14:p[j] = 'E';break;case 15:p[j] = 'F';break;}}}printf("\n转换后的数为:"); for(k = j - 1; k >= 0; k--) {printf("%c", p[k]);}printf("\n");}。
des加密算法c语言源代码
#include<iostream.h>int IP[64] = {58,50,42,34,26,18,10,2,60,52,44,36,28,20,12,4,62,54,46,38,30,22,14,6,64,56,48,40,32,24,16,8,57,49,41,33,25,17,9,1,59,51,43,35,27,19,11,3,61,53,45,37,29,21,13,5,63,55,47,39,31,23,15,7};int IP_1[64] = {40,8,48,16,56,24,64,32,39,7,47,15,55,23,63,31,38,6,46,14,54,22,62,30,37,5,45,13,53,21,61,29,36,4,44,12,52,20,60,28,35,3,43,11,51,19,59,27,34,2,42,10,50,18,58,26,33,1,41,9,49,17,57,25};int E[48] = {32,1, 2, 3, 4, 5,4, 5, 6, 7, 8, 9,8, 9, 10,11,12,13,12,13,14,15,16,17,16,17,18,19,20,21,20,21,22,23,24,25,24,25,26,27,28,29,28,29,30,31,32,1};int P[32]={16 ,7 , 20 , 21 ,29,12 ,28 , 17 ,1, 15 ,23 , 26 ,5, 18 ,31 , 10 ,2, 8 , 24 , 14 ,32,27, 3 , 9 ,19,13, 30 , 6 ,22,11 ,4 , 25 };void Char_to_Int(unsigned char in[],int out[],int len){for(int i=0;i<len;i++)out[i]=int(in[i]);}void Int_to_Char(int in[],unsigned char out[],int len){for(int i=0;i<len;i++)out[i]=char(in[i]);}void B_to_H(int in[],unsigned char out[]){for(int i=0;i<16;i++){int temp=in[i*4]*8+in[i*4+1]*4+in[i*4+2]*2+in[i*4+3];switch(temp){case 10 :out[i]='A';break;case 11 :out[i]='B';break;case 12 :out[i]='C';break;case 13 :out[i]='D';break;case 14 :out[i]='E';break;case 15 :out[i]='F';break;default :out[i]=unsigned char(temp+48);break;}}}void H_to_B(unsigned char in[],int out[]){for(int i=0;i<16;i++)switch(in[i]){case 'A':out[i*4]=1;out[i*4+1]=0;out[i*4+2]=1;out[i*4+3]=0;break;case 'B':out[i*4]=1;out[i*4+1]=0;out[i*4+2]=1;out[i*4+3]=1;break;case 'C':out[i*4]=1;out[i*4+1]=1;out[i*4+2]=0;out[i*4+3]=0;break;case 'D':out[i*4]=1;out[i*4+1]=1;out[i*4+2]=0;out[i*4+3]=1;break;case 'E':out[i*4]=1;out[i*4+1]=1;out[i*4+2]=1;out[i*4+3]=0;break;case 'F':out[i*4]=1;out[i*4+1]=1;out[i*4+2]=1;out[i*4+3]=1;break;case '0':out[i*4]=0;out[i*4+1]=0;out[i*4+2]=0;out[i*4+3]=0;break;case '1':out[i*4]=0;out[i*4+1]=0;out[i*4+2]=0;out[i*4+3]=1;break;case '2':out[i*4]=0;out[i*4+1]=0;out[i*4+2]=1;out[i*4+3]=0;break;case '3':out[i*4]=0;out[i*4+1]=0;out[i*4+2]=1;out[i*4+3]=1;break;case '4':out[i*4]=0;out[i*4+1]=1;out[i*4+2]=0;out[i*4+3]=0;break;case '5':out[i*4]=0;out[i*4+1]=1;out[i*4+2]=0;out[i*4+3]=1;break;case '6':out[i*4]=0;out[i*4+1]=1;out[i*4+2]=1;out[i*4+3]=0;break;case '7':out[i*4]=0;out[i*4+1]=1;out[i*4+2]=1;out[i*4+3]=1;break;case '8':out[i*4]=1;out[i*4+1]=0;out[i*4+2]=0;out[i*4+3]=0;break;case '9':out[i*4]=1;out[i*4+1]=0;out[i*4+2]=0;out[i*4+3]=1;break;}}void O_to_B(int in[],int out[],int len){int i,j;for(i=0;i<len;i++)for(j=i*len+7;j>=i*len;j--){out[j]=in[i]%2; in[i]=in[i]/2;}}void B_to_O(int in[],int out[],int len){int j;for(int i=0;i<len;i++){j=8*i;out[i]=in[j]*128+in[j+1]*64+in[j+2]*32+in[j+3]*16+in[j+4]*8+in[j+5]*4+in[j+6]*2+in[j+7]*1;}}void Convert(int in[],int out[],int table[],int len){for(int i=0;i<len;i++)out[i]=in[table[i]-1];}void Divide(int in[],int out1[],int out2[],int len){for(int i=0;i<len;i++)if(i<len/2)out1[i]=in[i];elseout2[i-len/2]=in[i];}//正确void Combine(int in1[],int in2[],int out[],int len){for(int i=0;i<len;i++)if(i<len/2)out[i]=in1[i];elseout[i]=in2[i-len/2];}//正确void RLC1(int in[],int out[],int len){int temp=in[0];for(int i=0;i<len-1;i++)out[i]=in[i+1];out[len-1]=temp;}//正确void RLC2(int in[],int out[],int len){int temp1=in[0],temp2=in[1];for(int i=0;i<len-2;i++)out[i]=in[i+2];out[len-2]=temp1;out[len-1]=temp2;}//正确void COPY(int in[],int out[],int len){for(int i=0;i<len;i++)out[i]=in[i];}//ZHENGQUEvoid XOR(int in1[],int in2[],int out[],int len){for(int i=0;i<len;i++)out[i]=(in1[i]+in2[i])%2;}void GetKey(unsigned char in[],int out[16][48]){int i;int Msg_Int[8],Msg_Bin[64],Msg_Bin_PC1[56],Key_Bin[56],C[17][28],D[17][28];char Msg_H[16];int PC1[56]={57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4},PC2[48]={14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32};Char_to_Int(in,Msg_Int,8);//正确O_to_B(Msg_Int,Msg_Bin,8);//正确cout<<endl;Convert(Msg_Bin,Msg_Bin_PC1,PC1,56); Divide(Msg_Bin_PC1,C[0],D[0],56);for(i=0;i<16;i++){if(i==0){RLC1(C[i],C[i+1],28);RLC1(D[i],D[i+1],28);}else if(i==1){RLC1(C[i],C[i+1],28);RLC1(D[i],D[i+1],28);}else if(i==8){RLC1(C[i],C[i+1],28);RLC1(D[i],D[i+1],28);}else if(i==15){RLC1(C[i],C[i+1],28);RLC1(D[i],D[i+1],28);}else{RLC2(C[i],C[i+1],28);RLC2(D[i],D[i+1],28);}Combine(C[i+1],D[i+1],Key_Bin,56);Convert(Key_Bin,out[i],PC2,48);}} //生成子密钥正确void S_box(int in[],int out[]){int i;int SBox[8][64] ={{14,4,13,1,2,15,11,8,3,10,6,12,5,9,0,7,0,15,7,4,14,2,13,1,10,6,12,11,9,5,3,8,4,1,14,8,13,6,2,11,15,12,9,7,3,10,5,0,15,12,8,2,4,9,1,7,5,11,3,14,10,0,6,13},{15,1,8,14,6,11,3,4,9,7,2,13,12,0,5,10,3,13,4,7,15,2,8,14,12,0,1,10,6,9,11,5,0,14,7,11,10,4,13,1,5,8,12,6,9,3,2,15,13,8,10,1,3,15,4,2,11,6,7,12,0,5,14,9},{10,0,9,14,6,3,15,5,1,13,12,7,11,4,2,8,13,7,0,9,3,4,6,10,2,8,5,14,12,11,15,1,13,6,4,9,8,15,3,0,11,1,2,12,5,10,14,7,1,10,13,0,6,9,8,7,4,15,14,3,11,5,2,12},{7,13,14,3,0,6,9,10,1,2,8,5,11,12,4,15,13,8,11,5,6,15,0,3,4,7,2,12,1,10,14,9,10,6,9,0,12,11,7,13,15,1,3,14,5,2,8,4,3,15,0,6,10,1,13,8,9,4,5,11,12,7,2,14},{2,12,4,1,7,10,11,6,8,5,3,15,13,0,14,9,14,11,2,12,4,7,13,1,5,0,15,10,3,9,8,6,4,2,1,11,10,13,7,8,15,9,12,5,6,3,0,14,11,8,12,7,1,14,2,13,6,15,0,9,10,4,5,3,},{12,1,10,15,9,2,6,8,0,13,3,4,14,7,5,11,10,15,4,2,7,12,9,5,6,1,13,14,0,11,3,8,9,14,15,5,2,8,12,3,7,0,4,10,1,13,11,6,4,3,2,12,9,5,15,10,11,14,1,7,6,0,8,13},{4,11,2,14,15,0,8,13,3,12,9,7,5,10,6,1,13,0,11,7,4,9,1,10,14,3,5,12,2,15,8,6,1,4,11,13,12,3,7,14,10,15,6,8,0,5,9,2,6,11,13,8,1,4,10,7,9,5,0,15,14,2,3,12},{13,2,8,4,6,15,11,1,10,9,3,14,5,0,12,7,1,15,13,8,10,3,7,4,12,5,6,11,0,14,9,2,7,11,4,1,9,12,14,2,0,6,10,13,15,3,5,8,2,1,14,7,4,10,8,13,15,12,9,0,3,5,6,11}};int s1,s3,s2[8];for(i=0;i<8;i++){s1=in[i*6]*2+in[i*6+5]*1;s3=in[i*6+1]*8+in[i*6+2]*4+in[i*6+3]*2+in[i*6+4]*1;s2[i]=SBox[i][s1*16+s3];}int j;for(i=0;i<8;i++)for(j=i*4+3;j>=i*4;j--){out[j]=s2[i]%2; s2[i]=s2[i]/2;}}void Encode(unsigned char in[],unsigned char Final_H[],int K[16][48]){int i;intORINT[8],ORBYTE[64],FinalBYTE[64],LR[64],R48[48],S_in[48],S_out[32],F_RL[32],FinalINT[8],L[17] [32],R[17][32];char ORH[16];Char_to_Int(in,ORINT,8);cout<<""<<endl;O_to_B(ORINT,ORBYTE,8);Convert(ORBYTE,LR,IP,64);Divide(LR,L[0],R[0],64);for(i=1;i<17;i++){Convert(R[i-1],R48,E,48);XOR(R48,K[i-1],S_in,48);S_box(S_in,S_out);Convert(S_out,F_RL,P,32);XOR(F_RL,L[i-1],R[i],32);COPY(R[i-1],L[i],32);}Combine(R[16],L[16],LR,64);Convert(LR,FinalBYTE,IP_1,64);cout<<"二进制的密文:"<<endl;for(i=0;i<64;i++){cout<<FinalBYTE[i];}cout<<endl<<endl;B_to_H(FinalBYTE,Final_H);}void DeCode(unsigned char in[],unsigned char Final_H[],int K[16][48]){int i;intORINT[8],ORBYTE[64],LR[64],R48[48],S_in[48],S_out[32],F_RL[32],FinalBYTE[64],FinalINT[8],L[17] [32],R[17][32];char ORH[16];Char_to_Int(in,ORINT,8);cout<<""<<endl;O_to_B(ORINT,ORBYTE,8);Convert(ORBYTE,LR,IP,64);Divide(LR,L[0],R[0],64);for(i=1;i<17;i++){COPY(R[i-1],L[i],32);Convert(R[i-1],R48,E,48);XOR(R48,K[16-i],S_in,48);S_box(S_in,S_out);Convert(S_out,F_RL,P,32);XOR(L[i-1],F_RL,R[i],32);}Combine(R[16],L[16],LR,64);Convert(LR,FinalBYTE,IP_1,64);B_to_H(FinalBYTE,Final_H);}void main(){int i;unsigned char Msg[8],UnCodeMsg[16],CodeMsg[16],Key[8],Msg_H[16],CodeChar[8];int SKey[16][48];int OrByte[64],OrInt[8],FinalByte[64],FinalInt[8];cout<<"请输入明文:"<<endl;for(i=0;i<8;i++)cin>>Msg[i];cout<<"请输入初始密钥:"<<endl;for(i=0;i<8;i++)cin>>Key[i];GetKey(Key,SKey);Encode(Msg,CodeMsg,SKey);cout<<"十六进制的密文:"<<endl;for(i=0;i<16;i++)cout<<CodeMsg[i];cout<<endl;cout<<"字符型密文:"<<endl;H_to_B(CodeMsg,FinalByte);B_to_O(FinalByte,FinalInt,8);Int_to_Char(FinalInt,CodeChar,8);for(i=0;i<8;i++)cout<<CodeChar[i];cout<<endl;cout<<"请输入十六进制的密文:"<<endl;for(i=0;i<16;i++)cin>>CodeMsg[i];B_to_O(FinalByte,FinalInt,8);Int_to_Char(FinalInt,CodeChar,8);cout<<"请输入解密密钥:"<<endl;for(i=0;i<8;i++)cin>>Key[i];GetKey(Key,SKey);DeCode(CodeChar,Msg_H,SKey);//for(i=0;i<16;i++)// cout<<Msg_H[i];cout<<endl;H_to_B(Msg_H,OrByte);B_to_O(OrByte,OrInt,8);Int_to_Char(OrInt,Msg,8);cout<<"明文是:"<<endl;for(i=0;i<8;i++)cout<<Msg[i];cout<<endl;}。
软件测试-三角形问题
9
10
11
12
13
14
15
16
T T T T
T T T F
T T F T
T T F F
T F T T
T F T F
T F F T
T F F F
√
√ √ √ √
制作者:
Page 18
决策表法
根据决策表4-13,可设计测试用例,如表4-14所示。
表4-14 三角形问题的决策表测试用例 测试用例 Test Case 1 Test Case 2 Test Case 3 Test Case 4 Test Case 5 Test Case 6 Test Case 7 Test Case 8 Test Case 9 a 10 4 ? ? 4 ? 5 4 3 b 4 4 ? ? 4 ? 4 5 4 c 4 4 ? ? 5 ? 4 4 5
三个数
1
整数
2
取值范围 在1~100
3
三个数 整数 1≤a≤100 1≤b≤100 1≤c≤100 4,5,6
12
13 14 15 16 17 18
Page 5
三边为00,0,0
一边小于0-1,7,8 两边小于0-9,-,1,6 三边小于0-1,-2,-8 一边大于100101,56,50 两边大于100101,107,89 三边大于100101,109,176
制作者:
表4-2 三角形问题的测试用例
等价类划分法——以输出域划分等价类
以三角形问题为例,要求输入三个整数a、b、c,分 别作为三角形的三条边,取值范围在1~100之间, 判断由三条边构成的三角形类型为等边三角形、等 腰三角形、一般三角形(包括直角三角形)以及非 三角形。 在多数情况下,是从输入域划分等价类,但对于三 角形问题,从输出域来定义等价类是最简单的划分 方法。
DOS下模拟 贪吃蛇游戏
/*DOS下模拟贪吃蛇游戏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━符号常数数值含义符号常数数值含义———————————————————————————————————BLACK 0 黑色DARKGRAY8 深灰BLUE 1 兰色LIGHTBLUE 9 深兰GREEN 2 绿色LIGHTGREEN 10 淡绿CY AN 3 青色LIGHTCY AN 11 淡青RED 4 红色LIGHTRED 12 淡红MAGENTA 5 洋红LIGHTMAGENTA13 淡洋红BROWN 6 棕色YELLOW 14 黄色LIGHTGRAY7 淡灰WHITE 15 白色━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━*/#include <graphics.h>#include <stdlib.h>#include <bios.h>#include <time.h>#include "dos.h"/*定义几个游戏中要用到的功能按键*/#define ESC 0x11b /*强行退出游戏*/#define UP 0x4800 /*上下左右四个按键移动光标*/#define DOWN 0x5000#define LEFT 0x4b00#define RIGHT 0x4d00#define SPACE 0x3920 /* */#define ENTER 0x1c0d /* */int a[20][10]={0}; /* 存放she的数组*/int aa=0;char num[]={'0','1','2','3','4','5','6','7','8','9'}; /*用于在图形模式下输出数字*/char sc[10];char gd[10];int y=0,x=3;int d=1;int n,nnext;int xx=150,yy=40;int b[20][4][4]={{{1,1,1,1}}, /* 横条形状*/{{1}, /* 竖条形状*/{1},{1},{1}},{{2,2}, /* 方块形状*/{2,2},},{{3,3,3}, /* 镰刀形状*/{3}},{{3,3},{0,3},{0,3},},{{0,0,3},{3,3,3}},{{3},{3},{3,3}},{{4,4,4}, /* 反镰刀形状*/{0,0,4}},{{0,4},{0,4},{4,4},},{{4},{4,4,4}},{{4,4},{4},{4}},{{5,5,5},{0,5}},{{0,5},{5,5},{0,5},},{{0,5,0},{5,5,5}},{{5},{5,5},{5}},{{6,6},{0,6,6}},{{0,6},{6,6},{6}},{{0,7,7},{7,7}},{{7},{7,7},{0,7}}}; /* 存放不同形状(颜色)方块的数组*/long int score=0; /*积分*/int grade=1;/*等级*/main(){int k;int gdriver = DETECT, gmode;registerbgidriver(gdriver);initgraph(&gdriver, &gmode, "c:\\turboc2");redraw();srand(time(NULL));n=random(19);nnext=random(19);while(1) /* 反复从键盘获得程序需要的按键*/{run();if(y%5==0) redraw();if(bioskey(1)) /* 判断是否有按键*/{k=bioskey(0); /* 将按键存入变量k */switch(k) /* 对按键进行分情况处理*/{case ESC: /* ESC键退出*/exit(0); break;case LEFT: /* ESC键退出*/x--;outleft(); break;case RIGHT: /* ESC键退出*/x++;outright(); break;case DOWN: /* ESC键退出*/aa=1; break;case SPACE: /* ESC键退出*/rotate(); break;}}showscore();}closegraph();}outleft(){int i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)if((b[n][i][j] && a[i+y/5][j+x]))x++;if(x<0) x++;}outright(){int i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)if(b[n][i][j] && x+j>9) x--;for(i=0;i<4;i++)for(j=0;j<4;j++)if((b[n][i][j] && a[i+y/5][j+x]))x--;}run(){int i;for(i=0;i<=165-grade*10;i++)delay(aa?5:200);y++;aa=0;ground();}ground(){int i,j,k=0;for(i=0;i<4;i++)for(j=0;j<4;j++)if((b[n][i][j] && a[i+y/5][j+x]) || (y/5+i>19 && b[n][i][j])){y-=10;count();x=3,y=0;return(0);}}count(){int i,j,m,h=0,k[20]={0};for(i=0;i<4;i++)for(j=0;j<4;j++)if(b[n][i][j])a[i+y/5+1][j+x]=b[n][i][j];for(i=0;i<20;i++){ for(j=0;j<10;j++)if(a[i][j])k[i]++;h+=(k[i]/10);}switch(h){case 4: score+=1500;break;case 3: score+=700; break;case 2: score+=300; break;case 1: score+=100; break;}for(m=0;m<20;m++)if(k[m]/10)for(i=m-1;i>=0;i--)for(j=0;j<10;j++)a[i+1][j]=a[i][j];randnext();}/*redraw重画函数在用户有操作或者时间到达后,重画游戏画面*/redraw(){int dd=20,i,j;cleardevice();setbkcolor(BLUE);setcolor(5);/* settextstyle(SANS_SERIF_FONT,HORIZ_DIR,4);outtextxy(170,30,"RUSIA ");settextstyle(SANS_SERIF_FONT,HORIZ_DIR,2);outtextxy(220,70,"By Jack");*/setfillstyle(1,8);bar(xx,yy,xx+dd*10,yy+dd*20);bar(xx+dd*11,yy,xx+dd*15,yy+dd*4);for(i=0;i<20;i++)for(j=0;j<10;j++)if(a[i][j])xiaofangkuai(xx+j*dd,yy+i*dd,dd,a[i][j]);for(i=0;i<4;i++)for(j=0;j<4;j++)if(b[n][i][j])xiaofangkuai(xx+(j+x)*dd,yy+(i+y/5)*dd,dd,b[n][i][j]);for(i=0;i<4;i++)for(j=0;j<4;j++)if(b[nnext][i][j])xiaofangkuai(xx+(j+11)*dd,yy+i*dd,dd,b[nnext][i][j]);}rotate(){switch(n){ case 0 : n=1; break;case 1 : n=0; break;case 2 : break;case 3 : n=4; break;case 4 : n=5; break;case 5 : n=6; break;case 6 : n=3; break;case 7 : n=8; break;case 8 : n=9; break;case 9 : n=10; break;case 10: n=7; break;case 11: n=12; break;case 12: n=13; break;case 13: n=14; break;case 14: n=11; break;case 15: n=16; break;case 16: n=15; break;case 17: n=18; break;case 18: n=17; break;}}randnext(){n=nnext;nnext=random(19);}xiaofangkuai(int x,int y,int d,int color){setcolor(15);setfillstyle(1,color);bar(x,y,x+d,y+d);rectangle(x,y,x+d,y+d);}showscore(){long int s,i,k=0,t;settextstyle(SMALL_FONT,HORIZ_DIR,7);outtextxy(500,100,"SCORE:");s=score;do{t=s%10;s=s/10;for(i=k-1;i>=0;i--)sc[i+1]=sc[i];k++;sc[0]=t+48;}while(s);outtextxy(500,150,sc);outtextxy(500,200,"GRADE:");k=0;s=grade;do{t=s%10;s=s/10;for(i=k-1;i>=0;i--)gd[i+1]=gd[i];k++;gd[0]=t+48;}while(s);outtextxy(500,250,gd);}over(){int i,j,x,y;for(i=0;i<n;i++){for(j=0;j<n;j++)if(i!=j)if(a[i][0]==a[j][0] && a[i][1]==a[j][1])showover();if(a[i][0]*a[i][1]<0 || a[i][0]>30 ||a[i][1]>30)showover();}}showover(){int dd=10,i,j;cleardevice();setbkcolor(BLUE);setcolor(15);setfillstyle(1,8);bar(100,100,100+dd*30,100+dd*30);for(i=0;i<16;i++){setbkcolor((i+1)%16);settextstyle(SANS_SERIF_FONT,HORIZ_DIR,4);outtextxy(170,50,"GAME OVER!!");setcolor((i+6)%16);setfillstyle(1,(i+12)%16);for(j=0;j<=60;j+=5){pieslice(100+30*dd/2,100+30*dd/2,60-j,300+j,i*dd);}showscore();}getch();exit(0);}。
常见用例设计方法
基本上全为个人总结,希望能帮到你!1.等价类三角形,输入三条边abc,abc为正整数,判断其是一般三角形,等腰三角形,等边三角形分析:abc构成三角形须满足条件:a+b>c&&a+c>b&&b+c>a等腰:a=b||b=c||a=c等边:a=b=c等价类划分有效类:abc都为正整数;无效类:0,负数,小数,字母,空,无效字符有效类:a+b>c 无效类:a+b=c a+b<ca+c>b a+c=b a+c<bb+c>a b+c=a b+c<a有效:a=b||b=c||a=ca=b=c采用条件覆盖率达到100%2.边界值输入:行号:1-9之间整数1-3排:头等舱4-9排:经济舱等价类表测试数据2、测试需求分析――找出输入条件(显示、隐式)列号:A—F的字母等价类细化:A、B靠窗C、D中间E、F 过道填写等价类表格3、设计测试用例的输入测试用例总数:有效测试用例数:12个,分别为Case 1 : 行号2 列号ACase 2 : 行号1 列号BCase 3 : 行号3 列号aCase 4 : 行号4 列号bCase 5 : 行号9 列号CCase 6 : 行号6 列号DCase 7 : 行号2 列号cCase 8 : 行号1 列号dCase 9 : 行号4 列号ECase 10 : 行号2 列号FCase 1 1: 行号2 列号eCase 1 2: 行号2 列号f无效的测试用例数为:16+12个,分别为行号无效对应的用例Case 1 : 行号0 列号ACase 2 : 行号-8 列号BCase 3: 行号10 列号aCase 4 : 行号12 列号bCase 5 : 行号3.53 列号CCase 6 : 行号A 列号DCase 7 : 行号Z 列号cCase 8 : 行号C 列号dCase 9 : 行号a 列号ECase 10 : 行号z 列号FCase 1 1: 行号D 列号eCase 1 2: 行号,列号fCase 13: 行号大列号FCase 1 4: 行号空格列号eCase 1 5: 行号CR 列号eCase 1 6: 行号不输入列号f列号无效对应的用例Case 1 : 行号2 列号-1Case 2 : 行号1 列号0Case 3: 行号3 列号2.5Case 4 : 行号4 列号GCase 5 : 行号9 列号ZCase 6 : 行号6 列号gCase 7 : 行号2 列号zCase 8 : 行号1 列号,Case 9 : 行号4 列号@Case 10 : 行号2 列号CRCase 1 1: 行号2 列号不输入Case 1 2: 行号2 列号空格3.判定表3.1.读书选择1、如果觉得不疲倦,并且对书中的内容不感兴趣,同时书中的内容让你不糊涂,跳到下一章去读2、如果觉得不疲倦,并且对书中的内容不感兴趣,同时书中的内容让你糊涂,跳到下一章去读3、如果觉得不疲倦,并且对书中的内容感兴趣,同时书中的内容让你不糊涂,继续读下去4、如果觉得不疲倦,并且对中书的内容感兴趣,同时书中的内容让你糊涂,回到本章重读5、如果觉得疲倦,并且对书中的内容不感兴趣,同时书中的内容让你不糊涂,停止阅读,请休息6、如果觉得疲倦,并且对书中的内容不感兴趣,同时书中的内容让你糊涂,请停止阅读,休息7、如果觉得疲倦,并且对书中的内容感兴趣,同时书中的内容让你不糊涂,继续读下去8、如果觉得疲倦,并且对书中的内容感兴趣,同时书中的内容让你糊涂,回到本章重读测试设计1、需求分析条件:是否疲倦、是否感兴趣、是否糊涂结果:下一章、继续读、本章重读、休息2条件组合的数量计算:2n其中:2-代表每个条件取值的“个数”【布尔类型】n-代表条件的“个数”本题:23=83、生成测试用例(每一列生成一个测试用例)方法1:(多个用例-8)标题:不疲倦+不感兴趣+不糊涂用例1:输入:是否疲倦:否是否感兴趣:否是否糊涂:否预期输出:跳到下一章方法2:(一个用例)标题:读书选择步骤1:步骤名称:不疲倦+不感兴趣+不糊涂输入:是否疲倦:否是否感兴趣:否是否糊涂:否预期输出:跳到下一章3.2.Counter1、需求分析条件:是否统计代码行、是否统计空行、是否统计注释行、是否统计总行43.3.Word选项设置1、需求分析条件:首尾字符设置(标准、自定义)、字距调整、间距控制2首尾字符设置:0-标准;1-自定义3.4.合并判定表:原则:1、结果相同2、条件只有一个不同合并风险:漏掉某些分支或者路径(不同用例走的路径不同,但是结果相同)3.5.密码修改若需修改密码,系统验证旧密码正确,两个新密码相同,则更新密码,旧密码即失效,其他修改项也生效,并提示“用户信息修改成功”;若旧密码不正确,则提示“用户密码错”,系统将不修改个人信息;若两个新密码不同,则提示“新密码与验证新密码不同”,系统将不修改个人信息。
pb(powerbuilder)异常及错误
pb(powerbuilder)异常及错误打开任意⼀个数据窗时,提⽰“sybase powerbuilder已停⽌⼯作”解决⽅法,错误如图所⽰⼀、打开任意⼀个数据窗时,提⽰⼀、解决⽅法1:找到注册表(运⾏:regedit)中HKEY_USERS\S-1-5-21-1060284298-1004336348-839522115-1003\Software\Sybase\PowerBuilder\9.0\Layout\Default,然后删除其中的Datawindow项⽬解决⽅法2:卸载PB 清理注册表,重启电脑,换个路径重新安装。
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------⼆、使⽤return 1 处理报错信息:在DataWindow的DBError事件下:写脚本return 1 (如果返回1会触发itemchange事件)Return valueSet the return code to affect the outcome of the event:0 (Default) Reject the data value and show an error message box1 Reject the data value with no message box2 Accept the data value3 Reject the data value but allow focus to changeitemerror事件的返回值0——缺省值,显⽰出错信息,拒绝输⼊值并显⽰有效性检查,出错信息同时不允许移⾛焦点;1——不显⽰出错信息,拒绝输⼊信息,同时不允许移⾛焦点;2——不显⽰出错信息,接收输⼊值;3——不显⽰出错信息,拒绝输⼊信息,允许移⾛焦点;---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------三、数据管道 pipelineobject.Start 错误列表Integer. Returns 1 if it succeeds and a negative number if an error occurs.Error values are:-1 Pipe open failed-2 Too many columns-3 Table already exists-4 Table does not exist-5 Missing connection-6 Wrong arguments-7 Column mismatch-8 Fatal SQL error in source-9 Fatal SQL error in destination-10 Maximum number of errors exceeded-12 Bad table syntax-13 Key required but not supplied-15 Pipe already in progress-16 Error in source database-17 Error in destination database-18 Destination database is read-onlyIf any argument's value is NULL, Start returns NULL.String ls_errortextIF IsNull( ai_ErrCode ) THENls_errortext = "传递了空参数!"RETURN ''END IFCHOOSE CASE ai_ErrCodeCASE - 1ls_errortext = "数据管道打开错误!请检查所有的对象是否有效.错误代码:" + String( ai_ErrCode )CASE - 2ls_errortext = "列数超过上限!错误代码:" + String( ai_ErrCode )CASE - 3ls_errortext = "⽬的表已存在!错误代码:" + String( ai_ErrCode )CASE - 4ls_errortext = "⽬的表不存在!错误代码:" + String( ai_ErrCode )CASE - 5 //common start()函数与repair()函数公⽤错误代码ls_errortext = "连接被断开!错误代码:" + String( ai_ErrCode )CASE - 6ls_errortext = "错误参数!"CASE - 7ls_errortext = "列类型不匹配!错误代码:" + String( ai_ErrCode )CASE - 8ls_errortext = "源SQL语法错误!错误代码:" + String( ai_ErrCode )CASE - 9 //commonls_errortext = "⽬的SQL语法错误!错误代码:" + String( ai_ErrCode )CASE - 10 //commonls_errortext = "发⽣错误个数超过最⼤界定错误数!错误代码:" + String( ai_ErrCode )CASE - 11 //repair专⽤错误代码ls_errortext = "⽆效的窗⼝句柄!错误代码:" + String( ai_ErrCode )CASE - 12 //commonls_errortext = "错误的表语法!错误代码:" + String( ai_ErrCode )CASE - 13ls_errortext = "空的主键值!错误代码:" + String( ai_ErrCode )CASE - 15 //commonls_errortext = "该数据管道已打开!错误代码:" + String( ai_ErrCode )CASE - 16ls_errortext = "错误发⽣在源数据库!错误代码:" + String( ai_ErrCode )CASE - 17 //commonls_errortext = "错误发⽣在⽬的数据库!错误代码:" + String( ai_ErrCode )CASE - 18 //commonls_errortext = "⽬标数据库只读!错误代码:" + String( ai_ErrCode )END CHOOSERETURN ls_errortext-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------四、Database transaction information not available.Call SetTras or SetTransObject function1、dw控件没有加settransobject。
双机通信代码(接收方和发送方)
{
TH1=0xe8;//设置波特率为1200bps
TL1=0xe8;
}
void init_S_2400()
{
TH1=0xf4;//设置波特率为2400bps
TL1=0xf4;
}
void S_4800(ucharnumx)
{
TH1=0xfa;//设置波特率为4800bps
/*按下矩阵键盘第一行时以1200bps发送0,1,2,3;按下第二行时以2400bps发送4,5,6,7;
按下第三行时以4800bps发送8,9,10,11;按下第四行时以9600pbs发送12,13,14,15.
*/
/*接收方在接收到第一行的任意键值时,8个发光二极管形成流水灯;
在接收到第二行的任意键值时,显示在数码管上;
}
voidinit_S()
{
TMOD=0x20;//设置定时器1为方式2
TR1=1;
EA=1;
ES=1;
/*SMOD=0*/
/*设置SCON寄存器*/
SM0=0;//采用串口方式1进行双机通信
SM1=1;
REN=0;
}
void S_1200()
{
TH1=0xe8;//设置波特率为1200bps
TL1=0xe8;
temp=temp&0xf0;
}
init_S_2400();
send(num);
}
P3=0xfb;
/*按键过程*/
temp=P3;
temp=temp&0xf0;
while(temp!=0xf0)//表明键被按下
{
temp=P3;
switch(temp)
顺序表实验
《数据结构》实验报告题目:_顺序表的实现学号:______姓名:___张磊_______东南大学成贤学院计算机系实验题目一、实验目的1.掌握顺序表的基本操作,实现顺序表的插入、删除、查找等基本运算。
二、实验内容1.完善顺序表的定义,并运用其实现线性表的操作。
2.(课上任务)选题一:集合的交、并、差运算【问题描述】编制一个能演示执行集合的交、并和差运算的程序。
【任务要求】1)集合元素用小写英文字母,执行各种操作应以对话方式执行。
2)算法要点:利用顺序表表示集合;理解好三种运算的含义【测试数据】自行设定,注意边界等特殊情况。
选题二:文章编辑功能:输入一页文字,程序可以统计出文字、数字、空格的个数。
静态存储一页文章,每行最多不超过80个字符,共N行;要求①分别统计出其中英文字母数和空格数及整篇文章总字数;②统计某一字符串在文章中出现的次数,并输出该次数;③删除某一子串,并将后面的字符前移。
存储结构使用顺序表,分别用几个子函数实现相应的功能;输入数据的形式和范围:可以输入大写、小写的英文字母、任何数字及标点符号。
输出形式:①分行输出用户输入的各行字符;②分4行输出"全部字母数"、"数字个数"、"空格个数"、"文章总字数";③输出删除某一字符串后的文章;选题三:构造有序顺序表要求:进一步完善SqList类模板,实现顺序表的按值插入元素,即顺序表为递增有序表,插入元素后仍递增有序。
方法:在中添加代码,在SqList类模板的定义中添加函数声明,在类模板实现部分实现该函数。
bool CreateListOrder();bool InsertOrder(ElemType e);三、实验步骤1.启动:开始菜单→程序→Microsoft Visual Studio →Microsoft Visual C++2.建立工程:文件(File)→新建(new)→在弹出的对话框中选择工程标签(Project)→选中选项:Win32 Console Application(不能选别的)→输入工程名(Project Name)→选择工程的存放位置(Location)→单击“确定”按钮(OK)→在弹出的对话框中选中选项:An Empty Project→单击“完成”按钮(Finish)→在弹出的对话框中单击“确定”按钮( OK )。
8位数日期等价类表
输入有效类边界值编号无效类边界值昵称[1,24]字符1个中文字符等于2个字符11>24字符25242必填3不填密码[6,16]64<65165>1617区分大小写6不区分大小写不包含空格7包含空格不能9位数以下纯数字989位数以下纯数字8必填9不填确认密码完全一致区分大小写10一致不区分大小写必填11不填性别男12全选女13生日公历14农历15年份范围[1900,2014]190016<19001899201417>20142015月份范围[1,12]1181219>1213大月日期[1,31]3120>3132小月日期[1,30]3021>3031平年2月日期[1,28]1222823>2829闰年2月日期[1,29]2924>2930必填25不填所在地正常中国省、市26非中国地区27必填28不填验证码输入看到的字符一致29输入看到的字符不一致不区分大小写30区分大小写31点击可更换图片32不更换图片开通空间勾选33不勾选34同意条款勾选35不勾选有效类覆盖昵称密码确认密码性别生日年份范围月份范围大月日期小月日期平年2月日期闰年2月日期所在地验证码开通空间同意条款case3小月日期3021case4平年2月日期2823case5闰年2月日期2924,25无效类覆盖ID:QQ-ST-REG-001昵称项目:Q Q号码注册case6无效类二十五个字符长度测s 36测试标题:一次常规的QQ号码注册case7不填37重要级别H预制条件密码输入case81234538case91234567812345678139case10不区分大小写登陆测试40case1112 345678941case121234567842case13不填43确认密码case14ab123456744case15不填45性别步骤:页面按照输入表中的参数对应填写内容;case16全选46s tep2:注册生日预期结果:注册成功年份范围case17189947case18201548月份范围case191349大月日期case203250小月日期case213151平年2月日期case222952闰年2月日期case233053case24年份不填case25月份不填case26日期不填所在地case27国家不填case28省份不填case29城市不填验证码case30输入看到的字符不一致56case31不更换图片57同意条款case32不勾选585455编号3637 38 39 40 41 4243 44 45 4647 48 49 50 5152 53 54 55 5657 58。
c++ 21点游戏
ofile.close();
}
////////////////////////////////
////游戏类的设计
//////////////////////////////////////////////////////////////
c[i].card('H',i+1);
for(i=13;i<26;i++)
c[i].card('C',i%13+1);
for(i=26;i<39;i++)
c[i].card('D',i%13+1);
for(i=39;i<52;i++)
c[i].card('S',i%13+1);
c[i]=c[m];
c[m]=c[i];
}
}
Card Poker::Fapai()
{
return c[count];
}
/////////////////////////////////////////
///游戏这类的设计
///////////////////////////////////////////////////////////////
//////////////////////
//纸牌类的设计
/////////////////////////////////////
class Card
{
private:
蓝桥杯2022年java试题基础练习
蓝桥杯2022年java试题基础练习⼀:基础练习:(本⽂只附代码,解析后续修改后添上) 1.a+b问题: 代码如下:1 1 import java.util.*;2 2 public class Main {3 3 public static void main(String args[]) {4 4 int a,b;5 56 6 Scanner input = new Scanner(System.in);7 7 a = input.nextInt();8 8 b = input.nextInt();9 910 10 System.out.println(a+b);11 11 }12 12 }View Code 2.序列排序问题: 代码如下:1 1 import java.util.Arrays;2 2 import java.util.Scanner;3 34 4 public class Main {5 5 public static void main(String[] args) {6 6 Scanner scanner = new Scanner(System.in);7 7 int n = scanner.nextInt();8 8 int[] arr = new int[n];9 9 //往数组添加元素,接收数据10 10 for (int i = 0; i < n; i++) {11 11 arr[i] = scanner.nextInt();12 12 }13 1314 14 //对数组排序15 15 Arrays.sort(arr);16 1617 17 //打印数组18 18 for (int i = 0; i < n; i++) {19 19 System.out.print(arr[i] + " ");20 20 }21 21 }22 22 }View Code 3.⼗六进制转⼋进制: 代码如下:1import java.util.Scanner;2public class Main {3public static void main(String[] args) {4 Question1();56 }8 Scanner in = new Scanner(System.in);9int n = Integer.parseInt(in.nextLine());10int i, j;11 String[] sz = new String[n];12//读⼊⼗六进制数13for (i = 0; i < n; i++) {14 sz[i] = in.next();15 }16for(i = 0; i < sz.length; i++) {17 String s = sz[i];18 StringBuilder sb = new StringBuilder();19//将⼀位⼗六进制数转换为四位⼆进制数 20for(j = 0; j < s.length(); j++) {21switch(s.charAt(j)) {22case '0':23 sb.append("0000");24break;25case '1':26 sb.append("0001");27break;28case '2':29 sb.append("0010");30break;31case '3':32 sb.append("0011");33break;34case '4':35 sb.append("0100");36break;37case '5':38 sb.append("0101");39break;40case '6':41 sb.append("0110");42break;43case '7':44 sb.append("0111");45break;46case '8':47 sb.append("1000");48break;49case '9':50 sb.append("1001");51break;52case 'A':53 sb.append("1010");54break;55case 'B':56 sb.append("1011");57break;58case 'C':59 sb.append("1100");60break;61case 'D':62 sb.append("1101");63break;64case 'E':65 sb.append("1110");66break;67case 'F':68 sb.append("1111");69break;70 }71 }72//再将⼆进制数转换成⼋进制数73 transform(sb);74 }7576 }77public static void transform(StringBuilder sb) { 78int num = sb.length() % 3;79//判断长度是否为3的倍数80switch(num) {81case 0:82//若转换的⼋进制数中第⼀位为0则删去 83if(sb.substring(0, 3).equals("000"))84 sb.delete(0, 3);85break;86case 1:87if(sb.substring(0, 1).equals("0"))88 sb.delete(0, 1);89else sb = sb.insert(0, "00");92if(sb.substring(0, 2).equals("00"))93 sb.delete(0, 2);94else sb = sb.insert(0, "0");95break;96 }97 StringBuilder res = new StringBuilder();98int len = sb.length();99 String[] new_s1 = new String[len/3];100//取三位转换成⼋进制数101for(int i = 0; i < len/3; i++) {102int tmp = Integer.parseInt(sb.substring(i * 3, i * 3 + 3), 2); 103 res.append(tmp);104 }105 System.out.println(res);106 }107 }View Code4.⼗六进制转⼗进制: 代码如下:1import java.util.Scanner;2public class Main {3public static void main(String[] args) {4 Scanner scanner = new Scanner(System.in);5 String string = scanner.nextLine();6 System.out.print(Long.parseLong(string, 16));7 }8 }View Code5.⼗进制转⼗六进制: 代码如下:1import java.util.Scanner;2public class Main {3public static void main(String[] args) {4 Scanner input = new Scanner(System.in);5 one(input.nextInt());67 }89public static void one(int a){10int b;11if(a<=15) {12 tohax(a);13// System.out.print(a);1415 }16else{17 b=a%16;18 one(a>>4);19 tohax(b);20// System.out.print(b);21 }22 }23public static void tohax(int c){24switch (c){25default:26 System.out.print(c);27break;2829case 10:30 System.out.print("A");31break;32case 11:35case 12:36 System.out.print("C");37break;38case 13:39 System.out.print("D");40break;41case 14:42 System.out.print("E");43break;44case 15:45 System.out.print("F");46break;4748 }49 }50 }View Code6.特殊的回⽂数: 代码如下:1import java.util.Scanner;23public class Main {4final static byte one = 1;//常量1.5final static byte two = 2;//常量2.6final static byte ten = 10;//常量10;78//输⼊:正整数n。
2022年四川托普信息技术职业学院公共课《C语言》科目期末试卷A(有答案)
2022年四川托普信息技术职业学院公共课《C语言》科目期末试卷A(有答案)一、填空题1、在C语言源程序中,一个变量代表【】。
2、下面add函数的功能是求两个参数的和,并将和值返回调用函数。
函数中错误的部分是_______,改正后为_______。
void add(float a,float b){float c;c=a+b;return c;}3、执行下面程序段后,k的值是_______。
k=1;n=263;do{k*=n%10;n/=10;} while(n);4、设有以下定义和语句,请在printf语句的_______中填上能够正确输出的变量及相应的格式说明。
union{int n;doublex;}num;num.n=10;num.x=10.5;printf("_______",_______);5、假设变量a、b和c均为整型,以下语句借助中间变量t把a、b和c中的值进行交换,即把b中的值给a,把c中的值给b,把a中的值给c。
例如:交换前,a=10、b=20、c=30;交换后,a=20、b=30、c=10。
请填空。
_______;a=b;b=c;_______;6、假设m是一个3位数,从左到右依次用a、b、c表示各位的数字,则从左到右各位数字是b、a、c的3位数的表达式是_______。
7、在C语言中,二维数组元素在内存中的存放顺序是_______。
8、下面程序段的运行结果是_______。
char s[20]="abcd";char*sp=s;sp++;puts(strcat(sp,"ABCD"));9、若想输出b数组的10个元素,则下面存在错误的程序行是_______。
(每个程序行前面的数字代表行号。
)1 int main()2 {int b[10]={1,3,5,7,9,2,4,6,8,10},k;3 for(k=0;k<10;k++,b++)4 printf("%4d",*b);5 return0;6 }10、设有char a,b;若要通过a&b运算屏蔽掉a中的其他位,只保留第2和第8位(右起为第1位),则b的二进制数是_______。
自学考试软件工程第13章软件开发环境
❖ 2.程序设计工作台 程序设计工作台由支持程序开发过程的一组工具组成。将编译
器、编辑器和调试器这样的软件工具一起放在一个宿主机上,该 机器是专门为程序开发设计的。组成程序设计工作台的工具可能 有:
(1)语言编译器:将源代码程序转换成目标码。 (2)结构化编辑器:结合嵌入的程序设计语言知识。 (3)连接器。 (4)加载器。 (5)交叉引用。 (6)按格式打印。 (7)静态分析器。 (8)动态分析器。 (9)交互式调试器。 3.分析和设计工作台 分析和设计工作台支持软件过程的分析和设计阶段,在这一阶 段,系统模型已建立(例如,一个数据库模型,一个实体关系模 型等)。这些工作台通常支持结构化方法中所用的图形符号。支 持分析和设计的工作台有时称为上游 CASE工具。它们支持软件 开发的早期过程。程序设计工作台则成为下游CASE工具。 4.测试工作台 测试是软件开发过程较为昂贵和费力的阶段。测试工作台永远 应为开放系统,可以不断演化以适应被测试系统的需要。
13.3.1 CASE定义
❖ CASE是一组工具和方法集合,可以辅助软 件开发生命周期个阶段进行软件开发。
13.3.2 CASE分类
❖ 1.CSAE技术种类 CASE系统所涉及到的技术有两大类:一类是支
持软件开发过程的本身的技术,如支持规约、设计、 实现、测试等等。
还有一种特殊的CASE技术,即元-CASE技术。
❖ 1.平台集成 “平台”或是一个单一的计算机或操作系统或是一个网络系统。 2.数据集成 数据集成是指不同软件工程能相互交换数据。 (1)共享文件。 (2)共享数据结构。 (3)共享仓库。 最简单的数据集成形式是基于一个共享文件的集成,UNIX系统就是这
样。UNIX有一个简单的文件模型,即非结构化字符流。任何工具都能把 信息写入文件中,也能读其他工具生成的文件。UNIX还提供管道。
SQL中的CASE的用法
SQL中的CASE的⽤法CASE在SQL语句中,很有点类似java等⾼级编程语⾔中的switch这样⼦的多分枝语句,但是有点不同的是,case后⾯接的是when,另外,when的后续分枝有点类似if后⾯接else。
这个是我的个⼈认识,case 。
when。
then。
[else]。
下⾯,看看MySQL的帮助信息,可以看到case的基本语法结构:1 topics: #CASE的两种基本⽤法2 CASE OPERATOR3 CASE STATEMENT45 MariaDB [mysql]> help case statement; #case的第⼀种⽤法6 Name: 'CASE STATEMENT'7 Description:8 Syntax:9 CASE case_value10 WHEN when_value THEN statement_list11 [WHEN when_value THEN statement_list] ...12 [ELSE statement_list]13 END CASE1415 Or:1617 CASE18 WHEN search_condition THEN statement_list19 [WHEN search_condition THEN statement_list] ...20 [ELSE statement_list]21 END CASE2223 MariaDB [mysql]> help case operator; #case的第⼆种基本⽤法24 Name: 'CASE OPERATOR'25 Description:26 Syntax:27 CASE value WHEN [compare_value] THEN result [WHEN [compare_value] THEN28 result ...] [ELSE result] END2930 CASE WHEN [condition] THEN result [WHEN [condition] THEN result ...]31 [ELSE result] END这⾥,我还需要说明的是,case可以和select,check,update等⼀起配合使⽤,相当于增加了SQL操作的条件分析,是的SQL写的可以更加强⼤。
2022年青岛理工大学公共课《C语言》科目期末试卷B(有答案)
2022年青岛理工大学公共课《C语言》科目期末试卷B(有答案)一、填空题1、设有一输入函数scanf("%d”,k);它不能使float类型变量k得到正确数值的原因是_______未指明变量k的地址和_______格式控制符与变量类型不匹配。
2、C语言的源程序必须通过【】和【】后,才能被计算机执行。
3、结构化程序由________、________ 、________ 3种基本结构组成。
4、表达式pow(2.8,sqrt(double(x))值的数据类型为_______。
5、在C语言中,用关键字_______定义单精度实型变量,用关键字_______定义双精度实型变量,用关键字_______定义字符型变量。
6、设x的二进制数是11001101,若想通过x&y运算使x中的低4位不变,高4位清零,则y的二进制数是_______。
7、鸡兔共有30只,脚共有90只,下面程序段是计算鸡兔各有多少只。
请填空。
for(x=0;x<=30;x++){y=30一x;if(_______)printf("%d,%d\n",x,y);}8、若有定义:inta[3][4]={{1,2},{0},{4,6,8,10}};,则初始化后,a[1][2]得到的初值是_______,a[2][1]得到的初值是_______。
9、设有如下定义:#define SWAP(T,X,Y){T=X;X=Y;Y=T;}以下程序段将通过调用宏实现变量x和y内容的交换,请填空。
Double x=2.5,y=6.4,z;SWAP(_______);10、若有以下定义和语句:int*p[3],a[6],i;for(i=0;i<3;i++)p[i]=8&a[2*i];则*p[0]引用的是a数组元素_______,*(p[1]+1)引用的是a数组元素_______。
二、选择题11、以下正确的叙述是( )。
CASE开发方法
CASE开发方法
Case带来的解决方案
图示工具提供一种用户、分析人员和编程人员都易理解的 描述方式,并辅助系统分析员和总体设计员进行系统分析 与设计。 快速生成经过优化了的系统结构图包括各级子系统、数 据流程图以及其他分析与设计中所需的专门图形。 生成各种规格说明文档,文档的修改和更新极为方便, 加速了设计阶段的进厂并且提供了使用方法的指导,起到 设计方法学的训导作用。 自动生成部分程序代码,减轻编程工作 辅助进行项目管理。
郭晓宇 孟苏 芳
目录
1 2 3 4 5 CASE的概念及历史 CASE开发思路
CASE解决的问题
CASE 开发工具 CASE开发方法特点 CASE应用现状
Case的概念
自计算机在工商管理领域应用以来,系统开发过程,特别 是系统分析、设计和开发过程,就一直是制约信息系统发 展的一个瓶颈。这个问题一直延续到80年代,计算机图形 处理技术和程序生成技术的出现才得以缓和。解决这一问 题的工具就是集图形处理技术、程序生成技术、关系数据 库技术和各类开发工具于一身的Case。 Case(Computer Aided Software Engineering),计算 机辅助软件工程。是计算机技术在系统开发活动,技术和 方法中的应用,是软件工具与开发方法的结合体。
技术简介
• CASE是工具与方法结合的产物。 • CASE工具是指CASE系统的最外层(用户)使用 CASE去开发一个系统时所接触到的软件工具。
C程序设计经典编辑300例
1*******************************#include <iostream>using namespace std;int main(){int i = 1;//整型变量cout<<"欢迎"<<endl; //输出一个常量字符串cout<<'a'<<endl;//输出一个常量字符cout<<"i="<<i<<endl;//输出一个整型变量cout<<'\n';//输出一个表示换行的转义字符return 0;}2******************************#include <iostream>#include <climits>#include <cfloat>using namespace std;int main(){int i;//基本整型short j;//短整型long k;//长整型float ii;//单精度型double jj;//双精度型long double kk;//扩展双精度型cout<<"i:("<<INT_MIN<<","<<INT_MAX<<")"<<endl;cout<<"j:("<<SHRT_MIN<<","<<SHRT_MAX<<")"<<endl;cout<<"k:("<<LONG_MIN<<","<<LONG_MAX<<")"<<endl;cout<<"ii:("<<FLT_MIN<<","<<FLT_MAX<<")"<<endl;cout<<"jj:("<<DBL_MIN<<","<<DBL_MAX<<")"<<endl;cout<<"kk:("<<LDBL_MIN<<","<<LDBL_MAX<<")"<<endl;return 0;}3****************************************************** #include <iostream>using namespace std;int main(){int i = 1;//基本整型short j = 2;//短整型long k = 3;//长整型float ii = 1.1;//单精度型double jj = 1.234;//双精度型long double kk = 1.2342546;//扩展双精度型cout<<"i="<<i<<endl;cout<<"j="<<j<<endl;cout<<"k="<<k<<endl;cout<<"ii="<<ii<<endl;cout<<"jj="<<jj<<endl;cout<<"kk="<<kk<<endl;return 0;}4*********************************************#include <iostream>using namespace std;int main(){int i;//整型变量iint j;//整型变量jint temp;//临时变量i=5;j=10;cout<<"i="<<i<<endl<<"j="<<j<<endl;//交换前//交换temp = i;i = j;j = temp;cout<<"i="<<i<<endl<<"j="<<j<<endl;//交换后return 0;}5********************************************************* #include <iostream>using namespace std;int main(){float i;//浮点型数值-重量1int j;//整型数值-重量2int sum;//总重量i = 0.002;j = 2;sum = i+j;//计算总重量cout<<"sum="<<sum<<endl;//输出return 0;}6****************************************************#include <iostream>using namespace std;int main(){int Pool_volume;//游泳池容量int count = 10;//循环次数while(count!=0){cin>>Pool_volume;//输入数据if(Pool_volume < 100)//如果小于100升,池中水没溢出cout<<"游泳池中水没溢出,可以继续加水"<<endl;elsecout<<"游泳池中水已满,必须停止加水或者加入另一个游泳池"<<endl;count --;}return 0;}7**************************************************************#include <iostream>using namespace std;int main(){int i = 1;//整型float j = 2.234;//浮点型i = (int)j;//显式类型转换cout<<"赋值后的i值:"<<i<<endl;}8***********************************************************#include <iostream>using namespace std;int main(){int a = 10;int b = 2;int c;c = a & b;//按位与cout<<"对a和b进行按位与后的结果为:"<<c<<endl;c = a | b;//按位或cout<<"对a和b进行按位或后的结果为:"<<c<<endl;c = a ^ b;//按位异或cout<<"对a和b进行按位异或后的结果为:"<<c<<endl;c = ~a;//按位求反cout<<"对a进行按位求反后的结果为:"<<c<<endl;c = a<<1;//左移1位cout<<"对a向左移动1位后的结果为:"<<c<<endl;c = a>>1;//右移1位cout<<"对a向右移动1位后的结果为:"<<c<<endl;return 0;}9*******************************************************#include <iostream>using namespace std;int main(){float width;//房间宽度float length;//房间长度float area;//房间面积cin>>width>>length;//依次输入宽度和长度area = width * length;//计算面积cout<<"房间面积为:"<<area<<endl;return 0;}10********************************************************** #include <iostream>using namespace std;int main(){int apple_number = 60;//60个苹果int people = 12;//12个人int apple_per_people;//每个人分多少个苹果if(people != 0)//判断除数是否为0{apple_per_people = apple_number/people;cout<<"平均分配,每个人得"<<apple_per_people<<"个苹果"<<endl;}elsecout<<"除数为0,出现异常"<<endl;return 0;}11********************************************************************** #include <iostream>using namespace std;int main(){int year;//年份cin>>year;//输入年份if(year % 400 == 0)//如果能被400整除,则为闰年cout<<year<<"年是闰年"<<endl;else//不能被400整除{if((year % 4 == 0) && (year % 100 != 0))//判断闰年的另一个条件cout<<year<<"年是闰年"<<endl;elsecout<<year<<"年不是闰年"<<endl;}return 0;}12********************************************#include <iostream>using namespace std;int main(){int i =0;for(int rows = 0; rows < 16; rows++){i = rows;while(i <= 127){switch(i){case 7://震铃cout<<i<<"="<<"\\a"<<" | ";break;case 8://退格cout<<i<<"="<<"\\b"<<" | ";break;case 9://水平制表符cout<<i<<"="<<"\\t"<<" | ";break;case 10://换行cout<<i<<"="<<"\\n"<<" | ";break;case 11://竖直制表符cout<<i<<"="<<"\\v"<<" | ";break;case 12://换页cout<<i<<"="<<"\\f"<<" | ";break;case 13://回车cout<<i<<"="<<"\\r"<<" | ";break;default:cout<<i<<"="<<char(i)<<" | ";break;}i+=16;//每隔16个另起一列}cout<<endl;}return 0;}13************************************************************** #include<iostream>#include<string>using namespace std;struct huffTree{int parent;//父亲int lchild;//左孩子int rchild;//右孩子int weight;//权重string flag;//标志};struct Lowest_Node//第0级节点的字符与频度{char ch;int ch_num;};//确定每个字符的huffman编码,输出参数为a、bvoid coding(int length, huffTree tree[],int n,int &a,int &b){int i;int r,s;r=s=length;//节点个数最大不会超过字符串的长度for(i=0;i<n;i++){if((tree[i].weight<r)&&(tree[i].parent==-1)){r=tree[i].weight;a=i;}}for(i=0;i<n;i++){if((tree[i].weight<s)&&(i!=a)&&(tree[i].parent==-1)){s=tree[i].weight;b=i;}}}//计算每个字符出现的频度并排序void frequency(string str){int length=str.length();//长度Lowest_Node *node=new Lowest_Node[length];//声明最0级节点int i,j;//循环因子for(i=0;i<length;i++)node[i].ch_num=0;//初始化频度int char_type_num=0;//初始为0种字符for(i=0;i<length;i++)//循环整个字符串{for(j=0;j<char_type_num;j++)if(str[i]==node[j].ch||(node[j].ch>='a'&&node[j].ch<='z'&&str[i]+32==node[j].ch)) break;//该字符没有出现过,跳出循环if(j<char_type_num)//该字符重复出现,对应的记数器加1node[j].ch_num++;else//新出现的字符,记录到ch[j]中,对应计数器加1{if(str[i]>='A'&&str[i]<='Z')node[j].ch=str[i]+32;elsenode[j].ch=str[i];node[j].ch_num++;char_type_num++;//字符的种类数加1}}//按频度从大到小排序for(i=0;i<char_type_num;i++){for(j=i;j<char_type_num;j++){if(node[j].ch_num<node[j+1].ch_num)//如果前一个小于后一个,交换{int temp;//临时频度char ch_temp;//临时字符temp=node[j].ch_num;ch_temp=node[j].ch;node[j].ch_num=node[j+1].ch_num;node[j].ch=node[j+1].ch;node[j+1].ch_num=temp;node[j+1].ch=ch_temp;}}}for(i=0;i<char_type_num;i++)//打印字符频度cout<<"字符"<<node[i].ch<<"出现了"<<node[i].ch_num<<"次"<<endl;huffTree *huff=new huffTree[2*char_type_num-1];//此变量的声明需位于确定char_type_num值后huffTree temp;string *code=new string[2*char_type_num-1];//存放各个字符的编码for(i=0;i<2*char_type_num-1;i++)//节点初始化{huff[i].lchild=-1;huff[i].parent=-1;huff[i].rchild=-1;huff[i].flag=-1;}for(j=0;j<char_type_num;j++)//将排序后的第0级节点权重赋给树节点{huff[j].weight=node[j].ch_num;}int min1,min2;for(int k=char_type_num;k<2*char_type_num-1;k++)//赋值0级之上的节点{coding(length,huff,k,min1,min2);huff[min1].parent=k;huff[min2].parent=k;huff[min1].flag="0";huff[min2].flag="1";huff[k].lchild=min1;huff[k].rchild=min2;huff[k].weight=huff[min1].weight+huff[min2].weight;}for(i=0;i<char_type_num;i++){temp=huff[i];while(1){code[i]=temp.flag+code[i];temp=huff[temp.parent];if(temp.parent==-1)break;}}cout<<"字符串的每个字符huffman编码为:"<<endl;for(i=0;i<char_type_num;i++)cout<<node[i].ch<<" "<<code[i]<<endl;cout<<"整个字符串的huffman编码为:"<<endl;for(i=0;i<length;i++){for(j=0;j<char_type_num;j++){if(str[i]==node[j].ch)cout<<code[j];}}//释放内存delete[] node;node=NULL;delete[] huff;huff=NULL;delete[] code;code=NULL;}int main(){int length=0;//字符串长度string str; //目标字符串cout<<"请输入一个字符串:";cin>>str;frequency(str);//求各个元素的频度return 0;}14********************************************************************* #include <iostream>using namespace std;int level(char ch){switch(ch){case '!':return 2;break;case '*':return 3;break;case '/':return 3;break;case '%':return 3;break;case '+':return 4;break;case '-':return 4;break;case '=':return 5;break;default:return -1;break;}}int main(){char symbol[3];int value[3];cout<<"从!、*、/、%、+、-、=运算符中选择3个参与算术运算"<<endl;cin>>symbol[0]>>symbol[1]>>symbol[2];value[0]=level(symbol[0]);value[1]=level(symbol[1]);value[2]=level(symbol[2]);if((value[0]==-1) || (value[1]==-1) || (value[2]==-1))//只要有一个返回负数cout<<"库中没有输入的运算符"<<endl;else{//从大到小排序for (int i = 0;i < 3; i++){for (int j = i; j<3;j++){if(value[i]>value[j])//如果前一个大于后一个,开始交换{//交换char temp;temp=symbol[i];symbol[i]=symbol[j];symbol[j]=temp;}}}cout<<"依次进入运算的顺序为:"<<endl;for(int k=0;k<3;k++)cout<<symbol[k]<<endl;}return 0;}15**************************************************************** #include <iostream>using namespace std;//称水果,四舍五入int main(){float fruit_weight;//水果的重量int fruit_weight_cal;//被计算的水果重量cout<<"输入所称水果的重量:"<<endl;cin>>fruit_weight;if((fruit_weight - (int)fruit_weight) < 0.5)//舍去fruit_weight_cal = (int)fruit_weight;else//五入fruit_weight_cal = (int)fruit_weight + 1;cout<<"一共有"<<fruit_weight_cal<<"斤水果需要被付钱"<<endl;return 0;}16***********************************************************#include <iostream>using namespace std;int main(){float sum = 1000.0;//总额为1000元int male = 4;//4名男性员工int female = 4;//4名女性员工float ticket_value_male = 35.0;float ticket_value_female;ticket_value_female = ticket_value_male/2;float remain;//剩余多少钱int male_remain;remain = sum - (male * ticket_value_male + female * ticket_value_female);cout<<"还剩"<<remain<<"元"<<endl;male_remain = (int)(remain / ticket_value_male);cout<<"剩余"<<remain<<"元还能让"<<male_remain<<"位男性看电影"<<endl;return 0;}17***************************************************************#include <iostream>using namespace std;int main(){int apple_number = 60;//一共60个苹果int people = 7;//有7个小朋友int apple_remain;//平均分后还剩几个苹果if(people == 0)cout<<"错误"<<endl;else{apple_remain = apple_number % people;cout<<"平均分配后还剩"<<apple_remain<<"个苹果"<<endl;}return 0;}18**************************************************************#include <iostream>using namespace std;/*学校的图书管理系统一般有以下多个功能:借书、还书、图书分类管理、图书基本信息管理、当前图书状态查询等等*/int main(){cout<<"图书管理系统功能:"<<endl;cout<<"1-借书功能管理"<<endl;cout<<"2-还书功能管理"<<endl;cout<<"3-图书分类管理"<<endl;cout<<"4-图书基本信息管理"<<endl;cout<<"5-当前图书状态查询功能"<<endl;cout<<"0-退出"<<endl;int status;int count = 10;while(count!=0){cout<<"请输入您当前的选择:";cin>>status;if(status == 0)//退出{cout<<"退出成功!"<<endl;break;}else if(status == 1)//借书cout<<"进入借书功能管理模块!"<<endl;else if(status == 2)//还书cout<<"进入还书功能管理模块!"<<endl;else if(status == 3)//图书分类管理cout<<"进入图书分类管理模块!"<<endl;else if(status == 4)//图书基本信息cout<<"进入图书基本信息管理模块!"<<endl;else//查询当前图书状态cout<<"进入当前图书状态查询功能!"<<endl;count--;}return 0;}19***************************************************************** #include <iostream>#include <string>using namespace std;#define Code "123456"int main(){cout<<"请输入密码:";string input_code;//被验证的密码cin>>input_code;if(input_code == Code)//如果相同,则密码为真cout<<"密码验证成功!"<<endl;else//为假cout<<"密码验证失败!"<<endl;return 0;20********************************************************#include <iostream>using namespace std;int main(){int shu;//变量数字cout<<"请输入一个任意的自然数:"<<endl;cin>>shu;//输入数字//求输入数字的所有真因子int *zhen_yinzi = new int[shu];//不知道真因子有多少个,所以用指针指向int index = 0;//个数索引变量,初始化为0int sum = 0;//所有真因子的总和zhen_yinzi[0] = 1;//所有数字都有一个真因子为1for (int i = 2; i < shu; i++)//循环找所有因子{if(shu % i == 0)//表示该因子为真因子{index ++;zhen_yinzi[index] = i;}}for(int j = 0; j <= index; j++)//将所有真因子加和{sum += zhen_yinzi[j];}delete[] zhen_yinzi;//释放内存zhen_yinzi = NULL;if(sum == shu)//如果真因子之和等于数字本身,即为完数cout<<"数字"<<shu<<"是完数"<<endl;elsecout<<"数字"<<shu<<"不是完数"<<endl;return 0;}21******************************************************#include <iostream>using namespace std;int main(){int a = 9;int result = 1;//结果for(int i = 1; i <= 9; i++)//循环{result *= a;}cout<<"9的9次方等于"<<result<<endl;return 0;}22*********************************#include <iostream>using namespace std;#define Pi 3.1415#define code "1234"int main(){cout<<"常量例子1:"<<1<<endl;cout<<"常量例子2:"<<true<<endl;cout<<"常量例子3:"<<"3456"<<endl;cout<<"常量例子4:"<<Pi<<endl;cout<<"常量例子5:"<<code<<endl;const double Pi1 = 3.1415;cout<<"常量例子6:"<<Pi1<<endl;return 0;}23****************************************** #include <iostream>using namespace std;double capital=0.0;//金额double cal(int num, double quantity){switch(num){case 0:return quantity*1.50;case 1:return quantity*1.70;case 2:return quantity*4.60;case 3:return quantity*0.90;case 4:return quantity*2.50;case 5:return quantity*3.70;case 6:return quantity*7.60;case 7:return quantity*3.90;}}int main(){cout<<"提示:本店提供8种水果,如下(左边为水果编号及名称,右边为其单价)"<<endl;cout<<"0西瓜1.50, 1木瓜1.70, 2哈密瓜4.60, 3苹果0.9\n"<<"4梨2.50, 5柚子3.70, 6弥猴桃7.60, 7山楂3.9"<<endl;int num_choice=0;//几种选择while(1){int Y_N;cout<<"请输入您要购买的种类数量:";cin>>num_choice;if(num_choice==0)//不买东西{cout<<"您确定只是看看吗?要不买点吧?继续请按1,否则请按0,直接退出"<<endl;cin>>Y_N;if(Y_N==0){cout<<"退出成功!"<<endl;break;}else if(Y_N==1){}elsecout<<"不要捣乱,按规定输,亲"<<endl;}else{cout<<"种类编号分别为:";int *choice=new int[num_choice];double *quantity_choice=new double[num_choice];for(int i=0;i<num_choice;i++)cin>>choice[i];//种类编号cout<<"请输入对应购买种类的重量:";for(int i=0;i<num_choice;i++)cin>>quantity_choice[i];for(int j=0;j<num_choice;j++)//计算金额{capital += cal(choice[j], quantity_choice[j]);}cout<<"继续购物吗?继续请按1,否则请按0,开始结算"<<endl;cin>>Y_N;if(Y_N==0){cout<<"开始结算,请付"<<capital<<"元"<<endl;break;}else if(Y_N==1){}elsecout<<"不要捣乱,按规定输,亲"<<endl;}}delete[] choice;choice=NULL;delete[] quantity_choice;quantity_choice=NULL;return 0;}24******************************************************#include <iostream>using namespace std;int main(){bool switcher=false;//开关状态bool switcher_ex=false;//前一时刻的开关状态char ch;while(1){cout<<"是否要响应命令?是:输入Y,不是:输入N,退出:Q"<<endl;cin>>ch;if(ch=='Y'){switcher_ex=switcher;switcher=true;if(switcher_ex)cout<<"继续响应命令!"<<endl;elsecout<<"开始响应命令!"<<endl;}else if(ch=='N'){switcher_ex=switcher;switcher=false;if(switcher_ex)cout<<"暂停命令响应!"<<endl;elsecout<<"继续等待命令响应!"<<endl;}else if(ch=='Q'){cout<<"退出成功!"<<endl;break;}else{cout<<"输入错误!"<<endl;}}return 0;}25******************************************************#include <iostream>using namespace std;int main(){int number;while(1){cout<<"请输入一个整数,必须在1-50之间"<<endl;cin>>number;if((number<=50) && (number>=0)){cout<<"符合条件"<<endl;break;}}return 0;}26********************************************************#include <iostream>using namespace std;int main(){int quantity_goods=10000;//总共的物品数int number_staff=189;//员工数目int goods_remain;//剩余物品goods_remain = quantity_goods % number_staff;cout<<"余下的物品数:"<<goods_remain<<endl;return 0;}27*******************************************************#include <iostream>using namespace std;int main(){int a = 6;//一个整型变量int int_size;//整型变量的字节大小int_size = sizeof(a);cout<<"变量a所占的字节大小为:"<<int_size<<endl;return 0;}28************************************************************#include <iostream>using namespace std;//信号灯的状态时亮时灭,现计数,如果次数为偶则亮,如果次数为奇则不亮//需要注意++的位置int main(){int count=1;cout<<"灭"<<endl;for(;count<10;){int a;a = ++count;if(a % 2 == 0)//偶数cout<<"亮"<<endl;elsecout<<"灭"<<endl;}return 0;}29**********************************************#include <iostream>#include <string>using namespace std;int main(){cout<<"请输入一串数字,不能有空格等非数字字符"<<endl;string str;int count_0=0;//0出现的次数cin>>str;//输入cout<<"数字0出现的次数为:";for(int i=0;i<str.length();i++)//判断{if(str[i]=='0')//如果等于0count_0++;else{}}cout<<count_0<<endl;return 0;}30*************************************************#include <iostream>using namespace std;int main(){int migong[5][5]={{0,0,1,1,1},{1,0,0,1,1},{1,1,0,1,1},{1,1,0,0,1},{1,1,1,0,2}};//迷宫int row,column;//行列int path_row[25];//通行路径的行int path_column[25];//通行路径的列for(int i=0;i<25;i++)//初始化path_row[i]=path_column[i]=0;row=0;column=0;int count=0;//次数do//按行循环,先处理,后判断{column = 0;do//按列循环,先处理,后判断{switch(migong[row][column]){case 0://可以通行path_row[count]=row;path_column[count]=column;cout<<"加油,快要找到出口了"<<endl;count++;break;case 1:cout<<"不可通行"<<endl;break;case 2:path_row[count]=row;path_column[count]=column;cout<<"到达出口"<<endl;count++;break;}column += 1;}while(column<5);row += 1;}while(row<5);cout<<"到达出口的路径为:"<<endl;for(int j=0;j<count;j++)//输出出口路径{cout<<"("<<path_row[j]<<","<<path_column[j]<<")->";}cout<<endl;return 0;}31.************************************************#include <iostream>using namespace std;int array_039[10]={0,1,2,3,4,5,6,7,8,9};void binary_search(int left,int right,int value){int search_index;search_index=(left+right)/2;//二分if(array_039[search_index]==value)//如果等于二分点值cout<<"元素"<<value<<"位于第"<<search_index<<"位"<<endl;else if(value>array_039[search_index])//大于,往右边移binary_search(search_index+1,right,value);else if(value<array_039[search_index])//小于,往左边移binary_search(left,search_index-1,value);elsereturn;}int main(){int temp;cout<<"输入你想要找的元素值:";cin>>temp;binary_search(0,9,temp);return 0;}32***********************************************#include <iostream>using namespace std;#define M 5#define N 5int main(){int juzhen[M][N];int max;//最大值int row,column;//行列下标cout<<"依次输入矩阵的各个元素:"<<endl;//初始化for(int i=0;i<M;i++){for(int j=0;j<N;j++){cin>>juzhen[i][j];}}max=juzhen[0][0];//查找最大元素for(int i=0;i<M;i++){for(int j=0;j<N;j++){if(max<juzhen[i][j]){max=juzhen[i][j];row = i+1;column = j+1;}}}cout<<"数组中最大元素为:"<<max<<",其下标为:("<<row<<","<<column<<")"<<endl;return 0;}33****************************************************#include <iostream>using namespace std;//查找二维坐标点(二维、for)void main(){int array_037[2][3]={1,1,3,4,1,6};cout<<"整型数组array_037中元素为1的二维坐标为:"<<endl;for(int i=0;i<2;i++){for(int j=0;j<3;j++){if(array_037[i][j]==1)//记录下标cout<<"("<<i<<","<<j<<")"<<endl;}}}34********************************************************#include <iostream>using namespace std;int main(){int src[10] = {11,12,47,24,49,69,90,89,18,39};//一维数组中包含10个整数//从大到小排序for(int i = 0; i < 10; i++){for(int j = i+1; j < 10; j++){if(src[i]<src[j])//如果前一个元素小于后一个元素{int temp;//临时变量temp = src[i];src[i] = src[j];//大的元素到前一个位置src[j] = temp;//小的元素到后一个位置}}}for(int k = 0; k < 10; k++)cout<<src[k]<<endl;return 0;}35*****************************************************#include <iostream>using namespace std;//实例035 一维数组的应用int main(){cout<<"请输入大小为10的整型数组array_035的各元素值"<<endl;int array_035[10];int temp;for(int i=0;i<10;i++)cin>>array_035[i];cout<<"请输入您要查找的某位元素下标:";cin>>temp;cout<<"经搜索,第"<<temp<<"位元素的值为:"<<array_035[temp]<<endl;return 0;}36****************************************************#include <iostream>using namespace std;//实例034 内存输出(打印数据)int main(){int array_034[10]={1,1,2,3,4};for(int i=0;i<10;i++)cout<<array_034[i]<<endl;return 0;}37*****************************************************#include <iostream>using namespace std;int main(){int src[10];int des[10];for(int i=0;i<10;i++)//src的初始化,并复制到des数组中{src[i]=i;des[i]=src[i];}cout<<"src:"<<endl;for(int j=0;j<10;j++)//输出src数组cout<<src[j]<<"";cout<<"des:"<<endl;for(int k=0;k<10;k++)//输出des数组cout<<des[k]<<"";return 0;}38*****************************************************#include <iostream>using namespace std;struct enter{int row;int col;};//推箱子(数组元素移动)//已知数组中1-不能通行,0-可以通行,2-箱子所在位置,3-目的地int main(){int array_032[4][4]={{1,1,0,1},{1,1,2,1},{1,0,0,1},{3,0,1,1}};//数组元素enter enter_box;//箱子的位置enter_box.row=1;//箱子行enter_box.col=2;//箱子列for(int i=enter_box.row;i<4;i++)//从上到下,从右到左搜索元素为0的位置{for(int j=enter_box.col;j>=0;j--){if(array_032[i][j]==0)//继续搜索{enter_box.row=i;enter_box.col=j;cout<<"("<<enter_box.row<<","<<enter_box.col<<")->";}else if(array_032[i][j]==1)//不能移动{}else if(array_032[i][j]==3){cout<<"到达目的地"<<endl;}else{}}}return 0;}39*****************************************************#include <stdio.h>#include <stdlib.h>#include <iostream>using namespace std;int main(){int i,result;srand((int)time(0));//利用系统时间产生随机序列的种子值int count[6]={0};//1-6的统计个数for(i=0;i<10000;i++){result=1+(int)(6.0*rand()/(RAND_MAX+1.0));//设置出现1-6之间的整数switch(result){case 1:count[0]++;break;case 2:count[1]++;break;case 3:count[2]++;break;case 4:count[3]++;break;case 5:count[4]++;break;case 6:count[5]++;break;}}cout<<"1-6点的出现概率依次为:";for(int k =0;k<6;k++)//打印每点出现的概率cout<<count[k]/10000.0<<",";cout<<endl;return 0;}40********************************************。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Case 13 Questions:
1.What can we learn from this case? 2.Do you know any other examples of misunderstanding caused by translation?
Undoubtedly, the sales in European countries were not satisfying. The seeming equivalents between languages may have very different connotations in different cultures, thus the translator should be cautious in the process of doing the translation so as to avoid misunderstandings.
This example vividly illustrates that failures in intercultural translation may probably lead to very serious consequence, or even disasters to human beings. Definitely, translation is not such a simple process as rendering a word, a sentence or a text literally, but rather a far more complex one than most people assumed.
Misunderstandings which are caused by lack of communicating, unless handled properly, may lead to serious problems. There are many examplee a Chinese cosmetic manufacturer wanted to promote their products into the international market. The slogan of the advertisement was: ―sweet as Jade‖, since in Chinese ―jade‖ was always employed to compliment woman„s beauty; but unfortunately, it was not an appropriate word to describe the beauty of a lady in Western cultures. In English, ―jade ‖ in its use of referring a woman had the connotations such as vulgar, rude, immoral, or skittish.