用C中的数字对填充数组

时间:2018-11-06 13:41:19

标签: c arrays numbers project

我有一个用C编写的小程序项目。我真的是这个主题的新手,所以我非常感谢每一个小的帮助。对象是:我需要用数字对填充数组,直到用户键入-1。然后,用户在控制台中发出命令(更大或更小)。如果用户键入的内容较小,则该程序必须列出每对,第一个数字小于第二个数字。

我可以写到这为止:

int quantityNumber;
if (string.IsNullOrWhiteSpace(QuantityBox.Text) 
    || !int.TryParse(QuantityBox.Text, out quantityNumber)) {
    throw new ArgumentException(
        $"Expected an integer in QuantityBox, but actual value was '{QuantityBox.Text}'.", 
        nameof(QuantityBox.Text)
    );
}
// if we reach this line, quanityNumber has a valid value assigned

基本上我不知道该怎么做。

2 个答案:

答案 0 :(得分:1)

首先,使array[Max_Number]成为全局数组,因为它现在是ArrayInput函数的局部数组,并且在函数返回时消失。通过使其成为全局变量,它将保留并可以被其他功能使用。现在,该函数的类型为void ArrayInput(void)

在main中调用ArrayInput之后,您现在有了数组。现在,请用户输入更大或更小的值,然后遍历数组以列出满足用户要求的元素。您可以将其作为使用全局数组的新函数来实现。

答案 1 :(得分:0)

您应该执行以下步骤:

  1. 处理输入直到-1
  2. 使用fgets处理“较小”或“较大”
  3. 输出

以下code可以工作:

#include <stdio.h>
#include <string.h>

#define Max_Number 20

struct numberPairs {
    int firstNum;
    int secondNum;
};

struct numberPairs input() { 
    struct numberPairs firstInput;
    printf("Please give me the first number! \n");
    scanf("%d", &firstInput.firstNum);
    if (firstInput.firstNum == -1)
        return firstInput;
    printf("Please give me the second number! \n");
    scanf("%d", &firstInput.secondNum);
    return firstInput;
}

void ArrayInput() {
    struct numberPairs array[Max_Number];
    int index = 0;
    do {
        array[index] = input();
        if (array[index].firstNum == -1)
            break;
    } while(++index < Max_Number);
    while (getchar() != '\n')
        ;
    printf("Please input Bigger or smaller\n");
    char buf[1024];
    fgets(buf, sizeof buf, stdin);
    if (strcmp(buf, "Bigger\n") == 0) {
        for (int i = 0; i != index; ++i)
            if (array[i].firstNum > array[i].secondNum)
                printf("%d %d\n", array[i].firstNum, array[i].secondNum);
    } else if (strcmp(buf, "smaller\n") == 0) {
        for (int i = 0; i != index; ++i)
            if (array[i].firstNum < array[i].secondNum)
                printf("%d %d\n", array[i].firstNum, array[i].secondNum);       
    } else {
        fputs("Input wrong.", stdout);
    }
}

int main (){
    ArrayInput();
    return 0;
}