【问题标题】:How to get an input function for an array to terminate based upon a specific input and size?如何根据特定的输入和大小获取数组的输入函数以终止?
【发布时间】:2017-04-16 14:06:44
【问题描述】:

我有一个用于初始化包含 50 个元素的数组的输入函数。一旦输入值“-1”并输入 50 个条目,收集用户输入的循环就会终止。

为了正确测试程序,我有这两个测试用例:

  1. 输入的值少于 50 个,数据集以“-1”结尾。
  2. 输入了 50 个值,数据集不以“-1”结尾。

我能够让第一个测试用例工作,但对于第二个测试用例,它似乎进入了无限循环。我将如何修改我的输入函数以同样适用于第二个测试用例?

主要功能:

#include<stdio.h>
#include<stdlib.h>
//Global Declarations
#define SIZE 50

int getFuelRange();
int getStartMile();
void getMileMarkers(int markers[], int*);
void bubbleSort(int markers[], int);
int searchArray(int markers[], int, int);
int calcDifference(int markers[], int, int, int);
int findSize(int markers[]);
//void displayResults();

int main()
{
  //Local Declarations
  int fuelRange;
  int startMile;
  int markers[SIZE];
  int i = 0;
  int points;
  int size;

  //Executable Statements
  fuelRange = getFuelRange();
  startMile = getStartMile();
  getMileMarkers(&markers[i], &size);
  //Diagnostics
  //printf("\nFuel Range: %d Start Mile: %d\n", fuelRange, startMile);
  //printf("\nSize: %d \n", size);
  points = calcDifference(&markers[i], fuelRange, startMile, size);


  //Diagnostics
  //printf("\nFuel Range: %d Start Mile: %d\n", fuelRange, startMile);
  printf("Points: %d \n", points);

  return(0);
}

输入功能:

void getMileMarkers(int markers[], int *size)
{
  //LOCAL DECLARATIONS
  int i = -1; //counter
  //EXECUTABLE STATEMENTS
  printf("Enter mile marker positions: ");
  do
  {
    i++;
    scanf("%d", &markers[i]);
    //Diagnostic Print
    printf("\n%d", markers[i]);
  }while(markers[i] != -1 && i < SIZE);
  (*size) = i;
}

任何帮助表示赞赏!谢谢!

【问题讨论】:

    标签: c arrays input infinite-loop


    【解决方案1】:

    如果找到标记,只需有一个 do-loop 并退出就更容易和更具可读性:

    for ( i=0; i < SIZE; i++ ) {
       scanf("%d", &markers[i]);
       if ( markers[i] == -1 ) {
          break;
       }
    } 
    

    【讨论】:

    • 我唯一的问题是我不能使用 break 语句,所以我可以通过设置 i = SIZE 来替换它吗?
    猜你喜欢
    • 2016-04-27
    • 1970-01-01
    • 2014-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多