【发布时间】:2014-01-13 04:58:36
【问题描述】:
我在 CS50 中,这是我的 greedy.c
#include <cs50.h>
#include <stdio.h>
int main (void)
{
int cents[1000];
int used[1000];
used = 0;
printf("How much change is due? (Don't use symbols ex: 0.45)\n");
scanf("%d", cents);
if (cents < 0) {
printf("Please use positve numbers only \n");
scanf("%d", cents);
};
while (cents >= 0.25) {
cents -= 0.25;
used+1;
};
while (cents >= 0.10) {
cents -= 0.10;
used+1;
};
while (cents >= 0.05) {
cents -= 0.05;
used+1;
};
while (cents >= 0.01) {
cents -= 0.01;
used+1;
};
printf("%d", used);
}
有人可以解释为什么它不起作用吗?我不断收到此错误消息:
greedy.c:8:7: error: incompatible types when assigning to type ‘int[1000]’ from type ‘int’
used = 0;
^
greedy.c:15:15: error: invalid operands to binary >= (have ‘int *’ and ‘double’)
while (cents >= 0.25) {
^
greedy.c:16:9: error: invalid operands to binary - (have ‘int[1000]’ and ‘double’)
cents -= 0.25;
^
greedy.c:19:15: error: invalid operands to binary >= (have ‘int *’ and ‘double’)
while (cents >= 0.10) {
^
greedy.c:20:9: error: invalid operands to binary - (have ‘int[1000]’ and ‘double’)
cents -= 0.10;
^
greedy.c:23:15: error: invalid operands to binary >= (have ‘int *’ and ‘double’)
while (cents >= 0.05) {
^
greedy.c:24:9: error: invalid operands to binary - (have ‘int[1000]’ and ‘double’)
cents -= 0.05;
^
greedy.c:27:15: error: invalid operands to binary >= (have ‘int *’ and ‘double’)
while (cents >= 0.01) {
^
greedy.c:28:9: error: invalid operands to binary - (have ‘int[1000]’ and ‘double’)
cents -= 0.01;
^
greedy.c:31:2: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘int *’ [-Wformat=]
printf("%d", used);
^
make: *** [greedy] Error 1
编辑:好的,多亏了@Digital_Reality,我得到了编译,但现在如果我通过 1.25,我得到我们使用了 1 个硬币,如果我通过 1000.00,它说我们使用了 1000 个硬币,有人知道解决方法吗?
【问题讨论】:
-
您将
cents和used定义为数组,但将它们视为单个值。是哪一个? -
你真的不需要
cents和used成为 1000 个元素的数组,对吗?如果您认为int cents[1000];将cents声明为最大值为1000 的整数,请重新阅读您的教科书。 -
好的,所以我摆脱了 1000,但它仍然无法工作@KeithThompson
-
@mrnatbus12:你“摆脱了 1000”;这是否意味着你有
int cents[];?它“仍然不起作用”;这到底是什么意思?你的程序是什么样的,你现在得到什么错误信息? (还有一个小问题:我猜 CS50 是一门计算机科学课,但你希望每个人都知道吗?) -
@KeithThompson 它看起来像 int 美分;