標題:
字元解碼(Bit decoding)
[打印本頁]
作者:
may
時間:
2022-12-12 12:57
標題:
字元解碼(Bit decoding)
寫一個程序,將一個字元序列轉換為訊息(這個過程稱為解碼)
字元編碼有五種類型。每種字元編碼對應的消息如下所示
00→Happy
01→Surprise
100→Fear
1010→Anger
1011→Sad
範例:
輸入
Enter a sequence of bits:10111001010
輸出
Sad Fear Anger
#include<stdio.h>
#include<stdlib.h>
#include <string.h>
int main() {
char arr[100];
printf("Enter a sequence of bits: ");
scanf("%s", arr);
int len=strlen(arr);
int i=0;
while(i<len+2)//最後一次判斷,可能實際只有剩2位,郤需判斷到4位,所以把陣列長度加2
{
if(arr[i]=='0'){//如果指針在0
int j=i+1;//設定下一位的變數,可連續判斷2位
if(arr[j]=='0'){//接著下一位也是0
printf("Happy ");//00即Happy
i+=2;//00有2位,所以指針移2位
}
else if(arr[j]=='1'){
printf("Surprise ");//01即Surprise
i+=2;//01有2位,所以指針移2位
}
}
else if(arr[i]=='1'){//如果指針在1
int j=i+1,k=i+2,p=i+3;//設定後3位的變數,可連續判斷3位
if(arr[j]=='0'&& arr[k]=='0'){
printf("Fear ");//100即Fear
i+=3;//100有3位,所以指針移3位
}
else if(arr[j]=='0'&& arr[k]=='1' && arr[p]=='0' ){
printf("Anger ");//1010即Anger
i+=4;//1010有4位,所以指針移4位
}
else if(arr[j]=='0'&& arr[k]=='1' && arr[p]=='1' ){
printf("Sad ");//1011即Sad
i+=4;//1011有4位,所以指針移4位
}
}
}
return 0;
}
複製代碼
歡迎光臨 種子論壇 | 高雄市資訊培育協會學員討論區 (http://istak.org.tw/seed/)
Powered by Discuz! 7.2