我有一个用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
基本上我不知道该怎么做。
答案 0 :(得分:1)
首先,使array[Max_Number]
成为全局数组,因为它现在是ArrayInput
函数的局部数组,并且在函数返回时消失。通过使其成为全局变量,它将保留并可以被其他功能使用。现在,该函数的类型为void ArrayInput(void)
。
在main中调用ArrayInput
之后,您现在有了数组。现在,请用户输入更大或更小的值,然后遍历数组以列出满足用户要求的元素。您可以将其作为使用全局数组的新函数来实现。
答案 1 :(得分:0)
您应该执行以下步骤:
-1
fgets
处理“较小”或“较大” 以下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;
}