为什么用C语言编写的程序在比较输入和某些数组时不返回值5?

JLAc91
#include <cs50.h>
#include <stdio.h>
#include <string.h>
#include <math.h>

// Points assigned to each letter of the alphabet
int POINTS[] = { 1, 3, 3, 2, 1, 4, 2, 4, 1, 8, 5, 1, 3, 1, 1, 3, 10, 1, 1, 1, 1, 4, 4, 8, 4, 10 };
char ALPHABET[] = { 'a' , 'b', 'c', 'd', 'e', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 
'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' };

int main(void) {
    string word1 = "dog";
    int score;
    int tile;
    int points;
    int index;
    int finish = strlen(word1);

    for (tile = 0, index = 0, score = 0; tile == finish; index++) {
        if (word1[tile] == ALPHABET[index]) {
            points = index;
            score = score + POINTS[points];
            tile++;
            index = -1;
        }
    }
    printf("%i\n", score);
}

该程序返回的值0不是我认为应该5基于字母分数的值?请给我一些有关如何完成此操作的见解。我不应该在循环内部使用Iffor循环吗?感谢您的阅读(如果有人这样做)。

安德鲁·特拉克

请记住,您正在使用基于零的索引。

您的for循环正在使用此:

tile == finish

它应该是:

tile < finish

“ dog”的长度为3,因此索引位置为0到2。

这至少是您的代码问题的一部分。


就像其他人所说的那样,您的循环需要一个嵌套循环,该循环可以迭代所有字母。找到匹配项后,您可以break跳出该内循环。


另外,您还有:

'd', 2
'g', 4
'o', 3

总计为9。这是基于您的代码包含两个e字符的情况。


另一个问题是您重置index为,-1因此从头开始重新启动。

综上所述:

  • 循环边界上采用从零开始的索引编制原则
  • 使用嵌套for循环。
  • break 找到匹配项后,便会退出内部循环。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

[^ \ n]有什么用?(用C语言编写)

来自分类Dev

Files.createDirectory 的返回值有什么用

来自分类Dev

为什么用角表比较旧值和新值,看它们是否相等

来自分类Dev

为什么返回值不更新?

来自分类Dev

函数不返回值,为什么?

来自分类Dev

为什么查询不返回值

来自分类Dev

为什么不返回值?

来自分类Dev

为什么用Intel汇编语言编写的程序无法在PowerPC处理器上执行?

来自分类Dev

为什么用C语言不编译该程序?错误:未定义对“ i2c_smbus_read_byte_data”的引用

来自分类Dev

调用方法并将返回值赋给数组时,为什么C#在调用方法时使用数组引用?

来自分类Dev

为什么scipy.ndimage.io.imread返回PngImageFile,而不返回值数组

来自分类Dev

比较C++中的两个数组并根据元素的匹配或不匹配返回值

来自分类Dev

C-为什么用&而不是switch / if比较常数?

来自分类Dev

为什么要与typeof的返回值进行严格比较

来自分类Dev

为什么要与typeof的返回值进行严格比较

来自分类Dev

如何搜索返回值的位置和比较次数的数组?

来自分类Dev

C语言:如何评估信号处理程序的返回值?

来自分类Dev

为什么此函数不返回值?

来自分类Dev

为什么systemctl在NRPE检查中不返回值?

来自分类Dev

为什么此函数不返回值?

来自分类Dev

为什么这个简单的函数不返回值?

来自分类Dev

为什么这个方法不返回值?

来自分类Dev

为什么Scipy的ndimage.map_coordinates对于某些数组不返回任何值或错误的结果?

来自分类Dev

为什么C ++允许实际上不返回值的函数?

来自分类Dev

返回值优化和C语言中的复制省略

来自分类Dev

StringBuilder Append(string ...)函数的返回值有什么用?

来自分类Dev

为什么释放键时函数返回值?

来自分类Dev

当未指定return语句时,为什么C ++没有默认构造返回值?

来自分类Dev

HTML5 Canvas:为什么用measureText和offsetWidth()测量文本会给出不同的值?

Related 相关文章

  1. 1

    [^ \ n]有什么用?(用C语言编写)

  2. 2

    Files.createDirectory 的返回值有什么用

  3. 3

    为什么用角表比较旧值和新值,看它们是否相等

  4. 4

    为什么返回值不更新?

  5. 5

    函数不返回值,为什么?

  6. 6

    为什么查询不返回值

  7. 7

    为什么不返回值?

  8. 8

    为什么用Intel汇编语言编写的程序无法在PowerPC处理器上执行?

  9. 9

    为什么用C语言不编译该程序?错误:未定义对“ i2c_smbus_read_byte_data”的引用

  10. 10

    调用方法并将返回值赋给数组时,为什么C#在调用方法时使用数组引用?

  11. 11

    为什么scipy.ndimage.io.imread返回PngImageFile,而不返回值数组

  12. 12

    比较C++中的两个数组并根据元素的匹配或不匹配返回值

  13. 13

    C-为什么用&而不是switch / if比较常数?

  14. 14

    为什么要与typeof的返回值进行严格比较

  15. 15

    为什么要与typeof的返回值进行严格比较

  16. 16

    如何搜索返回值的位置和比较次数的数组?

  17. 17

    C语言:如何评估信号处理程序的返回值?

  18. 18

    为什么此函数不返回值?

  19. 19

    为什么systemctl在NRPE检查中不返回值?

  20. 20

    为什么此函数不返回值?

  21. 21

    为什么这个简单的函数不返回值?

  22. 22

    为什么这个方法不返回值?

  23. 23

    为什么Scipy的ndimage.map_coordinates对于某些数组不返回任何值或错误的结果?

  24. 24

    为什么C ++允许实际上不返回值的函数?

  25. 25

    返回值优化和C语言中的复制省略

  26. 26

    StringBuilder Append(string ...)函数的返回值有什么用?

  27. 27

    为什么释放键时函数返回值?

  28. 28

    当未指定return语句时,为什么C ++没有默认构造返回值?

  29. 29

    HTML5 Canvas:为什么用measureText和offsetWidth()测量文本会给出不同的值?

热门标签

归档