getchar()

僵尸男孩 2014-01-14 05:35:00
  while (n--)
{
U=0,I=0,P=0;
printf("Problem #%d\n", count++);
getchar(); //这个用来吃上面的回车
gets(str);
for(i=0;str[i]!='\0';i++)
{
if(str[i]=='=')
{
for(j=i+1;str[j]!='A'&&str[j]!='W'&&str[j]!='V';j++)
{
if(str[j]=='m') sum=sum*0.001;
else if(str[j]=='k') sum=sum*1000;
else if(str[j]=='M') sum=sum*1000000;
else if(str[j]=='.') pos=j;
else
{
if(pos==0)
sum=sum*10+str[j]-'0';
else
sum=sum+pow(10,pos-j);
}

}
if(str[j]=='A') I=sum;
if(str[j]=='W') P=sum;
if(str[j]=='V') U=sum;

}
sum=0;
pos=0;
}
if(P==0) printf("P=%.2lfW",U*I);
else if(I==0) printf("I=%.2lfA",P/U);
else if(U==0) printf("U=%.2lfV",P/I);
printf("\n\n");

}

奇怪的是第一次循环getchar吃掉了 回车,但是第二次循环的时候他就不吃,让我输入一个字符!
...全文
297 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
僵尸男孩 2014-01-20
  • 打赏
  • 举报
回复
我这就是上面还有一个回车吃的··scanf 没有贴出来 不好意思··
零度的折翅 2014-01-19
  • 打赏
  • 举报
回复
引用 7 楼 huoqingna2332 的回复:
[quote=引用 6 楼 JieWinli 的回复:] 我不知道getchar()对你而言有什么意义?
[/quote] 我也不知道,LZ到底想干嘛?
零度的折翅 2014-01-19
  • 打赏
  • 举报
回复
引用 6 楼 JieWinli 的回复:
我不知道getchar()对你而言有什么意义?
lwouyang 2014-01-19
  • 打赏
  • 举报
回复
在gets()前面加个getchar(),这是从哪儿学的武功秘籍? LZ 弄懂为什么会有个回车在那儿了没?
看见繁华 2014-01-19
  • 打赏
  • 举报
回复
看完问题 我也一头雾水啊
jiewinli 2014-01-18
  • 打赏
  • 举报
回复
我不知道getchar()对你而言有什么意义?
iaccepted 2014-01-17
  • 打赏
  • 举报
回复
你为什么要吃掉回车呢,这是输出啊,去掉getchar()就对了。 你可能跟输入混了,输入的时候,输完可以加个getchar()把缓冲区中的\n吃掉,但这里是输出,\n会清空缓冲区的,而你加个getchar()就必须要输入一个字符啊,就跟楼上说的不需要输入字符才奇怪呢。
MARIOV 2014-01-17
  • 打赏
  • 举报
回复
这里不是吃掉一个回车,是吐出来一个回车
僵尸男孩 2014-01-14
  • 打赏
  • 举报
回复
引用 1 楼 max_min_ 的回复:
第二次循环没有了回车符呗!
怎么第二次 回车符 就没了? 纳闷了
Mr. Code 2014-01-14
  • 打赏
  • 举报
回复
这代码里getchar不该要,要了要求输入一个字符是正常的,不要求输入字符反而才是不正常的。
max_min_ 2014-01-14
  • 打赏
  • 举报
回复
第二次循环没有了回车符呗!

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧