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