C-一道c语言题,帮纠错

发布于 2017-01-18 10:11:56 字数 553 浏览 1136 评论 3

原题在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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

清晨说ぺ晚安 2017-08-23 12:02:42

因为你在scanf("%d %d",&m,&n)中,两个%d中间有空格,所以你输入数据的时候两个数据之间一定要加空格,否则格式错误你就会出错

灵芸 2017-07-11 12:35:43

c语言中,输入数据时是不区分空格格式的(其它格式都区分,比如逗号之类的)。
你这个是主函数带参数,不能直接在ide中测试查看结果,建议在命令行中带参数执行。
还有就是从主函数传入的参数怎么都不见你用,要是你这个情况的话,完全用不着这样啊,直接int main() ,后面返回空就对了

偏爱自由 2017-06-08 11:35:17

很简单的原因,你知道之后肯定得郁闷:
printf("Scenario #%dn:",k);

你仔细看,不是"Scenario #%dn:",是"Scenario #%d:n",注意冒号的位置
再就是(float)(mn)这行应该换成(double)(mn),没记错的话按32位C的标准,%f是输出double的

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文