一道简单的acm习题,为什么我的程序没有输出?

题目很简单:Theconteststartsnow!Howexciteditistoseeballoonsfloatingaround.You,oneofthebestp... 题目很简单:
The contest starts now! How excited it is to see balloons floating around. You, one of the best programmers in HDU, can get a very beautiful balloon if only you have solved the very very very... easy problem.
Give you an operator (+,-,*, / --denoting addition, subtraction, multiplication, division respectively) and two positive integers, your task is to output the result.
Is it very easy?
Come on, guy! PLMM will send you a beautiful Balloon right now!
Good Luck!
Input
Input contains multiple test cases. The first line of the input is a single integer T (0<T<1000) which is the number of test cases. T test cases follow. Each test case contains a char C (+,-,*, /) and two integers A and B(0<A,B<10000).Of course, we all know that A and B are operands and C is an operator.
Output
For each case, print the operation result. The result should be rounded to 2 decimal places If and only if it is not an integer.
Sample Input
4
+ 1 2
- 1 2
* 1 2
/ 1 2
Sample Output
3
-1
2
0.50
我的代码:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
char ch;
int n, x, y;
scanf("%d", &n);
while(n)
{
if (n > 1000)
{
break;
}
getchar(ch);
scanf("%d %d", &x, &y);
switch (ch)
{
case '+':
printf("%d\n", x + y);
break;
case '-':
printf("%d\n", x - y);
break;
case '*':
printf("%d\n", x * y);
break;
case '/':
printf("%.2f\n", (float)(x / y));
break;
default:
break;
}
n --;
}
return 0;
}
为什么没有输出呢?
程序修改后输出正常了,可是传到HDOJ上面还是显示Wrong Answer,怎么修改呢??
展开
 我来答
wanglixin1001
2012-10-03 · TA获得超过4173个赞
知道大有可为答主
回答量:1758
采纳率:80%
帮助的人:850万
展开全部
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
int ch;
int n, x, y;
scanf("%d", &n);
while(n)
{
if (n > 1000)
{
break;
}
getchar(); //获取刚才的'\n'
ch = getchar(); // 获取第一个字符
scanf("%d %d", &x, &y);
switch (ch)
{
case '+':
printf("%d\n", x + y);
break;
case '-':
printf("%d\n", x - y);
break;
case '*':
printf("%d\n", x * y);
break;
case '/':
printf("%.2f\n", x / (1.0 * y)); //这里原先的(float)(x/y)会先计算x/y,比如1/2就会是0。
break;
default:
break;
}
n --;
}
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
2008_shenao
2012-10-03 · TA获得超过555个赞
知道小有建树答主
回答量:306
采纳率:90%
帮助的人:98.1万
展开全部
switch(choice)中的choice,也就是你的ch,应该是int型的,我试过了,可以输出!字符型不行!
这道题,不适合用switch吧,它要求的是输入字符型 + - * / ,然后去运算,所以用switch提交是过不去的!试试其他的方法,比如if else if else if else if 等!
追问
程序修改后输出正常了,可是传到HDOJ上面还是显示Wrong Answer,怎么修改呢?? 在HDOJ题号是1.2.5
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
buctears
2012-10-04 · TA获得超过189个赞
知道答主
回答量:84
采纳率:0%
帮助的人:23.3万
展开全部
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
char ch;
int n, x, y;
scanf("%d", &n);//1
while(n--)
{
getchar(); //这里是接收1处的回车的
ch = getchar();//getchar ()是这样用的

scanf("%d %d",&x, &y);
switch (ch) //switch 可以用char型的

{
case '+':
printf("%d\n", x + y);
break;
case '-':
printf("%d\n", x - y);
break;
case '*':
printf("%d\n", x * y);
break;
case '/':
printf("%.2f\n", (float)(x / y));
break;
default:
break;
}
}
return 0;
}

这样应该对了,不过你再找我
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
gui_happy
2012-10-04 · TA获得超过2091个赞
知道大有可为答主
回答量:4276
采纳率:42%
帮助的人:2890万
展开全部
你看下这个程序符合你要求不
#include<string.h>
#include<stdlib.h>
#include<stdio.h>
int main()
{
char ch;
int n,i, x, y;
scanf("%d", &n);
while(n)
{
if (n > 1000)
{
break;}
scanf("%d %d %c",&x,&y,&ch);

switch (ch)
{
case'+': printf("%d\n",(x+y));break;
case'-': printf("%d\n",x-y);break;
case'*': printf("%d\n",x*y);break;
case'/': printf("%.2f\n", (float)(x/y));break;
default: break;
}
n --;
}
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Lamorh
2012-10-03 · 超过13用户采纳过TA的回答
知道答主
回答量:61
采纳率:0%
帮助的人:35.5万
展开全部
如果你认为得到的数据是对的,而提交出错,可能就是一些细节问题,ACM这种对细节要求很严格!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式