.我們的加密后的電文是由8個基本字符組成,分別是A B C D 1 2 3 #,現在要進行遠距離傳輸,需要對這八個字符進行傳輸編碼,傳輸編碼采用二進制編碼(遠距離傳輸,數字碼抗干擾能力較強),該二進制編碼為3位定長碼(所有字符的編碼長度一樣),編碼規則如下:
A:000 B:001 C:010 D:011 1:100 2:101 3:110 #:111
現在輸入一行(最多10個)加密電文碼,請將其翻譯為對應的傳輸編碼并輸出。
例如:輸入ABC#,輸出000001010111。
提示:編碼規則可以存盤在陣列中,成為編碼表。
格式提醒:
輸入:輸入由A B C D 1 2 3 #組成的一行字符,#只能出現在最后,之后回車換行。
輸出:一行二進制編碼,最后回車換行。注意二進制編碼中的0和1是字符,不是數字。
uj5u.com熱心網友回復:
老師布置的作業吧
// A:000 B:001 C:010 D:011 1:100 2:101 3:110 #:111
#include <stdio.h>
#include <string.h>
int main(int argc, char* argv[])
{
char mess[12];
scanf("%s", mess);
for (int i = 0; i < strlen(mess); i++)
{
switch (mess[i])
{
case 'A':
printf("000");
break;
case 'B':
printf("001");
break;
case 'C':
printf("010");
case 'D':
printf("011");
break;
case '1':
printf("100");
break;
case '2':
printf("101");
break;
case '3':
printf("110");
break;
case '#':
printf("111");
return 0;
default:
break;
}
}
return 0;
}
uj5u.com熱心網友回復:
#的時候再換行下uj5u.com熱心網友回復:
供參考:#include <stdio.h>
#include <string.h>
int main()
{ // A B C D 1 2 3 #
char s[][4]={"000","001","010","011","100","101","110","111"};
char str,ptr[64];
do {
scanf("%c",&str);
switch (str){
case 'A':strcat(ptr,s[0]);
break;
case 'B':strcat(ptr,s[1]);
break;
case 'C':strcat(ptr,s[2]);
break;
case 'D':strcat(ptr,s[3]);
break;
case '1':strcat(ptr,s[4]);
break;
case '2':strcat(ptr,s[5]);
break;
case '3':strcat(ptr,s[6]);
break;
case '#':strcat(ptr,s[7]);
break;
default :break;
}
}while(str != '#');
printf("%s\n",ptr);
return 0;
}
uj5u.com熱心網友回復:
用C++怎么寫,我們不學c語言
uj5u.com熱心網友回復:
用c++怎么寫,我們不學c語言
uj5u.com熱心網友回復:
頭檔案改下:#include <iostream.h>#include <cstring>
using namespace std;
然后輸入:cin>>str; //scanf("%c",&str);
輸出: cout<<ptr<<endl; //printf("%s\n",ptr);
其他的都一樣,不用變。
uj5u.com熱心網友回復:
#include <iostream.h>
#include <cstring>
using namespace std;
int main()
{ // A B C D 1 2 3 #
char s[][4]={"000","001","010","011","100","101","110","111"};
char str,ptr[64];
do {
cin>>str; //scanf("%c",&str);
switch (str){
case 'A':strcat(ptr,s[0]);
break;
case 'B':strcat(ptr,s[1]);
break;
case 'C':strcat(ptr,s[2]);
break;
case 'D':strcat(ptr,s[3]);
break;
case '1':strcat(ptr,s[4]);
break;
case '2':strcat(ptr,s[5]);
break;
case '3':strcat(ptr,s[6]);
break;
case '#':strcat(ptr,s[7]);
break;
default :break;
}
}while(str != '#');
cout<<ptr<<endl; //printf("%s\n",ptr);
return 0;
}
uj5u.com熱心網友回復:
供參考:#include <stdio.h>
#include <string.h>
int main()
{ // A B C D 1 2 3 #
char s[][4]={"000","001","010","011","100","101","110","111"};
char str,ptr[64];
do {
scanf("%c",&str);
switch (str){
case 'A':strcat(ptr,s[0]);
break;
case 'B':strcat(ptr,s[1]);
break;
case 'C':strcat(ptr,s[2]);
break;
case 'D':strcat(ptr,s[3]);
break;
case '1':strcat(ptr,s[4]);
break;
case '2':strcat(ptr,s[5]);
break;
case '3':strcat(ptr,s[6]);
break;
case '#':strcat(ptr,s[7]);
break;
default :break;
}
}while(str != '#');
printf("%s\n",ptr);
return 0;
}
未初始化的區域陣列ptr上來就strcat恐有意外呀。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/269904.html
標籤:C++ 語言
下一篇:撰寫簡單的Arduino接收串口命令的函式,在PC端分別發送字符”A”,”B”,”C”能夠控制LED顯示三種不同亮度。
