SOGO論壇

標題: C語言 陣列資料 如何對應? [列印本頁]

作者: a37583758    時間: 2010-5-13 19:41:07     標題: C語言 陣列資料 如何對應?

我目的是要直接陣列的值 對應陣列的值 在輸出

我要判斷輸入 如果是0x88 輸出就是0
我要判斷輸入 如果是0x48 輸出就是4
我要判斷輸入 如果是0x28輸出就是8
我要判斷輸入 如果是0x18輸出就是C

但是不要用 if、else switch 的判斷式

目前寫出來狀況就是無法對應 預設的產生值 不知道該怎麼改?


char *number= "0x88,0x48,0x28,0x18,0x84,0x44,0x24,0x14,0x82,0x42,0x22,0x12,x81,0x41,0x21,0x11";

char *str= "0,4,8,C,1,5,9,2,6,A,E,3,7,B,F";
   
int main(int argc, char *argv[])
{ char digit;  unsigned char output;
    scanf("%d", &digit);
    output = str[digit] - '0';//輸入number=輸出
    printf("%d -> %c\n", output, number[output]);
  system("PAUSE");       
  return 0;
}


str[digit] - '0'; 這裡我看不懂為什麼要減一個字元?
作者: edvx    時間: 2010-5-13 20:20:54

str[digit] - '0'; 這個是不對的,因為C-'0'不是12

也許是設計程式用的不一樣,我的是不能在scanf("%d", &digit);中輸入英文符號
作者: a37583758    時間: 2010-5-13 20:23:10     標題: 回覆 #2 edvx 的帖子

我用的編譯軟體是DeVC++ 4.9.9版


原先最早程式是宣告int型態去跑程式

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
    int digit;
    scanf("%d", &digit);
    char *str = "a,b,c,d";
    char *number = "0,1,2,3";
    int output = number[digit]-'0';//輸入number=輸出
    printf("%d -> %c\n", output, str[output]);
  system("PAUSE");       
  return 0;
}


而現在發表的主題  型態卻不能是int

*str 裡面的字串資料 又是數字加上大寫英文字母  好難搞定...
不知道要怎麼修改

《 本帖最後由 a37583758 於 2010-5-13 20:27 編輯 》
作者: edvx    時間: 2010-5-13 20:51:47

但是不要用 if、else switch 的判斷式就我的能力是寫不出來的,因為英文和數字字元是不同的
不像只有數字字元直接-'0'就完成了

假如可以用判斷式的話,我想大大也不會來問
所以,我恐怕沒辦法幫到大大
作者: a37583758    時間: 2010-5-15 23:59:20     標題: 回覆 #4 edvx 的帖子

如果是....  如何修改?

int main(void)
{char number[]= {0x88, 0x48, 0x28, 0x18, 0x84, 0x44, 0x24, 0x14, 0x82, 0x42, 0x22, 0x12, 0x81, 0x41, 0x21, 0x11},
   *str= "048C15926AE37BFD";
int i, digit,
    nNum= sizeof(number) / sizeof(*number);
scanf("%i", &digit);

i= nNum;
//while (number[--i] != digit);

if (i >= 0)
   {
    printf("0x%2X -> %c\n", digit, str);
   }
else
{
    printf("Illegal input\n");
}
    system("pause");
    return 0;
}




歡迎光臨 SOGO論壇 (https://oursogo.com/) Powered by OURSOGO.COM