SOGO論壇
  登入   註冊   找回密碼
查看: 1183|回覆: 4
列印 上一主題 下一主題

[程式設計] C語言 陣列資料 如何對應? [複製連結]

Rank: 10Rank: 10Rank: 10

狀態︰ 離線
跳轉到指定樓層
1
發表於 2010-5-13 19:41:07 |只看該作者 |倒序瀏覽
我目的是要直接陣列的值 對應陣列的值 在輸出

我要判斷輸入 如果是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'; 這裡我看不懂為什麼要減一個字元?
喜歡嗎?分享這篇文章給親朋好友︰
               感謝作者     

Rank: 13Rank: 13Rank: 13Rank: 13

榮譽會員勳章 熱心參予論壇活動及用心回覆主題勳章 數位軟體勳章 小說之星勳章

狀態︰ 離線
2
發表於 2010-5-13 20:20:54 |只看該作者
str[digit] - '0'; 這個是不對的,因為C-'0'不是12

也許是設計程式用的不一樣,我的是不能在scanf("%d", &digit);中輸入英文符號

Rank: 10Rank: 10Rank: 10

狀態︰ 離線
3
發表於 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 編輯 》

Rank: 13Rank: 13Rank: 13Rank: 13

榮譽會員勳章 熱心參予論壇活動及用心回覆主題勳章 數位軟體勳章 小說之星勳章

狀態︰ 離線
4
發表於 2010-5-13 20:51:47 |只看該作者
但是不要用 if、else switch 的判斷式就我的能力是寫不出來的,因為英文和數字字元是不同的
不像只有數字字元直接-'0'就完成了

假如可以用判斷式的話,我想大大也不會來問
所以,我恐怕沒辦法幫到大大

Rank: 10Rank: 10Rank: 10

狀態︰ 離線
5
發表於 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;
}
請注意︰利用多帳號發表自問自答的業配文置入性行銷廣告者,將直接禁訪或刪除帳號及全部文章!
您需要登錄後才可以回覆 登入 | 註冊


本論壇為非營利自由討論平台,所有個人言論不代表本站立場。文章內容如有涉及侵權,請通知管理人員,將立即刪除相關文章資料。侵權申訴或移除要求:abuse@oursogo.com

GMT+8, 2024-4-28 19:04

© 2004-2024 SOGO論壇 OURSOGO.COM
回頂部