【问题标题】:C: Fixing program malfunctionC:修复程序故障
【发布时间】:2013-09-09 22:22:07
【问题描述】:

近几个小时以来,我一直试图找出我的代码出了什么问题,但我似乎找不到它。我的代码正在编译,这告诉我没有违反编译器的错误,但我的程序没有按照我想要的方式运行。

我的代码是:

#include <stdio.h>
#define MAXNUM 3
#define MAXLEN 9

int main ()
{
        char input[MAXNUM][MAXLEN];
        int count;
        int a = 0;
    for ( count = 0; (count + 1) < MAXNUM; count++ ) { 
    printf ( "Enter number: (12XXXXXXX): " );
        if ((fgets ( input[count], sizeof(input), stdin )) != 0 ) {
            a = atoi (input[count]);
            if ((( a / 10000000 ) >= 13 ) || (( a / 10000000 ) <= 11 )) {
            //error message
            }
        } else {
            //error message
        }
    } 
    return 0;

}

该程序应该接受三个输入,但它需要四个,然后致命地终止。它的其他功能正常工作(处理错误的输入等),唯一的问题似乎是它应该向用户询问输入的次数。我认为错误出在我的 for 循环条件中,我一直试图弄清楚但无济于事。谁能指出来?

*好的,我已经想通了。在for循环条件下:* (count + 1) &lt;= MAXNUM

【问题讨论】:

  • 所有your questions 看起来都非常相似...
  • 我知道,我正在制定一个练习计划。

标签: c for-loop conditional-statements


【解决方案1】:

for() 循环经常迭代 1。所以而不是

for ( count = 0; (count + 1) < MAXNUM; count++ ) {

替换为

for ( count = 0; count < MAXNUM; count++ ) {

我注意到 OP 用自己的解决方案编辑了问题:

(count + 1) <= MAXNUM;

这几乎是等价的。如果 count + 1 溢出,选择编译器会有所不同。推荐惯用的count &lt; MAXNUM解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-03
    • 1970-01-01
    • 2019-08-29
    • 1970-01-01
    • 2013-04-17
    • 1970-01-01
    • 1970-01-01
    • 2023-01-02
    相关资源
    最近更新 更多