首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >程序冻结-Luhn算法

程序冻结-Luhn算法
EN

Stack Overflow用户
提问于 2014-02-07 12:07:05
回答 2查看 1K关注 0票数 0

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

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

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

然而,当我进入最后一个函数(我这样注释的函数)然后编译时,程序就开始挂起了。我不知道是什么原因造成的。

代码语言:javascript
复制
#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;


}
EN

回答 2

Stack Overflow用户

发布于 2014-02-07 12:12:25

代码语言:javascript
复制
for (i = 2; i <= 16; i + 2)

应该是

代码语言:javascript
复制
for (i = 2; i <= 16; i = i + 2)

代码语言:javascript
复制
for (i = 2; i <= 16; i += 2)

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

票数 0
EN

Stack Overflow用户

发布于 2014-02-07 12:20:23

你声明你的数组

代码语言:javascript
复制
array[16] so array[0] .. array[15]

在第二个for循环中,您拥有

代码语言:javascript
复制
when i = 16 array[16]!

valter

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21619148

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档