#include "stdio.h"
main() { int a=0,a1; float b=0,b1; char c; do{ scanf("%c%d%f",&c,&a1,&b1); if(c=='s'){a+=a1;b+=b1;} if(c=='b'){a-=a1;b-=b1;} printf("%c %d %5.2f\n",c,a,b);} while(c!='e'); } 当第一次输入数据时没错 第二次以后每次输入数据都会打印出2个结果 这是怎么回事啊 哪位好心人指点一下 比如 输入s 1 11 输出s 1 11.00 再输入s 2 12
输出 1 11.00 s 3 23.00 再输入s 3 11
输出 3 23.00 s 6 34.00
----------------解决方案--------------------------------------------------------
不会吧,我看你这个程序都有问题,不应该能运行的。
----------------解决方案--------------------------------------------------------
a,b,在不断的累加中,变量记住了上次的结果,你在输入相同当然不一样了
要对a,b进行清空
必须重新运行,输入同样的,数据,如果那时候结果不一样,那就是你的程序有问题
那是因为你有判断的输出啊
scanf("%c%d%f",&c,&a1,&b1);
if(c=='s'){a+=a1;b+=b1;}
if(c=='b'){a-=a1;b-=b1;}
printf("%c %d %5.2f\n",c,a,b);} while(c!='e');
}
当你输入的字符是s的时候执行{a+=a1;b+=b1;}
当你输入的字符是b的时候执行{a-=a1;b-=b1;}
如果你输入的不是这两个的话,那肯定输出的上0了
细看看就明白了,不明白加我QQ84962947
----------------解决方案--------------------------------------------------------
楼上的答非所问了吧
在循环中我只有一个scanf 对应一个printf 怎么会一次输入会有两次输出呢
还有 我每次都输入的字符都是s
----------------解决方案--------------------------------------------------------
这里主要是最后接收多了一个回车的字符,导致多了一次! 加个getchar()去接收这个字符就可! 程序改为: #include "stdio.h"
main() { int a=0,a1; float b=0,b1; char c; do{ scanf("%c%d%f",&c,&a1,&b1); getchar(); if(c=='s'){a+=a1;b+=b1;} if(c=='b'){a-=a1;b-=b1;} printf("%c %d %5.2f\n",c,a,b);} while(c!='e'); }
----------------解决方案--------------------------------------------------------
嗯 谢谢楼上的了哈
[此贴子已经被作者于2005-4-25 13:32:17编辑过]
----------------解决方案--------------------------------------------------------
//这里主要是最后接收多了一个回车的字符,导致多了一次! //可以使用清流函数fflush(stdin)来避免这个问题 #include "stdio.h"main() { int a=0,a1; float b=0,b1; char c; do{ scanf("%c%d%f",&c,&a1,&b1); fflush(stdin);//清流函数 if(c=='s'){a+=a1;b+=b1;} if(c=='b'){a-=a1;b-=b1;} printf("%c %d %5.2f\n",c,a,b);} while(c!='e'); }
----------------解决方案--------------------------------------------------------
狂晕 都说了刚学C 清流看不懂啊 还是要谢谢7楼的关心哈
就刚好看得懂5楼的
----------------解决方案--------------------------------------------------------