返回列表 發帖

字元解碼(Bit decoding)

寫一個程序,將一個字元序列轉換為訊息(這個過程稱為解碼)
字元編碼有五種類型。每種字元編碼對應的消息如下所示
00→Happy
01→Surprise
100→Fear
1010→Anger
1011→Sad

範例:
輸入
Enter a sequence of bits:10111001010

輸出
Sad Fear Anger
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include <string.h>
  4. int main() {
  5. char arr[100];
  6. printf("Enter a sequence of bits: ");
  7. scanf("%s", arr);
  8. int len=strlen(arr);
  9. int i=0;
  10. while(i<len+2)//最後一次判斷,可能實際只有剩2位,郤需判斷到4位,所以把陣列長度加2
  11. {
  12.     if(arr[i]=='0'){//如果指針在0
  13.        int j=i+1;//設定下一位的變數,可連續判斷2位
  14.        if(arr[j]=='0'){//接著下一位也是0
  15.            printf("Happy ");//00即Happy
  16.            i+=2;//00有2位,所以指針移2位
  17.        }
  18.        else if(arr[j]=='1'){
  19.            printf("Surprise ");//01即Surprise
  20.            i+=2;//01有2位,所以指針移2位
  21.        }
  22.     }
  23.     else if(arr[i]=='1'){//如果指針在1
  24.        int j=i+1,k=i+2,p=i+3;//設定後3位的變數,可連續判斷3位

  25.        if(arr[j]=='0'&& arr[k]=='0'){
  26.              printf("Fear ");//100即Fear
  27.              i+=3;//100有3位,所以指針移3位
  28.        }
  29.        else if(arr[j]=='0'&& arr[k]=='1' && arr[p]=='0' ){
  30.              printf("Anger ");//1010即Anger
  31.              i+=4;//1010有4位,所以指針移4位
  32.        }
  33.        else if(arr[j]=='0'&& arr[k]=='1' && arr[p]=='1' ){
  34.              printf("Sad ");//1011即Sad
  35.              i+=4;//1011有4位,所以指針移4位
  36.        }
  37.     }
  38. }
  39.   return 0;
  40. }
複製代碼
May

返回列表