我的代码遇到的问题如下:
- 第 15 行,尽管括号是相关的,但并未将其识别为相关
- 以及无法识别 (x/10; x<10,++count) 中的第一个分号;
- 无法识别除号和大于号(x/10;x<10,++count);
- 第 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/