c - 需要有关 CS50 使用 'C' 的 luhns 算法的帮助

标签 c cs50 luhn

我的代码遇到的问题如下:

  1. 第 15 行,尽管括号是相关的,但并未将其识别为相关
  2. 以及无法识别 (x/10; x<10,++count) 中的第一个分号;
  3. 无法识别除号和大于号(x/10;x<10,++count);
  4. 第 22 行,计数 = 15 ||计数 = 16);显然这两个数字都是不可分配的。

// check credit number if valid
#include <cs50.h>
#include <stdio.h>
#include <math.h>

int main(void)
{
    long x;
    int count;
    count = 0;
    printf("Please enter your credit card number: \n");
    scanf("%ld", &x);
    while (x >= 9)
        {
        (x/10; x>10, ++count);
        }
    printf("length of card number: ld, count");
    if (count != 13 || count != 15 || count != 16)
        {
        printf("is invalid, \n");
        }
    if (count = 13 || count = 15 || count = 16); 
        {
        printf("is valid, \n");
        }
}

最佳答案

(x/10; x>10, ++count);看起来您正在尝试编写 for 的表达式环形。你不能把它们写成一个孤立的陈述。一个for声明的形式为:

for ( clause-1 ; expression-2 ; expression-3 ) statement

clause-1 可以是声明或表达式。它在循环开始时进行评估。

语句中的循环体可以是复合语句( {} ),只要 表达式-2 就会执行在语句开始之前评估为 true。每次执行语句后,都会计算表达式-3

请注意,两个分隔符均使用分号;没有逗号。

如果您希望将这些条件与 while 合并在他们之前,您需要将整个事情重组为 for循环或其他适当的 C 结构。

在第一个if声明,count != 13 || count != 15 || count != 16是错的。 count 总是不等于 13 不等于 15,因为它永远不可能同时等于两者。再考虑一下您要测试什么条件。

第二个if语句中,比较值的运算符是 == 。相比之下,=赋值运算符。

关于c - 需要有关 CS50 使用 'C' 的 luhns 算法的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60140163/

相关文章:

c - 我可以安全地设置 TERM 环境变量吗?

c - 将 C#defines 导出为 shell 变量

CS50学分任务回顾

java - 将 ISBN10 转换为 ISBN13

java - 如何通过第一个数值来识别字符串

java - 如何通过 JNI 更新 C 中的字节数组而不返回字节数组

c - 如何将矩阵应用于opencv中的图像?

c - 如何将文件中的字符串和 float 存储到结构中?

c - 为什么 x[2] 也重新分配 y 值?我该如何解决这个问题

c - 在 Luhn's Alg 上制作了一个脚本。无法清楚地理解如何为修改后的脚本创建和调用函数