为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C
萧子都 2017-11-09 17:05:56
#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

查看完整回答
反对 回复 2017-11-09
  • 1 回答
  • 0 关注
  • 1048 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信