Closed. This question is off-topic。它当前不接受答案。
想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
3年前关闭。
我正在尝试解决此问题:http://poj.org/problem?id=1003
我的代码不起作用?由于某种原因,无论我输入什么,它总是会退回2张卡。有人可以找到问题吗?
谢谢!
正确的方法是
您的代码被解释为就像您编写的那样:
问题2:变量
想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
3年前关闭。
我正在尝试解决此问题:http://poj.org/problem?id=1003
#include <stdio.h>
int c;
int a = 0;
int i;
int main()
{
scanf("%.2f", &c);
if (0.01 <= c <= 5.20){
for (i = 1; a < c; ++i){
a += (1/(i + 1));
}
printf("%d card(s)", i + 1);
}
return 0;
}
我的代码不起作用?由于某种原因,无论我输入什么,它总是会退回2张卡。有人可以找到问题吗?
谢谢!
最佳答案
问题1:这不是测试变量是否在两个值之间的方法:
if (0.01 <= c <= 5.20){
正确的方法是
if (0.01 <= c && c <= 5.20){
您的代码被解释为就像您编写的那样:
if ((0.01 <= c) <= 5.20){
(0.01 <= c)
将是0
或1
,并且两者都小于5.20
,因此始终为true。问题2:变量
a
和c
必须是float
,而不是int
,因为int
变量中不能包含分数,并且%f
中的scanf
格式要求相应的参数是指向float
的指针。10-08 08:21