#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贡献883条经验 获得超454个赞
问题出在 scanf("%c", &c) 这一句。准确地说,出在第二次执行这句代码的时候。
你输入之后一般会回车吧。这个换行符也会留在输入缓冲区中,而 %c 会匹配输入流中的任何一个字符,所以就会读到上次剩下的换行符'\n'。
解决办法是在格式化字符串中的 %c 前加一个空格,比如 scanf(" %c...
具体可以看我在另一个问题下的详细回答 http://www.imooc.com/wenda/detail/381183
- 1 回答
- 0 关注
- 1048 浏览
添加回答
举报
0/150
提交
取消