我有一个数组的输入函数,初始化为包含50个元素。一旦输入值“-1”并输入50个条目,正在从用户收集输入的循环终止。
为了正确测试程序,我有以下两个测试用例:
我能够让第一个测试用例工作,但对于第二个测试用例,它似乎进入了一个无限循环。如何修改输入函数以适用于第二个测试用例?
主要功能:
#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;
}
任何帮助表示赞赏!谢谢!
答案 0 :(得分:3)
如果找到标记,只需要一个do-loop并退出就更容易和更具可读性:
for ( i=0; i < SIZE; i++ ) {
scanf("%d", &markers[i]);
if ( markers[i] == -1 ) {
break;
}
}