#include <stdio.h>int main(void){??? char c;??? int i,n;?scanf("%d", &n);?for(i=0;i<n;i+=1)?{???scanf("%c", &c);??????? if((c >= '0' && c <= '9') || (c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F'))??{???if(c >= '0' && c <= '9')????printf("%c\n",c-'0');????? else if(c >= 'a' && c <= 'f')??????????????? printf("%c\n",c-'a'+10);???else if(c >= 'A' && c <= 'F')????printf("%c\n",c-'A'+10);?? }??else???printf("%d\n",c);?}?return 0;}
1 回答
已采納

onemoo
TA貢獻(xiàn)883條經(jīng)驗(yàn) 獲得超454個(gè)贊
問題出在 scanf("%c", &c) 這一句。準(zhǔn)確地說,出在第二次執(zhí)行這句代碼的時(shí)候。
你輸入之后一般會(huì)回車吧。這個(gè)換行符也會(huì)留在輸入緩沖區(qū)中,而 %c 會(huì)匹配輸入流中的任何一個(gè)字符,所以就會(huì)讀到上次剩下的換行符'\n'。
解決辦法是在格式化字符串中的 %c 前加一個(gè)空格,比如 scanf(" %c...
具體可以看我在另一個(gè)問題下的詳細(xì)回答?http://idcbgp.cn/wenda/detail/381183
- 1 回答
- 0 關(guān)注
- 1105 瀏覽
添加回答
舉報(bào)
0/150
提交
取消