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吃掉了 回车,但是第二次循环的时候他就不吃,让我输入一个字符!
...全文
182 点赞 收藏 11
写回复
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日
第二次循环没有了回车符呗!
回复 点赞
发动态
发帖子
C语言
创建于2007-09-28

3.2w+

社区成员

24.0w+

社区内容

C语言相关问题讨论
社区公告
暂无公告