gpt4 book ai didi

c - 程序卡住 - Luhn 算法

转载 作者:行者123 更新时间:2023-11-30 17:40:05 26 4
gpt4 key购买 nike

我希望有人能帮助我解决这个问题。我是一个彻底的 C 新手。

这是关于 C 类(class)的学校作业(只是普通的旧 C,而不是 C# 或 C++),教授坚持认为我们唯一允许使用的编译器是 Borland 5.5。

一般作业是运行一种可以检查信用卡号有效性的算法。我已经成功让程序获取用户输入的 CC 号码,然后将该号码分配到一个数组中。它打印出的大部分内容都是我想要的。

但是,当我输入最后一个函数(我这样评论的函数)然后编译时,程序开始挂起。我不知道是什么原因造成的。

#include <stdio.h>
#include <math.h>
#include <stdlib.h>

//global variables declared.
//in an earlier version, I was going to use multiple functions, but I couldn't make them work
float array[16];
double num, ten;
int i, a, b, x, y, check;

int main()
{


ten = 10;

//pick up user-input number
printf("Enter your credit card number\n>");
scanf("%lf", &num);

//generate the array
for (i = 15; i >= 0; i--)
{
array[i] = fmod(num, ten);
num /= 10;
printf("Array is %1.1lf\n", array[i]);
}


//double every other number. If the number is greater than ten, test for that, then parse and re-add.
//this is where the program starts to hang (I think).
{for (i = 2; i <= 16; i + 2)
{
array[i] = array[i] * 2;
if (array[i] >= 10)
{
a = (int)array[i] % 10;
b = (int)array[i] / 10;
array[i] = a + b;
}
}
printf("%f", array[i]);
}

//add the numbers together
x = array[2] + array[4] + array[6] + array[8] + array[10] + array[12] + array[14] + array[16];
y = array[1] + array[3] + array[5] + array[7] + array[9] + array[11] + array[13] + array[15];

check = x + y;

//print out a test number to make sure the program is doing everything correctly.
//Right now, this isn't happening
printf("%d", check);

return 0;


}

最佳答案

for (i = 2; i <= 16; i + 2)

应该是

for (i = 2; i <= 16; i = i + 2)

for (i = 2; i <= 16; i += 2)

如您所见,i 的值永远不会被修改,因此循环永远不会终止。

关于c - 程序卡住 - Luhn 算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21619148/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com