猿问

代码运行后输入一个值然后会出现一个10,为什么?

#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;
}


萧子都
浏览 1049回答 1
1回答

onemoo

问题出在 scanf("%c", &c) 这一句。准确地说,出在第二次执行这句代码的时候。你输入之后一般会回车吧。这个换行符也会留在输入缓冲区中,而 %c 会匹配输入流中的任何一个字符,所以就会读到上次剩下的换行符'\n'。解决办法是在格式化字符串中的 %c 前加一个空格,比如 scanf(" %c...具体可以看我在另一个问题下的详细回答 http://www.imooc.com/wenda/detail/381183
随时随地看视频慕课网APP
我要回答