C-一道c语言题,帮纠错
原题在http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=37。我在网上找到几个,和我的感觉差不多,为什么我还是wrong answer
#include <stdio.h>
int main(int argc, char *argv[])
{
int i,m,n,k;
scanf("%d",&i);
for(k=1;k<=i;k++)
{
scanf("%d %d",&m,&n);
printf("Scenario #%dn:",k);
if(m*n%2==0)
printf("%.2fnn",(float)m*n);
else
printf("%.2fnn",m*n+0.41);
}
return 0;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
因为你在scanf("%d %d",&m,&n)中,两个%d中间有空格,所以你输入数据的时候两个数据之间一定要加空格,否则格式错误你就会出错
c语言中,输入数据时是不区分空格格式的(其它格式都区分,比如逗号之类的)。
你这个是主函数带参数,不能直接在ide中测试查看结果,建议在命令行中带参数执行。
还有就是从主函数传入的参数怎么都不见你用,要是你这个情况的话,完全用不着这样啊,直接int main() ,后面返回空就对了
很简单的原因,你知道之后肯定得郁闷:
printf("Scenario #%dn:",k);
你仔细看,不是"Scenario #%dn:",是"Scenario #%d:n",注意冒号的位置
再就是(float)(mn)这行应该换成(double)(mn),没记错的话按32位C的标准,%f是输出double的